对不起,所有注释掉的代码。我移动了一些方法,但是如果您在模拟器上运行它,则重新启动后它不会保存,而且我不太确定如何修复它。我将向我发送项目克隆链接:https://github.com/leozhang1/TODOEY.git,而不是在此处复制和粘贴大量代码。如果您有需要,我用此视频为我提供了帮助:https://www.youtube.com/watch?v=oPrpk_JiGvc 谢谢你!
答案 0 :(得分:0)
假设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());
}
答案 1 :(得分:0)
我已经检查了您的代码,以便每当运行该应用时,您的td = TaskData(saveData) - in readData()
和&TaskData(saveData) - This is added on your Build method
都会初始化。
两个对象都被初始化为不同的实例,这就是为什么您将null值保存到saveData()中以及每次从SharedPreference获取null数据的原因。