type 'List<Object?>' is not a subtype of type 'List<>' in type cast
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
Julian Modlinski
Updated on January 02, 2023Comments
-
Julian Modlinski over 1 year
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.fromMapfactory 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; }
-
Julian Modlinski over 2 yearsThanks for fast response :) I have added requested function in the original post for better visibility. In the meantime I will test your suggestion. This solution is not going to work as the there will be same typing problems with underlying HashMap
-
bharats over 2 yearsI tried running this on DartPad and it works. Heres the link