Issue
What I'm trying to do is to communicate between Flutter and Android. For this I'm using EventChannel and MethodChannel. Due to codec restrictions I need to wrap my Android data in HashMap before sending it to Flutter. On the Flutter side I'm trying to unwrap it for display in the simple ListView. However, I have problem with typecasting that I can't figure out
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()
);
For this line the following exception is thrown:
type 'List<Object?>' is not a subtype of type 'List<BLECharacteristic>' in type cast
Help to solve this issue would be greatly appreciated
Edit
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;
}
Solution
In the end I figured out a bit hacky method to solve it:
var finalList = Map<String, dynamic>.from(jsonDecode(jsonEncode(data)))['SERVICESLIST'].map<BLEService>((e) => BLEService.fromMap(e)).toList();
However, to make simple I just changed the Android implementation to wrap the data using JSON with gson plugin
Answered By - Julian Modlinski
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.