如何在函数回调中 return 来自函数的不可空类型?

How to return a non-nullable type from a Function in a function callback?

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,
  );
}

The body might complete normally, causing 'null' to be returned, but the return type is a potentially non-nullable type.

据我所知,这些回调之一会起作用,那么我如何告诉分析器我已经处理了所有场景?

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

您需要一个 return 语句:

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

...
return c;

Analyzer 就在这里,您只是没有从 getInt().

返回任何内容

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

注意: 这里使用 Completer 似乎比较奇怪,它主要用于在基于回调的 API 和基于 Future 的 API.

之间架起桥梁