我有一个异步函数,需要在有状态小部件的 initState 中调用,但我不能使用 await,因为 initState 不是异步的。
sendHealthData
是async
因为它从 Health Api 获取一些信息,然后我需要将该信息发送到 HomeSubScreen,这是另一个StatefulWidget
. 但是在创建 HomeSubScreen 时,该sendHealthData
方法没有获取所有信息,因此如果我尝试将参数中的某个值发送到HomeSubScreen
,则该值将为空。
我怎样才能做到这一点?
@override
void initState() {
super.initState();
sendHealthData();
_widgetOptions = <Widget>[
HomeSubScreen(healthData),
];
}
Run Code Online (Sandbox Code Playgroud)
更新:如果我添加了 then() 我会收到以下错误:
NoSuchMethodError: The method 'elementAt' was called on null.
Run Code Online (Sandbox Code Playgroud)
代码更新:
@override
void initState() {
super.initState();
sendHealthData().then((response){
_widgetOptions = <Widget>[
HomeSubScreen(healthData),
];
});
}
Run Code Online (Sandbox Code Playgroud) 我想知道当我知道State
Flutter中类中变量的初始值时,我应该使用变量定义还是内部来初始化它initState
方法。什么更好,为什么?
class _SampleState extends State<Sample> {
String _foo = 'FOO';
@override
void initState() {
// Do some other stuff
super.initState();
}
...
}
Run Code Online (Sandbox Code Playgroud)
class _SampleState extends State<Sample> {
String _foo;
@override
void initState() {
_foo = 'FOO';
// Do some other stuff
super.initState();
}
...
}
Run Code Online (Sandbox Code Playgroud)