【问题标题】:SharedPreferences not saving for some reasonSharedPreferences 由于某种原因没有保存
【发布时间】:2019-12-24 06:14:45
【问题描述】:

抱歉所有注释掉的代码。我移动了一些方法,但如果你在模拟器上运行它,重新启动后它不会保存,我不太确定如何修复它。我不会在这里复制和粘贴一堆代码,而是发送我的项目克隆链接:https://github.com/leozhang1/TODOEY.git。如果您需要,我使用此视频来帮助我:https://www.youtube.com/watch?v=oPrpk_JiGvc 非常感谢!

【问题讨论】:

    标签: flutter


    【解决方案1】:

    假设saveData()工作正常,您可以将readData()移出到main()
    当应用重启时,你可以得到保存的数据

    TaskData td;
    
    Future<void> main() async {
      WidgetsFlutterBinding.ensureInitialized();
    
      SharedPreferences prefs = await SharedPreferences.getInstance();    
    
      List<String> spList = await prefs.getStringList('list') ?? [];
      print('read spList: $spList');
      td.taskList = spList.map((task) => Task.fromMap(jsonDecode(task))).toList();
    
      runApp(MyApp());
    }
    

    【讨论】:

      【解决方案2】:

      我检查了你的代码,无论何时运行应用程序,你的td = TaskData(saveData) - in readData() && TaskData(saveData) - This is added on your Build method 初始化。

      两个对象都被初始化为不同的实例,这就是为什么你会在你的 saveData() 中获取空值,并且每次你都会从 SharedPreference 中获取空数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-28
        • 2021-04-13
        • 2021-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-27
        • 1970-01-01
        相关资源
        最近更新 更多