首页 > 解决方案 > Flutter initState 等待异步函数完成

问题描述

在我的 main.dart 中,我有这两个功能:

    Future<void> _fetchMasterData() async {
    print("Start fetch");
    var jwt = await API.attemptLogIn();
    if (jwt != null) {
      Map<String, dynamic> answer = jsonDecode(jwt);
      if (answer['message'] == 'Auth ok') {
        jwtToken = 'Bearer ' + answer['token'];
      }
    }

    await _getArticles();
    await _getMainCategories();
    await _getIngredients();
    await _getArticleIngredients();
    print("EndMasterData fetch");
  }

    @override
  void initState() {
    super.initState();
    _fetchMasterData();
  }

我想要的是在 initState 中等待,直到 _fethcMasterData 完成,然后再调用 Widgert 构建。

那可能吗?非常感谢您的帮助!

标签: flutterasynchronousasync-await

解决方案


这里我如何在 initstate 中使用异步函数;

 builder() async {
    favoriteDatabase =
    await $FloorFavoriteDatabase.databaseBuilder('favorite_database.db')
        .build();
    setState(() {
      favoriteDao = favoriteDatabase.favoriteDao;
    });
  }


  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((_) {
      WidgetsBinding.instance.addPostFrameCallback((_) =>
          getNamePreferences().then(updateName));
    });
    builder();
    favoriteDao.findAllMoviesAsStreamW();
    favoriteDao.findAllMoviesAsStream();
  }

您也可以查看这篇迷你文章。


推荐阅读