Flutter initstate导航器无法正常工作

时间:2018-08-22 10:56:58

标签: flutter

我正在使用initState并出现导航器问题:

  

I / flutter(5726):引发了以下断言   构建器: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 个答案:

答案 0 :(得分:1)

我们收到错误消息,而building the Widget本身却要求导航。

对此有一个解决方法

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

说明:

由于Dart基于单线程事件循环,因此,当我们创建异步任务时,它将把这些事件放在事件队列的末尾并继续当前执行。请参考下面的示例以获取更多详细信息,

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

输出将为

first
third
second
forth

答案 1 :(得分:0)

在 MaterialApp 小部件中嵌入“MyApp”为我解决了这个问题。

void main() {
runApp(MaterialApp(
home:MyApp()
));
}