首次加载后导航至其他页面秒数

时间:2019-10-01 20:54:49

标签: flutter dart

说我的应用在 PageA 上启动,我试图在加载后2秒导航到 PageB

这是我尝试过的...

在PageA中:

Future _sleepTwo() {
  return new Future.delayed(const Duration(seconds: 2), () => "sleeping...");
}

@override
void initState() {
  this._sleepTwo().then((res) {
    Navigator.push(
        context,
        new MaterialPageRoute(
          builder: (BuildContext context) => PageB(),
        ));
  });
}

但这给了我以下错误:

E/flutter (22949): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: Navigator operation requested with a context that does not include a Navigator.
E/flutter (22949): The context used to push or pop routes from the Navigator must be that of a widget that is a descendant of a Navigator widget.

我到处都看过,却一无所获。

我什至尝试用initState()将所有内容包装在Future(() => {code here});中。但这没用。

1 个答案:

答案 0 :(得分:1)

如果页面尚未初始化,您将没有上下文。将以下代码插入您的Widget build(BuildContext context)方法中。

_sleepTwo().then((res) {
  Navigator.push(
      context,
      new MaterialPageRoute(
        builder: (BuildContext context) => PageB(),
      ));
});

如果您希望PageA仍然自己绘制,请不要使用await关键字,然后在两秒钟后切换到PageB