【发布时间】:2021-12-30 06:14:06
【问题描述】:
我想做的是在 Flutter 和 Android 之间进行通信。为此,我使用 EventChannel 和 MethodChannel。由于编解码器的限制,我需要在将 Android 数据发送到 Flutter 之前将其包装在 HashMap 中。在 Flutter 方面,我试图将其解包以显示在简单的 ListView 中。但是,我无法弄清楚类型转换的问题
factory BLEService.fromMap(Map<String, dynamic> map) => BLEService(
map['uuid'] as String,
(map['characteristics'] as List<BLECharacteristic>)
.map<BLECharacteristic>((e) =>
BLECharacteristic.fromMap(e as Map<String, BLECharacteristic>)
).toList()
);
对于这一行,抛出以下异常:type 'List<Object?>' is not a subtype of type 'List<BLECharacteristic>' in type cast
非常感谢帮助解决这个问题
编辑
Flutter BLECharacteristic.fromMap
factory BLECharacteristic.fromMap(Map<String, dynamic> map) => BLECharacteristic(
map['uuid'] as String,
);
Java BLECharacteristic.toMap
HashMap<String, Object> toMap() {
HashMap<String, Object> bleCharacteristicMap = new HashMap<>();
bleCharacteristicMap.put("uuid", uuid);
return bleCharacteristicMap;
}
【问题讨论】:
-
你能说明 map['characteristics'] 返回什么吗?
-
{"特征":[{"uuid":"00002a00-0000-1000-8000-00805f9b34fb"},{"uuid":"00002a01-0000-1000-8000-00805f9b34fb"}, {"uuid":"00002a02-0000-1000-8000-00805f9b34fb"},{"uuid":"00002a04-0000-1000-8000-00805f9b34fb"}],"uuid":"00001800-0000-1000-8000- 00805f9b34fb"}