Флаттер навигатор не работает

Я использую initState и имею проблему с навигатором:

I / flutter (5726): было создано следующее утверждение Building Builder: I/flutter ( 5726): setState() или markNeedsBuild() вызывается во время сборки.

Мой код:

@override
void initState() {

super.initState();
print(globals.isLoggedIn);
if(globals.isLoggedIn) {

    print("Already login");

    Navigator.push(context, MaterialPageRoute(builder: (context)=> Dashboard()));

}

2 ответа

Решение

Мы получаем ошибку как раз building the Widget Сам мы просим ориентироваться.

Для этого есть обходной путь.

Future(() {
   Navigator.push(context, MaterialPageRoute(builder: (context)=> Dashboard()));
});

Explaination:

Поскольку Dart основан на однопоточном цикле событий, когда мы создаем асинхронные задачи, он помещает эти события в конец очереди событий и продолжает текущее выполнение. Пожалуйста, обратитесь к примеру ниже для более подробной информации,

void main() {
  print("first");
  Future(() => print("second"));
  print("third");
  Future(() => print("forth"));
}

Выход будет

first
third
second
forth

Встраивание MyApp в виджет MaterialApp решило для меня проблему.

      void main() {
runApp(MaterialApp(
home:MyApp()
));
}
Другие вопросы по тегам