【问题标题】:Creating a new map using key value pairs, not saving使用键值对创建新地图,而不是保存
【发布时间】:2021-01-22 15:26:52
【问题描述】:

我正在解码一个 json 并将其转换为 map [string, List ] 类型的变量并尝试将其重新调整为该函数的代码,但是我无法将其保存为变量 _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 --> 最后一个顶点值

我尝试检查 key 和 vertici 的值,每次循环运行时它们都不同。

非常感谢您对理解此行为的任何帮助, 最好的问候。

【问题讨论】:

    标签: android android-studio flutter dart


    【解决方案1】:

    通过放置解决

     _polyFinal.putIfAbsent(key, () => _vertici.toList());
    

    也许 _vertici 只是一个指针,而不是值本身。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2012-06-16
      • 1970-01-01
      • 2013-05-20
      • 1970-01-01
      相关资源
      最近更新 更多