android - 使用键值对创建新地图,而不是保存
问题描述
我解码 json 并将其转换为 map [string, List < LatLng>] 类型的变量,并尝试将其重新调整为该函数的代码,但是我无法将其保存为变量 _polyFinal 中的映射:
static getPoligoni() async {
http.Response _response = await http.get('$api/posizione/poligoni',
headers: {'Authorization': '${dataController.tokenBearer.value}'});
if (_response.statusCode == 200) {
Map<String, dynamic> _json = jsonDecode(_response.body);
var _poly = Map.from(_json["Poligoni"]).map(
(k, v) {
return MapEntry<String, List<String>>(
k,
List<String>.from(
v.map((x) => x),
),
);
},
);
List<String> _verticiRaw;
List<LatLng> _vertici = [];
Map<String, List<LatLng>> _polyFinal = {};
for (String key in _poly.keys) {
// print(_verticiRaw);
_verticiRaw?.clear();
_verticiRaw = _poly[key];
for (int i = 0; i < _verticiRaw.length; i++) {
print(i);
var _posVirgola = _verticiRaw[i].indexOf(',');
String posx, posy;
posx = _verticiRaw[i].substring(0, _posVirgola);
posy = _verticiRaw[i].substring(_posVirgola + 1);
var lat = double.tryParse(posx);
var lon = double.tryParse(posy);
_vertici.add(LatLng(lat, lon));
}
print(key);
print(_vertici);
_polyFinal.putIfAbsent(key, () => _vertici);
_vertici?.clear();
}
dataController.showLoadingStatus(false);
// print(_polyFinal);
// return _polyFinal;
如果我尝试在循环结束时打印 polyFinal 变量,我会得到一个空映射,如果我在循环期间打印变量,每个键值对都会在下面进行转换
键 --> 最后一个顶点值
我试图检查 key 和 vertici 的值,每次循环运行时它们都是不同的。
非常感谢您对理解此行为的任何帮助,致以最诚挚的问候。
解决方案
通过放置解决
_polyFinal.putIfAbsent(key, () => _vertici.toList());
也许 _vertici 只是一个指针而不是值本身。
推荐阅读
- javascript - 在 ReactJS 中单击 DataTable 行上的打开弹出窗口
- amazon-web-services - 监控 AWS 中的数据库趋势
- c++ - 为什么我的字符串变量没有打印完整的字符串?
- php - PHP比较多维数组
- reactjs - 如何将 API 请求的结果放入 react native 的数组值中?
- jquery - 为什么我的数据值不等于我的字符串?
- vue.js - nuxt js 上的外部 javascript 片段
- google-analytics - 如何从 Microsoft CRM 连接到谷歌分析
- java - CriteriaBuilder Instant 到 postgres TIMESTAMP 转换
- react-native - 反应本机应用程序中的用户身份验证