需求:想在Widget初始化过程中同步执行异步代码

由于void initState()函数只能是同步的,不能改写为异步的,所以没法在initStateawait f();但是我们可以将异步代码写成一个异步函数,不用await直接在initState中执行,此时会存在initState执行完进入下一个生命周期钩子函数;但是我们的异步函数任然可能在继续执行,那么此时就需要在异步函数中使用setState()来刷新页面,达到仿佛是同步执行的效果,实际还是异步执行。

  void _initRstpUrl() async {
    this.rtspUrl = await MyPrefs.getStorage(PrefsEnumName.rtspUrl);
  }

  
  void initState() {
    super.initState();
    _initRstpUrl();
  }
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐