【发布时间】:2022-01-05 16:48:25
【问题描述】:
我最近将一个功能齐全的应用程序转移到 dart null safety 并引发了一些错误
此 API 调用已调整,但现在我收到错误 flutter: Exception Happened: type 'String' is not a subtype of type 'Mode'
我通过获取用户位置的函数调用 API。
重申一下,这在升级 dart 之前运行良好,所以我相信这是适应 null 安全性的问题。
API 调用(抛出异常的地方)
Future<Stations?> fetchStations() async {
var client = http.Client();
Stations? stations;
Position position = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
var lat = position.latitude;
var long = position.longitude;
try{
var response = await client.get(Uri.parse('https_call'));
if (response.statusCode == 200) {
var jsonString = response.body;
var jsonMap = json.decode(jsonString);
stations = Stations.fromJson(jsonMap);
//print(stations);
}
} catch(e) {
print("Exception Happened: ${e.toString()}");
}
return stations;
}
调用API的函数
Future<void> showAnchoredMapMarkers() async {
var stations = await fetchStations();
for (Station stations in stations!.stations) {
GeoCoordinates geoCoordinates = GeoCoordinates (stations.place.location.lat, stations.place.location.lng);
var id = stations.place.id;
_addCircleMapMarker(geoCoordinates, 0);
_addPOIMapMarker(geoCoordinates, 1);
}
}
更新
class Station {
Station({
this.place,
required this.transports,
});
Place place;
List<Transport> transports;
factory Station.fromJson(Map<String, dynamic> json) => Station(
place: json["place"] == null ? null : Place.fromJson(json["place"]),
transports: json["transports"] == null ? null : List<Transport>.from(json["transports"].map((x) => Transport.fromJson(x))),
);
Map<String, dynamic> toJson() => {
"place": place == null ? null : place.toJson(),
"transports": transports == null ? null : List<dynamic>.from(transports.map((x) => x.toJson())),
};
}
这样的行
place: json["place"] == null ? null : Place.fromJson(json["place"]),
全部用红色下划线标有错误,如
The argument type 'Place?' can't be assigned to the parameter type 'Place'.
【问题讨论】:
标签: flutter dart dart-null-safety