我正在尝试创建一个简单的debug / print函数,在处理Dart中的Future结果时,我可以通过它通过then序列进行管道传输。
我的函数定义如下:
import 'dart:async';
typedef FutureOr<T> Pipe<T>(T pipeThrough);
Pipe<A> debug<A>(String log) {
return (A pipeThrough) {
print(log);
return pipeThrough;
};
}
它将返回一个函数,该函数将通过管道从Future链接收到的内容进行管道传输,并且在此之前,它将打印已发送到debug的消息log。”>
我使用该函数的方式非常简单:
中所看到的,它应该返回链中的所有内容,但要在此之前打印'JSON LOADED!'。Future<Map> load(String folder) { return File(Paths.of([folder, 'data.json'])) .readAsString() .then((s) => jsonDecode(s)) .then(debug<Map>('JSON LOADED!')); }
正如您在将来的链中的最后一个then
但是使用泛型和Future api时,我没有设法找到一种使之起作用的方法,这是错误:
Unhandled exception: type '(Map<dynamic, dynamic>) => Map<dynamic, dynamic>' is not a subtype of type '(dynamic) => FutureOr<Map<dynamic, dynamic>>' #0 load (file:///{.../..../......}/data/data_json.dart:11:13) #1 main (file:///{.../..../......}/data/main.dart:7:28) #2 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:301:19) #3 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)
我已经尝试了很多不同的方法,但是从根本上我不知道发生了什么,飞镖是否不会根据泛型类型注释来推断适当的类型?
我正在尝试创建一个简单的调试/打印功能,在处理Dart中的Future结果时,我可以通过它依次进行一系列操作。我的函数定义如下:import'dart:async'; ...
我不知道为什么