Reputation: 1
This is my Control Model :
import 'package:flutter_data/flutter_data.dart';
import 'vehicle.dart';
import 'agent.dart';
import 'equipementcontrol.dart';
class Control {
@override
final int id;
final String date;
final int nbKm;
final int fuelLevel;
final String comments;
final Vehicle vehicle;
final Agent agent;
final List<EquipementControl> equipementcontrols;
// Constructor, with syntactic sugar for assignment to members.
Control({
required this.id,
required this.date,
required this.nbKm,
required this.fuelLevel,
required this.comments,
required this.vehicle,
required this.agent,
required this.equipementcontrols,
})
{
// Initialization code goes here.
}
// Construct an object from a mapped JSON array
factory Control.fromJson(Map<String,dynamic> mappedJson){
return Control(
id: mappedJson['id'],
date: mappedJson['date'],
nbKm: mappedJson['nbKm'],
fuelLevel: mappedJson['fuelLevel'],
comments: mappedJson['nbKm'],
vehicle: Vehicle.fromJson(mappedJson['vehicle']),
agent: Agent.fromJson(mappedJson['agent']),
equipementcontrols: List<dynamic>.from(mappedJson['equipementcontrols']).map((i) => EquipementControl.fromJson(i)).toList(),
);
}
}
And this is my error :
Error: NoSuchMethodError: 'map' C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 266:49 throw C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 768:3 defaultNoSuchMethod C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart 61:17 noSuchMethod C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 763:31 noSuchMethod C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 283:12 callNSM C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 342:14 _checkAndCall C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 431:10 callMethod C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 438:5 dgsend packages/campus/model/control_rao.dart 35:38 latestControlFromOneVehicle C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 45:50 C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/zone.dart 1660:54 runUnary C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 147:18 handleValue C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 767:44 handleValueCallback C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 796:13 _propagateToListeners C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 567:5 [_completeWithValue] C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 640:7 callback C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/schedule_microtask.dart 40:11 _microtaskLoop C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/schedule_microtask.dart 49:5 _startMicrotaskLoop C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 166:15
Finally this is the json (i want to get equipementcontrols list to use into the view):
{
"id": 6,
"date": "1976-11-18",
"nbKm": 9651,
"fuelLevel": 1,
"comments": "Similique et velit earum praesentium culpa inventore nostrum. Distinctio quas aliquam nihil qui quis.",
"vehicle": {
"id": 1,
"immatriculationPlate": "HO-152-MG",
"status": {
"id": 1,
"label": "à préparer"
},
"model_car": {
"id": 2,
"name": "308",
"nbSeats": 5,
"brand": "Peugeot",
"logo": "LOGO_MISSING"
},
"bookings": []
},
"agent": {
"id": 2,
"businessName": "momo",
"user": {
"id": 4,
"name": "agent2",
"email": "[email protected]",
"active": 1,
"lastLoginDate": "2004-05-30"
}
},
"equipementcontrols": [
{
"id": 61,
"RS": 0,
"RP": 1,
"EC": 1,
"equipement": {
"id": 1,
"label": "Aile AV G"
}
},
{
"id": 62,
"RS": 0,
"RP": 0,
"EC": 0,
"equipement": {
"id": 2,
"label": "Aile AR G"
}
},
{
"id": 63,
"RS": 1,
"RP": 1,
"EC": 0,
"equipement": {
"id": 3,
"label": "Calandre"
}
},
{
"id": 64,
"RS": 1,
"RP": 1,
"EC": 0,
"equipement": {
"id": 4,
"label": "Phare AV D"
}
},
{
"id": 65,
"RS": 0,
"RP": 1,
"EC": 1,
"equipement": {
"id": 5,
"label": "Siège pass"
}
},
{
"id": 66,
"RS": 0,
"RP": 1,
"EC": 1,
"equipement": {
"id": 6,
"label": "Porte AV G"
}
},
{
"id": 67,
"RS": 1,
"RP": 1,
"EC": 1,
"equipement": {
"id": 7,
"label": "Aile AV D"
}
},
{
"id": 68,
"RS": 0,
"RP": 1,
"EC": 0,
"equipement": {
"id": 8,
"label": "Aile AR D"
}
},
{
"id": 69,
"RS": 0,
"RP": 0,
"EC": 1,
"equipement": {
"id": 9,
"label": "Phare AV G"
}
},
{
"id": 70,
"RS": 1,
"RP": 0,
"EC": 0,
"equipement": {
"id": 10,
"label": "Siège cond"
}
},
{
"id": 71,
"RS": 0,
"RP": 0,
"EC": 0,
"equipement": {
"id": 11,
"label": "Tableau de b"
}
},
{
"id": 72,
"RS": 0,
"RP": 0,
"EC": 1,
"equipement": {
"id": 12,
"label": "Porte AV D"
}
}
]
}
This is EquipementControl file :
import 'package:flutter_data/flutter_data.dart';
import 'equipement.dart';
class EquipementControl {
@override
final int id;
final int RS;
final int RP;
final int EC;
final Equipement equipement;
// Constructor, with syntactic sugar for assignment to members.
EquipementControl({
required this.id,
required this.RS,
required this.RP,
required this.EC,
required this.equipement,
})
{
// Initialization code goes here.
}
// Construct an object from a mapped JSON array
factory EquipementControl.fromJson(Map<String,dynamic> mappedJson){
return EquipementControl(id: mappedJson['id'] as int,
RS: mappedJson['RS'],
RP: mappedJson['RP'],
EC: mappedJson['EC'],
equipement: Equipement.fromJson(mappedJson['equipement']),
);
}
}
And Equipement file :
import 'package:flutter_data/flutter_data.dart';
class Equipement {
@override
final int id;
final String label;
// Constructor, with syntactic sugar for assignment to members.
Equipement({
required this.id,
required this.label,})
{
// Initialization code goes here.
}
// Construct an object from a mapped JSON array
factory Equipement.fromJson(Map<String,dynamic> mappedJson){
return Equipement(id: mappedJson['id'] as int,
label: mappedJson['label'],
);
}
}
I already tried removing the on List, I also tried putting a .castFrom method instead of .from. However nothing works, if you have an idea I am a taker.
Thanks in advance ;)
Upvotes: 0
Views: 52
Reputation: 3552
You have to map inside the from method, not outside.
List<EquipementControl>.from(mappedJson['equipementcontrols'].map<EquipementControl>((x) => EquipementControl.fromJson(x as Map<String,dynamic>),),),
Upvotes: 0