在Flutter中使用Navigator.push()时出现黑屏

时间:2020-04-10 12:11:44

标签: android flutter dart mobile flutter-layout

我正在尝试使用Navigator.push导航到Flutter中的新页面。这是到目前为止我得到的:

GestureDetector(
            onTap: () {
              print('Test');
//              Navigator.push(context,
//                  MaterialPageRoute(builder: (context) => ResultsPage()));
            },
            child: Container(
              color: Color(0xFFff474b),
              child: Center(
                child: Text('CALCULATE', style: kButtonText),
              ),
              padding: EdgeInsets.only(bottom: 20.0),
              width: double.infinity,
              height: 80.0,
              margin: EdgeInsets.only(top: 10.0),
            ),
          ),

由于我一直在使用打印语句测试onTap,因此我要实现的代码已被注释掉。

有趣的是,print语句运行了,但是由于某种原因,我无法使Navigator.push正常工作。它只会导航到黑屏。

对于上下文,这是“结果”页面-只是带有应用程序栏的简单支架。但是应用栏不会显示在下一页:

class ResultsPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Calculated Distance'),
      ),
    );
  }
}

3 个答案:

答案 0 :(得分:2)

该错误可能是由于脚手架中存在两个或多个浮动操作按钮引起的。默认情况下,Floating Action 按钮有一个 Hero 属性处于活动状态。通过 heroTag: null,. 使其停用。

例如,

FloatingActionButton(
                    heroTag: null,
                    child: Icon(),
                    onPressed: () {},
                  ),

答案 1 :(得分:0)

事实证明,问题在于我在页面上有两个FloatingActionButtons,所以它与Navigator路线混为一谈。

我发现这篇中型文章是该解决方案的不错指南:https://medium.com/@kaendagger/test-cef30fcb5c54

答案 2 :(得分:0)

将ResultsPage()添加到您的路线中,将其添加到您的MaterialApp(

MaterialApp( 
  initialRoute: '/',
              routes: {
                '/': (_) => HOME(),
                '/home': (_) => ResultsPage(),
              }, )