在initState()方法中使用什么代替await?

时间:2020-10-25 12:28:12

标签: flutter

我收到此错误

不能将类型“ Future”的值分配给 类型为“ double”的变量。 因为我们不能在initState()方法中使用assync。

class _SettingsState extends State<Settings> {
  bool _isSwitched = false;
  double _sliderValue = 0;

  @override
  void initState() async {
    _sliderValue = _getInterval();
    super.initState();
  }
...

Future<double> _getInterval() async { ...

但是,如果我们尝试在initState()中使用await,那么我们将得到消息

而不是直接在内部等待异步工作 initState,调用一个单独的方法无需等待即可完成此工作 它。

如何在initState中使用_getInterval,即从中获取将来的值,而无需等待它?

2 个答案:

答案 0 :(得分:1)

如果要运行这段代码_sliderValue = _getInterval();,可以将其放在单独的方法中

void myMethod() async{
   _sliderValue = await _getInterval();
}

然后在initState方法中调用它,如下所示:

@override
  void initState() async {
    super.initState();
    myMethod();
  }

答案 1 :(得分:1)

只需调用_getInterval方法而不等待它并将其更改为,而不是返回方法末尾将其分配给_sliderValue的值(可能还会调用setState)< / p>