【发布时间】:2019-12-24 06:14:45
【问题描述】:
抱歉所有注释掉的代码。我移动了一些方法,但如果你在模拟器上运行它,重新启动后它不会保存,我不太确定如何修复它。我不会在这里复制和粘贴一堆代码,而是发送我的项目克隆链接:https://github.com/leozhang1/TODOEY.git。如果您需要,我使用此视频来帮助我:https://www.youtube.com/watch?v=oPrpk_JiGvc 非常感谢!
【问题讨论】:
标签: flutter
抱歉所有注释掉的代码。我移动了一些方法,但如果你在模拟器上运行它,重新启动后它不会保存,我不太确定如何修复它。我不会在这里复制和粘贴一堆代码,而是发送我的项目克隆链接:https://github.com/leozhang1/TODOEY.git。如果您需要,我使用此视频来帮助我:https://www.youtube.com/watch?v=oPrpk_JiGvc 非常感谢!
【问题讨论】:
标签: flutter
假设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());
}
【讨论】:
我检查了你的代码,无论何时运行应用程序,你的td = TaskData(saveData) - in readData() && TaskData(saveData) - This is added on your Build method 初始化。
两个对象都被初始化为不同的实例,这就是为什么你会在你的 saveData() 中获取空值,并且每次你都会从 SharedPreference 中获取空数据。
【讨论】: