打印编码地图<字符串,动态>不起作用颤振



我使用的是地理定位器包,我试图使用共享引用在本地保存我的位置对象,我保存数据并再次获取数据没有问题,我唯一的问题是我无法正确编码我的位置物体,这是我的代码:

static Future setPosition(Position position) async {
final unParsedPosition = jsonEncode(position);
return await _preferences.setString(
kPositionKey,
unParsedPosition,
);
}
static Position? getPosition() {
late final Position? parsedPosition;
final unParsedPosition = _preferences.getString(
kPositionKey,
);
if (unParsedPosition != null) {
final positionJSON = jsonDecode(   <------ error here
unParsedPosition,
);
parsedPosition = Position.fromMap(
positionJSON,
);
}
return parsedPosition;
}

这就是地理定位器包提供的toJson((乐趣

Map<String, dynamic> toJson() => {
'longitude': longitude,
'latitude': latitude,
'timestamp': timestamp?.millisecondsSinceEpoch,
'accuracy': accuracy,
'altitude': altitude,
'floor': floor,
'heading': heading,
'speed': speed,
'speed_accuracy': speedAccuracy,
'is_mocked': isMocked,
};

我的错误发生在解码时,我在上面的getPosition fun 中引用了它

Unexpected character (at character 2)
{longitude: 31.3327177, latitude: 30.1449082, timestamp: 1659333183536, acc...
^

当我尝试打印时

String s = jsonEncode(position);
print(s);

这不起作用(我的字符串没有打印,什么都没有发生(,我需要知道为什么提前感谢

我认为toJson需要返回一个字符串。你可以这样做:

String toJson() => json.encode(toMap());
Map<String, dynamic> toMap() => {
'longitude': longitude,
'latitude': latitude,
'timestamp': timestamp?.millisecondsSinceEpoch,
'accuracy': accuracy,
'altitude': altitude,
'floor': floor,
'heading': heading,
'speed': speed,
'speed_accuracy': speedAccuracy,
'is_mocked': isMocked,
};

我的代码正在工作,但问题是存储的数据不正确,因此尝试在不更新的情况下获取数据会出现错误。

我把它存储错了,但从来没有更新过,我一直在获取它,没有再次调用setPosition,就是

最新更新