当我必须在 Flutter 中使用"void function() async"作为最后的手段时,我该怎么办?



我的函数如下:

void function() async {
…
}

我在Widget build(BuildContext context)中使用了上述函数。

实际上,我希望它是Future<void> function() async而不是void function() async

但是,我不能在Widget build(BuildContext context)中使用await,所以我不能使用Future<void> function() async,因为Future需要await

我不应该使用FutureBuilderthen,因为我不想获取函数中的数据,我只想运行函数。

如果有人能提供建议,请表示感谢。提前谢谢!

您可以将函数定义为future&在StatefulWidgetinitState中调用它(不带await(

class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
Future<void> myFutureFunction() async {
// some future work with
}
@override
void initState() {
super.initState();
// this will be called once, when this widget is apear to the screen
myFutureFunction();
}
@override
Widget build(BuildContext context) {
return SizedBox();
}
}

build方法每秒可以运行60次(对于最新的手机可能会更多(,因此在构建方法中运行任何繁重的计算或API调用都不是一个好主意。它只是用于构建(小部件(。

如果你认为必须重新思考你的应用程序架构,你可能需要重新思考。

考虑block模式,或者只签出有状态小部件的其他生命周期方法。这篇文章列出了他们的名单。

至于这个问题,从技术上讲,异步函数不需要等待它们。您可以直接调用它们,而无需在它们前面添加await

如果你有一个警告,它可能来自lint规则。相关规则。

相关内容

  • 没有找到相关文章

最新更新