类型“String”不是get方法flutter中类型“Null”的子类型

piztneat  于 2023-05-29  发布在  Flutter
关注(0)|答案(6)|浏览(153)

我得到了这个错误:类型“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函数返回:[]

llmtgqce

llmtgqce1#

创建模型时,图像类型值为null,因此,模型是使用Null类型的图像创建的,但当来自服务器的图像不是null类型时,它会给您一个错误

type 'String' is not a subtype of type 'Null' in get method flutter

因为你的图像类型是String从服务器和你得到的值由空对象,所以使用字符串类型对象获取字符串值或图像。
用这个

Class ServiceTypes{
  String image;

而不是

Class ServiceTypes{
   Null image;
ztyzrc3y

ztyzrc3y2#

作为额外的信息,您可以检查密钥名称。我遇到了同样的问题,只是因为我试图获取一个没有找到的钥匙。
第一次我写的是content而不是details,在我的API中,我有details而不是content

有一个好日子:)

3bygqnnd

3bygqnnd3#

问题很明显,你定义image类型为Null,然后试图向它传递字符串,尝试更改定义。像这样:

Class ServiceTypes{
  int id;
  String name;
  String image;
...
kxxlusnw

kxxlusnw4#

使用?this作为可空键。例如:
最终字符串?title; final String?类别;
以下是完整的解决方案:有可能在Flutter/Dart中解析json而缺少属性(json数据的键)吗?

zyfwsgd6

zyfwsgd65#

第一步:迟到的字符串?urlToImage;你加了'?'
第二步:urlToImage:json['urlToImage'].toString(),

puruo6ea

puruo6ea6#

要将类型转换为String Eg:String getString();

相关问题