flutter - 无效参数:隔离消息中的非法参数:(对象是一个闭包 - 函数'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();
}
解决方案
compute
只能采用顶级函数,不能采用实例或静态方法。
顶级函数是不在类内且不在另一个函数内声明的函数
List<DataModel> createDataList(String responFroJson) {
...
}
class SomeClass { ... }
应该修复它。
https://docs.flutter.io/flutter/foundation/compute.html
R 是返回值的类型。回调参数必须是顶级函数,而不是闭包或类的实例或静态方法。
推荐阅读
- java - 身份验证后如何将用户数据存储到 Firbase 数据库中?
- spring-boot - 使用 Aspectj 指向扩展类方法的切入点
- sql - 编写单个 SQL 查询以计算具有“真”条件的多个布尔列的计数
- javascript - 如何同时使用不同的 eslint 配置 lint JS 和 TS 文件?
- javascript - 检测页面/文档的加载权重 - javascript/PHP
- java - 使用 Spring Cloud Stream 的可靠异步批处理 kafka 生产者
- javascript - 上传后找不到文件
- laravel - Laravel 多态多对多 - 查询
- c# - C# 7.0 - 使用默认实现实现多重继承
- javascript - React Navigation 如何传递到 Tab navigator form Login Screen?