说我的应用在 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});
中。但这没用。
答案 0 :(得分:1)
如果页面尚未初始化,您将没有上下文。将以下代码插入您的Widget build(BuildContext context)
方法中。
_sleepTwo().then((res) {
Navigator.push(
context,
new MaterialPageRoute(
builder: (BuildContext context) => PageB(),
));
});
如果您希望PageA仍然自己绘制,请不要使用await
关键字,然后在两秒钟后切换到PageB