如何在函数回调中从函数返回不可为null的类型


Future<int> getInt() async { // Error: 
final c = Completer<int>();
await foo.bar(
callback1: (i) => c.complete(i),
callback2: (j) => c.complete(j),
error: (e) => throw e,
);
}

正文可能正常完成,导致返回"null",但返回类型可能是不可为null的类型。

我知道其中一个回调会起作用,那么我如何告诉分析器我已经处理了所有场景?

注意:我知道我可以简单地使用Future<int?>,但我想知道是否有其他方法来处理这种情况?

Analyzer就在这里,您只是没有从getInt()返回任何内容。

getInt()的末尾添加return completer.future

注:这里使用Completer似乎很奇怪,它主要用于桥接基于回调的API和基于Future的API。

您需要一个返回语句:

final result = await foo.bar(
callback1: (i) => c.complete(i),
callback2: (j) => c.complete(j),
error: (e) => throw e,
);
return result;

...
return c;

最新更新