在构建期间调用setState()或markNeedsBuild()

时间:2020-06-15 14:43:22

标签: android-studio flutter dart

如果该应用程序是使用FutureBuilder()首次启动的,我正在尝试启动“如何使用”屏幕。

isFisrtTime()如果是首次启动该应用程序,则返回true。

这是FutureBuilder代码:

body: FutureBuilder(
    future: isFirstTime(),
    initialData: Container(),
    builder: (context, snapshot){

      if(snapshot.data == true){

        Navigator.pushNamed(context, '/howtouse');
        return (currentScreen == 'Home')
            ? HomeBody()
            : CBook(changeScreen: changeCurrentScreen);

      }
      else {

        return (currentScreen == 'Home')
            ? HomeBody()
            : CBook(changeScreen: changeCurrentScreen);
      }

    },
  ),

请帮助

1 个答案:

答案 0 :(得分:1)

您无法在构建过程中推送新路线。而是将逻辑移到您的initState。

@override
void initState() {
  isFirstTime().then((data) {
    if(data) {
      Navigator.pushNamed(context, '/howtouse');
    }
  }
  super.initState();
}