Dart / flutter:Navigator.push - 没有这样的方法错误

时间:2018-04-05 08:31:09

标签: dart flutter

我的应用程序中有以下结构:

主页 - 导航抽屉 - > Navigator.push打开新的Scaffolds

然而,在我通过导航抽屉菜单点导航到其中一个页面后,我有更多按钮可以打开另一个页面,我收到以下错误:

I/flutter ( 6391): ══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════
I/flutter ( 6391): The following NoSuchMethodError was thrown while handling a gesture:
I/flutter ( 6391): The method 'ancestorStateOfType' was called on null.
I/flutter ( 6391): Receiver: null
I/flutter ( 6391): Tried calling: ancestorStateOfType(Instance of 'TypeMatcher<NavigatorState>')
I/flutter ( 6391): 
I/flutter ( 6391): When the exception was thrown, this was the stack:
I/flutter ( 6391): #0      Object.noSuchMethod (dart:core-patch/dart:core/object_patch.dart:46)
I/flutter ( 6391): #1      Navigator.of (package:flutter/src/widgets/navigator.dart:722:19)
I/flutter ( 6391): #2      Navigator.push (package:flutter/src/widgets/navigator.dart:557:22)
I/flutter ( 6391): #3      buildBasicWidget.<anonymous closure> (package:osszefogasaszanhuzokert/dog.dart:388:43)

错误来自的部分是一个非常简单的FlatButton:

new Row(
                      mainAxisAlignment: MainAxisAlignment.end,
                      mainAxisSize: MainAxisSize.max,
                      children: <Widget>[
                        new Container(
                          padding: const EdgeInsets.only(top: 43.0),
                          child: new RaisedButton(
                              color: Colors.blueGrey,
                              onPressed: (){
                                Navigator.push(context, new MaterialPageRoute(
                                    builder: (context) => new DogDetails(URL)));
                              },
                              child: new Text('Részletek')),
                        ),

此按钮的目的是打开新页面,其中详细显示了有关狗的所有信息。我尝试导航的页面只是一个包含每条狗的基本信息的列表。

但我不明白为什么我会收到此错误(它也发生在另一个页面上,我只想在用户点击它时打开图像以查看完整视图)。我的猜测是问题所在:

Navigator.push(context,

不知怎的,我以错误的方式传递了上下文。目前,我刚刚在窗口小部件的构建过程中初始化了一个上下文变量(其中包含打开详细页面的按钮,这些窗口小部件使用ListView.builder显示)。

BuildContext context;

我应该如何将上下文完全传递给Navigator.push方法以使推送工作?

0 个答案:

没有答案