如果流没有返回连接值,我需要从函数返回结果。
所以我有外部功能和内部功能。我如何从外部内部返回结果?
Future<bool> send() async {
var subscription = Connectivity().onConnectivityChanged.listen((ConnectivityResult result) {
if(result == ConnectivityResult.none)
throw("No connectivity");
// Need to stop `send` function here and return some result
});
await doSomeWork();
return true;
}
答案 0 :(得分:1)
Future
返回的send
只能完成一次,而Stream
可能会发出多个事件-您无法使用true
完成此操作,然后再执行用false
重新完成,因为流中出现了一些新事件。
您可以确定send
的返回值取决于流中的 first 事件:
Future<bool> send() async {
var result = await Connectivity().onConnectivityChange.first;
if (result == ConnectivityResult.none) {
// handle no connection
return false;
}
await doSomeWork(); // only happens if the first result was not `none`
return true;
}
否则,您需要确定在调用none
并且{{1}之后,通过 获得doSomeWork()
连接结果的含义。 }从Future
返回的结果。