我面临着共享偏爱的怪异问题,我正在尝试将DateTime.Now()对象设置为共享首选项,例如这样
void setStartTimeDataToPrefs() async {
prefs = await SharedPreferences.getInstance();
prefs.setString(_prefsStartTime, DateTime.now().toString());
print('Getting soon after setting in same function ${prefs.getString(_prefsStartTime)}');
//Here im getting the value correct as 2020-06-17 11:32:17.548524
}
为了测试从相同功能设置后立即读取按键的时间,我将预期结果日期转换为字符串
2020-06-17 13:32:17.548524
问题是当我尝试从这样的另一个函数中读取密钥时,
void getStartTimeDataFromPrefs() async {
prefs = await SharedPreferences.getInstance();
print('${prefs.getString(_prefsStartTime)}');
}
它给我这个结果
[1:32:17 PM
关于偏好数据如何变化的任何想法?如何格式化日期,就像执行DateFormat.jms()
一样也试图理解为什么相同的代码在不同的功能中以两种不同的方式表现。当我在第一个函数中读取它时,它具有正确的值?
尝试一下
//Insert
prefs.setInt('yourKey', DateTime.now().millisecondsSinceEpoch);
//Get
DateTime dt = DateTime.fromMillisecondsSinceEpoch((prefs.getInt('yourKey')??DateTime.now().millisecondsSinceEpoch);