首页 > 解决方案 > 无效参数:隔离消息中的非法参数:(对象是一个闭包 - 函数'createDataList':.)

问题描述

我尝试使用moviedb API从互联网上获取数据,我按照https://flutter.io/cookbook/networking/fetch-data/上的教程进行操作

但我收到以下错误。

无效参数:隔离消息中的非法参数:(对象是一个闭包 - 函数'createDataList':.)

这是我的代码

Future<List<DataModel>> fetchData() async{
    final response = await http.get("https://api.themoviedb.org/3/movie/now_playing?api_key=d81172160acd9daaf6e477f2b306e423&language=en-US");

    if(response.statusCode == 200){

      return compute(createDataList,response.body.toString());
    }
  }

  List<DataModel> createDataList(String responFroJson) {
    final parse  = json.decode(responFroJson).cast<Map<String, dynamic>>();

    return parse.map<DataModel> ((json) => DataModel.fromtJson(json)).toList();
  }

报错信息截图 在此处输入图像描述

标签: flutter

解决方案


compute只能采用顶级函数,不能采用实例或静态方法。

顶级函数是不在类内且不在另一个函数内声明的函数

List<DataModel> createDataList(String responFroJson) {
...
}

class SomeClass { ... }

应该修复它。

https://docs.flutter.io/flutter/foundation/compute.html

R 是返回值的类型。回调参数必须是顶级函数,而不是闭包或类的实例或静态方法。


推荐阅读