【问题标题】:Flutter initstate navigator is not workingFlutter initstate 导航器不起作用
【发布时间】:2019-01-28 14:59:30
【问题描述】:

我正在使用 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()));

}

【问题讨论】:

  • 另请注意,用户可以通过按返回按钮从仪表板返回到上一页

标签: flutter


【解决方案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

【讨论】:

  • 很好的解释!非常感谢,但我仍然在控制台中收到警告...未处理的异常:使用不包含导航器的上下文请求导航器操作。
  • 我也遇到了同样的问题,请问您找到解决方法了吗?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2021-06-06
    • 2022-01-18
    • 1970-01-01
    • 2020-04-08
    • 2021-12-08
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    • 2020-09-05
    相关资源
    最近更新 更多