在get方法flutter中,'String'类型不是'Null'类型的子类型

Abd*_*lah 2 api get flutter flutter-dependencies

我收到此错误:在 get 方法 flutter 中,“String”类型不是“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));
}
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到函数检测数据

来自 json 的数据

我也看到了这个错误

StateError(错误状态:Stream 已被监听。)

和这个错误

错误

这是我的聆听功能

  @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);
  }
Run Code Online (Sandbox Code Playgroud)

这是我做的模型

在此处输入图片说明 我不知道有什么问题,因为打印函数返回:[]

Abd*_*any 6

作为额外信息,您可以检查按键名称。我遇到了同样的问题,只是因为我试图获取未找到的密钥。

第一次我写了content代替,details而在我的时候API我没有detailscontent

在此输入图像描述

祝你有美好的一天 :)


Moh*_*yed 5

问题很清楚,您将image类型定义为Null然后尝试将字符串传递给它,尝试更改定义..如下所示:

Class ServiceTypes{
  int id;
  String name;
  String image;
...
Run Code Online (Sandbox Code Playgroud)


Avi*_*ash 5

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

     type 'String' is not a subtype of type 'Null' in get method flutter 
Run Code Online (Sandbox Code Playgroud)

因为您的图像类型是来自服务器的 String 并且您通过 Null 对象获取值,所以使用 String 类型对象来获取字符串值或图像。

用这个

  Class ServiceTypes{
  String image;
Run Code Online (Sandbox Code Playgroud)

代替

   Class ServiceTypes{
   Null image;
Run Code Online (Sandbox Code Playgroud)