Dart:函数的参数表示法

时间:2018-08-22 11:50:39

标签: function parameters dart notation

我有时会找到这样的东西:

Future<List<Photo>> fetchPhotos(http.Client client) async {
final response = await client.get('https://jsonplaceholder.typicode.com/photos');
return compute(parsePhotos, response.body);
}

其中parsePhotos函数为:

List<Photo> parsePhotos(String responseBody) {
final parsed = json.decode(responseBody).cast<Map<String, dynamic>>();
return parsed.map<Photo>((json) => Photo.fromJson(json)).toList();
}

我无法理解compute(parsePhotos, response.body)parePhotos函数接受了responseBody参数,但是在编写compute时,似乎没有收到它。所以,有人可以向我解释这个表示法吗? P.s.希望它足够清楚。

1 个答案:

答案 0 :(得分:3)

return compute(parsePhotos, response.body);

parsePhotosresponse.body只是两个独立的参数。 第一个是对传递给parsePhotos的{​​{1}}参数的compute函数的引用,第二个是来自callback的响应数据,该响应数据被传递给{{ client.get(...)函数的1}}参数。

message的作用是创建一个新的隔离物,并以compute作为入口点(例如主隔离物的compute),然后将parsePhotos作为参数传递给它。

不是这行main()message传递给return compute(parsePhotos, response.body);而是

response.body

来自parsePhotos实现https://docs.flutter.io/flutter/foundation/compute.html