gpt4 book ai didi

dart - Dart:catchError Future的函数签名

转载 作者:行者123 更新时间:2023-12-03 04:54:36 27 4
gpt4 key购买 nike

我有一些Future代码,如下所示:

return login().then((user) {
print("Logged in user ${user.name}");
return user;
}).catchError(this.displayError);

我试图将函数传递给 catchError(...)函数的地方,因为它是我在多个调用中重复使用的错误处理程序。我试过使用这个:

Future<void> displayError(Error error) {
return showDialog(context: context, builder: (context) {
return AlertDialog(...);
});
}

但是,当我运行该应用程序时,出现此错误:
Invalid argument (onError): Error handler must accept one Object or one Object and a StackTrace as arguments, and return a a valid result: Closure: (Error) => Future<void> from Function 'displayError':.

如果我将 catchError(...)更改为此:

.catchError((error) {
displayError(error);
})

然后一切正常。我的问题是,有人知道为什么我没有成功地将 displayError函数传递给 catchError而不是在闭包中调用它吗?

最佳答案

更改处理程序的签名-它必须是Object而不是Error。 Dart中没有 promise 抛出的对象为Error类型。他们可以是任何东西。

Future<void> displayError(Object error) {
return showDialog(context: context, builder: (context) {
return AlertDialog(...);
});
}

关于dart - Dart:catchError Future的函数签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60825201/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com