将从 Shared Preferences 获得的初始值设置为控制器 [关闭]
Posted
技术标签:
【中文标题】将从 Shared Preferences 获得的初始值设置为控制器 [关闭]【英文标题】:Setting initial value gotten from Shared Preferences to controller [closed] 【发布时间】:2021-02-13 08:29:22 【问题描述】:我想为表单域设置一个初始值。我在this answer 中读到它可以这样做
TextEditingController _controller = TextEditingController(text: 'initial value');
但我想从共享首选项中获取初始值,即异步。
我该怎么做?
我尝试将控制器值设置为初始状态,但这不起作用
【问题讨论】:
【参考方案1】:你有两种方法:
1 ) 在导航或构造小部件之前从首选项获取文本。这样就可以得到final变量了。
2 ) 在 initState 之后加载文本
class Foo extends StatefulWidget
@override
_FooState createState()
return _FooState();
class _FooState extends State<Foo>
TextEditingController _controller;
//For check text loaded. bool textLoaded;
bool textLoaded;
String text;
@override
void initState()
textLoaded = false;
super.initState();
Future<void> setText() async
setState(()
text = "GET TEXT FROM PREF";
_controller = TextEditingController(text: text);
textLoaded = true;
);
@override
Widget build(BuildContext context)
return Column(
children: <Widget>[
textLoaded
? TextField(
controller: _controller,
)
: const CircularProgressIndicator(),
RaisedButton(
onPressed: ()
_controller.clear();
,
child: const Text('CLEAR'),
),
],
);
【讨论】:
以上是关于将从 Shared Preferences 获得的初始值设置为控制器 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
flutter中使用shared_preferences的存储
Flutter Web 的 Shared_Preferences?
flutter 本地存储数据(shared_preferences)
Flutter:删除所有已保存的shared_preferences首选项