【问题标题】:Saving data in Flutter PageView在 Flutter PageView 中保存数据
【发布时间】:2019-04-04 10:47:02
【问题描述】:

情况(Flutter 应用): 我有四页的 PageView。每个页面上都有 TextField、DropDownMenu 等控件。最后一页是“完成”按钮。当按下按钮时,应用程序使用页面中的设置并执行某些操作。

问题: 在什么情况下,我应该将数据保存到共享首选项中以便以后使用?页面是否存在 onClose 之类的事件?

非常感谢您的每一个建议 (为我的英语道歉)

【问题讨论】:

  • 您是否想将数据保存到SharedPreferences 似乎真的取决于您。如果您有一个按钮Finish,那么您可以在调用onTap 时保存您的数据。

标签: flutter


【解决方案1】:

使用此shared preferences library 保存共享首选项。

  1. 将控制器分配给输入字段以及下拉菜单:

    TextEditingController nameController = new TextEditingController();

  2. 将控制器分配给字段:

     TextField(
          controller: nameController,
          decoration: new InputDecoration(
           hintText: "Name"
          )
     );
    
  3. 为“完成”按钮创建一个onPressedonTap 方法并获取并保存共享首选项:

      _saveData() async {
         SharedPreferences savePref = await SharedPreferences.getInstance();
         String name = nameController.text;
         name.isEmpty ? _validateName = true : _validateName = false;
         savePref.setString("name", name);
      }
    

您可以将已保存的共享偏好设置为:

String name = savePref.getString("name");

【讨论】:

  • 感谢您的帮助。也许我会傻傻地问,但是flutter将所有从PageView创建的页面都保存在内存中?当我到达最后一页时,会不会发生第一页会被破坏的情况?我不能丢失某些页面上的设置,例如当我暂停应用程序时?
  • 是要销毁首页的数据还是要防止其被销毁?
  • 这没什么。当我切换页面时,我看到前一页调用了 dispose 方法。我还能访问这个对象(页面)的变量吗?不是已经销毁了吗?
  • 如果我可以: 1.) 在 initState(页面小部件)方法中,从 SharedPreferences 读取值并将它们设置为 TextEditingController 2.) 在 dispose 方法中,从 TextEditingController 中读取并保存共享首选项?
  • 两者都可以,只要确保在initState方法中只读取需要的值
猜你喜欢
  • 2021-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多