由于某些原因未保存SharedPreferences

时间:2019-12-24 06:14:45

标签: flutter

对不起,所有注释掉的代码。我移动了一些方法,但是如果您在模拟器上运行它,则重新启动后它不会保存,而且我不太确定如何修复它。我将向我发送项目克隆链接:https://github.com/leozhang1/TODOEY.git,而不是在此处复制和粘贴大量代码。如果您有需要,我用此视频为我提供了帮助:https://www.youtube.com/watch?v=oPrpk_JiGvc 谢谢你!

2 个答案:

答案 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数据的原因。