当前位置: 首页 > 知识库问答 >
问题:

未处理的异常:类型“ImmutableMap”不是类型转换中“List”类型的子类型

卫乐童
2023-03-14

我一直在我的颤振应用程序中使用sembast,我在我的类设备中包含我的类温度列表时遇到了问题。我已经包括以下两个类。

我得到未处理的异常:键入“ImmutableMap”

这种方法似乎被用于其他问题的解决方案,这些问题似乎与我的问题几乎相同,所以我不确定这里有什么问题,以及我尝试过的其他解决方案。

class Equipment {
  final int id;
  final String name;
  final String location;
  final String zone;
  final int checkInterval;
  final String nextUpdate;
  final List<Temperature> temps;



  Equipment({this.id, this.name, this.location, this.zone, this.checkInterval, this.nextUpdate, this.temps});

  Map<String, dynamic> toMap() {
    final Map<String, dynamic> data = Map<String, dynamic>();
    if (this.temps != null) {
      data['temps'] = this.temps.map((v) => v.toMap()).toList();
    }
    return {
      'name': this.name,
      'location': this.location,
      'zone': this.zone,
      'checkNumber':this.checkInterval,
      'nextUpdate':this.nextUpdate,
      'temps':data
    };
  }


  factory Equipment.fromMap(int id, Map<String, dynamic> map) {

    return Equipment(
      id: id,
      name: map['name'],
      location: map['location'],
      zone: map['zone'],
      checkInterval: map['checkNumber'],
      nextUpdate: map['nextUpdate'],
      temps: map['temps'] != null
          ? (map['temps'] as List).map((i) => Temperature.fromMap(i)).toList()
          : null,
    );
  }
}
class Temperature {
  final String time;
  final int temp;



  Temperature({this.time, this.temp});

  Map<String, dynamic> toMap() {
    return {
      'time': time,
      'temp': temp,
    };
  }



  factory Temperature.fromMap(Map<String, dynamic> map) {
    return Temperature(
      time: map['time'],
      temp: map['temp'],

    );
  }
}
A typical input to equipment-

final name = nameController.text;
                  final location = locationController.text;
                  final zone = zoneController.text;
                  final checkInterval = int.parse(intervalController.text);
                  final nextUpdate = DateTime.now().add(new Duration(hours: checkInterval)).toString();
                  final Temperature temp = Temperature(time: DateTime.now().add(new Duration(hours: checkInterval)).toString(),temp: 0);
                  final  List<Temperature> temps = [temp,temp];
                  final newEquipment = Equipment(name: name, location: location, zone: zone, checkInterval: checkInterval, nextUpdate: nextUpdate, temps: temps);

共有1个答案

景嘉志
2023-03-14

发现问题-

?(将['temps']映射为列表)。地图(一)=

map['temps']不是列表而是地图,应该是map['temps']['temps']

 类似资料:
  • 以下是回应 模型 和 我收到此错误(未处理的异常:键入“\u InternalLinkedHashMap

  • 我正在开发我的flutter应用程序的身份验证。请帮我解决这个问题。我无法识别返回这样一个错误的问题,声明未处理异常:类型列表不是类型字符串的子类型。 以下是登录屏幕的代码: 执行登录的上述代码部分: 错误

  • 更新:感谢@Rjulcaa回答我的地图现在是一个列表,但是列表没有显示在用户界面上。我转过来,我需要用FutureBuilder来处理未来,所以如果有人面临这个问题,记得在你的用户界面主体中添加一个FutureBuilder,并在构建器上返回你想要显示的小部件。 我正在制作一个todo列表教程,我正在尝试添加JSON上的编码功能,我的todoList将其保存在SharedReferences上,当

  • 我对使用颤振和特定于平台的代码非常陌生,所以如果这是一个愚蠢的问题,请原谅我。我正在使用一个事件通道将数据从android端返回到Flatter。我正在返回一份清单 但是,当我试图添加它时,它给出了一个异常,“未处理的异常:类型'列表'不是类型'列表'的子类型 这是我要将贴图对象添加到的列表。 列表 这是我的添加代码。忽略print语句。 我尝试过像cast或from这样的方法,但它对我不起作用,

  • 我正在解码一个响应体,我得到了错误: 我在Udemy上学习颤振教程时,正在尝试使用API。教程说要使用https://javiercbk.github.io/json_to_dart/将JSON转换为Dart。我把JSON从https://www.openbrewerydb.org/并将其转换为Dart,但我遇到的问题是,当我尝试解码API时,我得到了未处理的错误异常:“List”类型不是“Map