Я новичок во флаттере, и у меня возникают проблемы с моим приложением, когда я хочу получить значения из JSON.
Проблема возникает из-за моего http-запроса, когда я звоню GetCommands()
и я не знаю, чтобы решить это. Я уже делал это однажды в другом приложении с другими данными (JSON тоже), и это сработало ...
Вот основной код:
var commandsGet = new List<Value>();
Future<void> GetCommands() async {
await GET.url(urlTest).then((response) {
setState(() {
Iterable list2 = json.decode(response.body);
commandsGet = list2.map((model) => Value.fromJson(model)).toList();
});
});
}
Future<void> wait2() async {
await GetCommands();
}
onChange2(commandsData user) {
setState(() {
commandselection = user;
// TEST
wait2().then((result) {
print("This is a test");
});
// TEST
});
}
Вот мой класс Value:
class Value {
String device;
int origin;
List<Readings> readings;
Value({
this.device,
this.origin,
this.readings,
});
Value.fromJson(Map<String, dynamic> json) {
device = json['device'];
origin = json['origin'];
if (json['readings'] != null) {
readings = new List<Readings>();
json['readings'].forEach((v) {
readings.add(new Readings.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data2 = new Map<String, dynamic>();
data2['device'] = this.device;
data2['origin'] = this.origin;
if (this.readings != null) {
data2['readings'] = this.readings.map((v) => v.toJson()).toList();
}
return data2;
}
}
А вот ошибки консоли Debug:
[VERBOSE-2:ui_dart_state.cc(157)] Unhandled Exception: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'Iterable<dynamic>'
#0 _MyListScreenState.GetCommands.<anonymous closure>.<anonymous closure>
package:chat/main.dart:92
#1 State.setState
package:flutter/…/widgets/framework.dart:1164
#2 _MyListScreenState.GetCommands.<anonymous closure>
#3 _rootRunUnary (dart:async/zone.dart:1134:38)
#4 _CustomZone.runUnary (dart:async/zone.dart:1031:19)
#5 _FutureListener.handleValue (dart:async/future_impl.dart:140:18)
#6 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:682:45)
#7 Future._propagateToListeners (dart:async/future_impl.dart:711:32)
#8 Future._completeWithValue (dart:async/future_impl.dart:526:5)
#9 _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:34:15)
#10 _completeOnAsyncReturn (dart:async-patch/async_patch.dart:293:13)
#11 _withCl<…>
Вот данные JSON:
{
"device": "Random-Integer-Generator01",
"origin": 1581956092184,
"readings": [
{
"origin": 1581956092183,
"device": "Random-Integer-Generator01",
"name": "RandomValue_Int8",
"value": "23"
}
]
}
Большое спасибо за вашу помощь ,