我运行的是 Flutter 1.0.0(第一个版本),最近升级到 1.2.1,有很多错误和警告需要纠正。主要指定注释类型。纠正所有这些问题后,我运行了 Android 应用程序,现在将 JSON 映射到列表的代码无法正常工作。首先,我将发布有效的原始代码。JSON 数据来自 HTTP 请求。
api.dart
Future<List<Device>> getDevices() async {
var response = await _httpNetwork.get(_devicesUrl, headers: {"Cookie": _sessionId});
if (response.statusCode < 200 || response.statusCode > 400) {
throw Exception("Error while fetching data");
}
final body = json.decode(response.body);
return body.map<Device>((device) => Device.fromJson(device)).toList();
}
Run Code Online (Sandbox Code Playgroud)
设备.dart
class Device {
Device({
this.id,
this.name,
this.uniqueId,
this.status,
this.phone,
this.model,
this.disabled,
});
factory Device.fromJson(Map<String, dynamic> json) => Device(
id: json['id'],
name: json['name'],
uniqueId: json['uniqueId'],
status: json['status'] == 'online' ? true : false,
phone: json['phone'],
model: json['model'],
disabled: json['disabled'],
);
// API data
int id;
String name;
String uniqueId;
bool status;
String phone;
String model;
bool disabled;
Map<String, dynamic> toJson() => <String, dynamic>{
'id': id,
'name': name,
'uniqueId': uniqueId,
'status': status == true ? 'online' : 'offline',
'phone': phone,
'model': model,
'disabled': disabled,
};
}
Run Code Online (Sandbox Code Playgroud)
现在,这就是 中的以下更改出现问题的地方api.dart
。
return json.decode(response.body).map<Device>((Map<String, dynamic> device) => Device.fromJson(device)).toList();
Run Code Online (Sandbox Code Playgroud)
虽然根据 Android Studio/Flutter/Dart 这个语法是正确的,但它似乎不起作用。该应用程序不会崩溃,也不会在运行控制台中出现错误,它只是onError
在调用中命中我的代码Observable<bool>.fromFuture()
。
我print
在代码中添加了调用来确定 return 语句api.dart
是罪魁祸首。有人对这个问题有任何见解吗?
这是解决此问题的更改。
return json.decode(response.body).map<Device>((dynamic device) => Device.fromJson(device)).toList();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2459 次 |
最近记录: |