Flutter:无法导航到另一个页面

Posted

技术标签:

【中文标题】Flutter:无法导航到另一个页面【英文标题】:Flutter: Can't navigate to another page 【发布时间】:2020-09-02 18:50:53 【问题描述】:

因此,在构建了我的第一个 Flutter 页面之后,我开始为我的应用程序处理其他一些 Flutter 页面。我成功地制作了另外两个颤动页面,并且能够允许用户在两​​者之间导航,但是当我尝试允许用户在原始颤动页面上导航到其他两个颤动页面中的任何一个时,什么也没有发生。

注意:导航的代码似乎写得很好(它适用于其他两个页面)

注意 2:我导航到另一个页面的行链接到标有“查看记录”的凸起按钮

谁能指出此页面中不允许用户导航到另一个页面的任何内容?谢谢!

import 'package:flutter/material.dart';
import 'package:faui/faui.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:provendor3/FlutterAuthUiDemoy.dart';
import 'main.dart';

void firestore_page() => runApp(firestore_pagey());
class firestore_pagey extends StatefulWidget 
   @override
  MyApps createState() => MyApps();
 

class MyApps extends State<firestore_pagey> 

final databaseReference = Firestore.instance;
@override
Widget build(BuildContext context) 
return MaterialApp(home:
  Scaffold(
  appBar: AppBar(
    title: Text('FireStore Demo'),
  ),
  body: Center(
      child: Column(
    crossAxisAlignment: CrossAxisAlignment.stretch,

    children: <Widget>[

      RaisedButton(
        child: Text('Create Record'),
        onPressed: () 
          createRecord();
        ,
      ),
      RaisedButton(
        child: Text('View Record'),
        onPressed: () 
         Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => MyApp()),
                );
        ,
      ),
      RaisedButton(
        child: Text('Update Record'),
        onPressed: () 
          updateData();
        ,
      ),
      RaisedButton(
        child: Text('Delete Record'),
        onPressed: () 
          deleteData();
        ,
      ),
  new Expanded(child:
    new StreamBuilder<QuerySnapshot>(
    stream: databaseReference.collection('books').snapshots(),
    builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) 
      if (!snapshot.hasData) return new Text('Loading...');
      return new ListView(
        children: snapshot.data.documents.map((DocumentSnapshot document) 
          return new ListTile(
            title: new Text(document['title']),
            subtitle: new Text('$document['description'] description'),
          );
        ).toList(),
      );
    ,
    )
  )
    ],
  )),
 ) //center
);

Main.dart

  import 'package:flutter/material.dart';
  import 'FlutterAuthUiDemoy.dart';
  import "firestore_page.dart";

   void main()   
    runApp(MyApp());
    


  class MyApp extends StatelessWidget 
     @override
     Widget build(BuildContext context) 
     return MaterialApp(
       home: Builder(
        builder: (context) => Scaffold(
        appBar: AppBar(
           title: Text("Page 1"),
        ),
      body: Center(
        child: Column(
          children: <Widget>[
            MaterialButton(
              child: Text("Next Page"),
              onPressed: () 
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => FlutterAuthUiDemo()),
                );
              ,
              color: Colors.red,
            )
          ],
        ),
      ),
    ),
  ),
);

【问题讨论】:

你有一个名为 firestore_pagey 的类? 是的...不是我最自豪的班级名称,哈哈 您确定您的页面名称是 MyApp 吗? 是的!我从链接到 MyApp 的其他页面(及其在该页面上的功能)复制了该代码 您是否尝试检查您的 onPressed 是否被调用? 【参考方案1】:

因此,问题似乎来自我正在导航的页面。我正在使用一个似乎在使用后阻止导航的库,所以我从它之前的页面中删除了该库,现在我可以在页面上导航了!感谢大家的帮助!

【讨论】:

【参考方案2】:

您可以删除您的 MaterialApp 然后再试一次吗?我假设你的 main.dart 中已经有一个 MaterialApp。

Widget build(BuildContext context) 
return 
  Scaffold(
  appBar: AppBar(
    title: Text('FireStore Demo'),
 ...

【讨论】:

感谢您的建议!不幸的是,它仍然不起作用,我无法从“firestore_pagey”导航到另一个页面 您的所有页面都已添加到您的路线中,对吗?你也可以发送 main.dart 代码吗? 我看不到你的路线.. 点击这里获得更多关于导航的解释:medium.com/flutter-community/flutter-push-pop-push-1bb718b13c31 嗯...所以我尝试添加路线,前两页再次正常工作,但导航到 firestore_pagey.dart 后,我​​似乎无法导航到另一个页面

以上是关于Flutter:无法导航到另一个页面的主要内容,如果未能解决你的问题,请参考以下文章

在 Flutter 中完成 CircularProgressIndicator 后如何导航到另一个页面?

Flutter:从 StreamBuilder 构建器回调内部导航到另一个屏幕

Flutter - 如何在 TabBarView 的主体内导航?

Flutter - 使用 push(), pop() 和路由进行导航

在 Flutter 中导航后无法关注新页面中的 TextField

带有页面视图的自定义导航栏 [Flutter]