前言
SpUtil 很多项目中都会用到,存取本地数据。但是今天就遇到了一个奇怪的问题,一直无法存取数据,试了各种方法,什么初始化的问题,存取方法的问题,各种方式:
检查导入的库
import 'package:flutter_sputil/flutter_sputil.dart';
import 'package:sp_util/sp_util.dart';初始化SpUtil
在使用SpUtil之前,确保你已经初始化了它。通常,在应用的启动阶段(例如在main.dart的runApp方法之前)进行初始化:
void main() async {
await SpUtil.getInstance();
runApp(MyApp());
}
- 确保你使用正确的方法来存储数据。以下是一个基本的存储和读取数据的示例:
await SpUtil.putString('key', 'value'); // 存储字符串
String value = SpUtil.getString('key'); // 读取字符串
- 由于SpUtil的操作通常是异步的,确保你在调用这些方法时使用了await或者正确地处理了异步操作。例如:
await SpUtil.putString('key', 'value'); // 使用await确保数据已经保存
甚至反复重启IDE和电脑。
然并卵,始终不行,还以为这个插件有问题了呢,但是别的项目都没有问题的。
网上找了一翻也没解决,
SpUtil 踩坑记:刚启动应用时无法存取数据
直到刚才看到这篇博客:
https://blog.csdn.net/haha223545/article/details/105482556/
就像博主说的:
感觉可能是因为SpUtil这个类需要异步初始化,导致前期未初始化前不可调用其 API,必须倒计时一段时间后再调用。
SpUtil的初始化在应用一启动就已经调用了:
await SpUtil.getInstance();
并且也加了await 但是并没有用,在应用启动几秒钟再调用就没有问题了,应该这个初始化还没有完成,导致的。
记录一下,避免大家踩坑。