我得到了这个错误:类型“String”不是get方法flutter中类型“Null”的子类型
这是我使用的get API函数
Future<Stream<ServiceTypes>> getServiceTypesa() async {
final String url = 'https://test.com';
final client = new http.Client();
final streamedRest = await client.send(
http.Request('get', Uri.parse(url))
);
return streamedRest.stream
.transform(utf8.decoder)
.transform(json.decoder)
.expand((data) => (data as List))
.map((data) => ServiceTypes.fromJson(data));
}
你可以在这里看到函数检测数据
我也看到了这个错误
StateError(错误状态:已收听流。)
这个错误
这是我的监听功能
@override
void initState() {
_serviceTypes = new List<ServiceTypes>();
listenForServiceTypes();
super.initState();
}
void listenForServiceTypes() async {
setState(() {
this._show_serviceTypesProgress = true;
});
final Stream<ServiceTypes> stream = await getServiceTypesa();
stream.listen((ServiceTypes serviceTypes) =>
setState(() => _serviceTypes.add(serviceTypes)));
setState(() {
this._show_serviceTypesProgress = false;
});
print(_serviceTypes);
}
这是我做的模型
我不知道是什么问题,因为print函数返回:[]
6条答案
按热度按时间llmtgqce1#
创建模型时,图像类型值为null,因此,模型是使用Null类型的图像创建的,但当来自服务器的图像不是null类型时,它会给您一个错误
因为你的图像类型是String从服务器和你得到的值由空对象,所以使用字符串类型对象获取字符串值或图像。
用这个
而不是
ztyzrc3y2#
作为额外的信息,您可以检查密钥名称。我遇到了同样的问题,只是因为我试图获取一个没有找到的钥匙。
第一次我写的是
content
而不是details
,在我的API
中,我有details
而不是content
。有一个好日子:)
3bygqnnd3#
问题很明显,你定义
image
类型为Null
,然后试图向它传递字符串,尝试更改定义。像这样:kxxlusnw4#
使用?this作为可空键。例如:
最终字符串?title; final String?类别;
以下是完整的解决方案:有可能在Flutter/Dart中解析json而缺少属性(json数据的键)吗?
zyfwsgd65#
第一步:迟到的字符串?urlToImage;你加了'?'
第二步:urlToImage:json['urlToImage'].toString(),
puruo6ea6#
要将类型转换为String Eg:String getString();