问题描述
当前,当用户填写TextField时,如果他们导航然后返回,则文本会丢失。返回后,如何使文本留在原地?
这是我正在使用的有状态小部件;
class _EditPageState extends State<EditPage> {
final _formKey = GlobalKey<FormState>();
String audiotitle;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Form(
key: _formKey,child: Container(
child: TextField(
decoration: new InputDecoration(
hintText: widget.oldaudiotitle,),keyboardType: TextInputType.text,onChanged: (titleText) {
setState(() {
this.audiotitle = titleText;
});
},);
}
}
我在做什么错了?
解决方法
您有两种方法:
- 存储文本字段的数据,并在init方法中设置数据 (根据您的要求使用sharedpreferences或任何其他数据库)
TextEditingController controller = TextEditingController(); @override void initState() { // TODO: implement initState // retrive the Data if(data != null) { controller = new TextEditingController(text: data); } }
或者如果第一个屏幕正在第二个屏幕中导航,而不仅仅是弹出该屏幕
Navigator.pop(context);