Flutter / Dart-导航回带有文本字段的表单时如何保存状态?

问题描述

当前,当用户填写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;
              });
            },);
  }
}

我在做什么错了?

解决方法

您有两种方法:

  1. 存储文本字段的数据,并在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);

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...