Флаттер навигатор не работает
Я использую 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()
));
}