如何解决设置从共享首选项获取的初始值到控制器
我想为表单字段设置一个初始值。我在this answer中读到,可以这样做
TextEditingController _controller = TextEditingController(text: 'initial value');
但是我想从共享的首选项中获取初始值,这是异步的。
我该怎么做?
我尝试将控制器值设置为初始状态,但这不起作用
解决方法
您有两种方法:
1)在导航-或构建窗口小部件-之前,从偏好设置中获取文本。这样就可以获得最终变量。
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'),),],);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。