需求:想在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

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐