我尝试使用moviedb API从Internet上获取数据,我按照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 只能使用顶级功能,而不能使用实例或静态方法。
compute
顶级函数是声明为不在类内部且不在另一个函数内的函数
List<DataModel> createDataList(String responFroJson) { ... } class SomeClass { ... }
应该修复它。
https://docs.flutter.io/flutter/foundation/compute.html
R是返回值的类型。callback参数必须是顶级函数,而不是类的闭包,实例或静态方法。