【问题标题】:Flutter navigation removing in between routes在路线之间移除颤振导航
【发布时间】:2020-01-08 16:52:07
【问题描述】:

在我的颤振应用程序中,我想在路线之间删除,因此当用户按下返回时,它将转到上一个屏幕。以下是我的屏幕流程。

  1. 仪表板登陆屏幕。
  2. 用户点击列出主题按钮并进入主题列表页面。
  3. 用户点击创建新主题并进入新页面,其中包含填写主题基本信息的表单。
  4. 填写表单后,用户点击保存按钮并进入新页面并显示他刚刚创建的主题详细信息。
  5. 现在如果用户点击返回,他/她应该会进入主题列表页面而不是创建新主题页面。
  6. 此外,如果他从 主题列表 页面再次按回,他应该会看到仪表板,而不是退出应用程序。

提前谢谢你。

【问题讨论】:

    标签: flutter flutter-navigation


    【解决方案1】:

    当您想跳过转到back 的页面时,只需使用pushReplacement 而不是push

    import 'dart:math';
    
    import 'package:flutter/material.dart';
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter naviagtion',
          theme: ThemeData(
            backgroundColor: Colors.white,
            primarySwatch: Colors.green,
          ),
          home: DashboardLandingScreen(),
        );
      }
    }
    
    class DashboardLandingScreen extends StatelessWidget {
      static Route route() => MaterialPageRoute(
            builder: (context) => DashboardLandingScreen(),
          );
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Container(
            alignment: Alignment.center,
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Text('Dashboard landing screen.'),
                RaisedButton(
                  child: Text('List of Topics'),
                  onPressed: () => Navigator.of(context).push(
                    TopicsListScreen.route(),
                  ),
                ),
              ],
            ),
          ),
        );
      }
    }
    
    class TopicsListScreen extends StatelessWidget {
      static Route route() => MaterialPageRoute(
            builder: (context) => TopicsListScreen(),
          );
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Container(
            alignment: Alignment.center,
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Text('List of Topics'),
                RaisedButton(
                  child: Text('Create New Topic'),
                  onPressed: () => Navigator.of(context).push(
                    NewTopic.route(),
                  ),
                ),
              ],
            ),
          ),
        );
      }
    }
    
    class NewTopic extends StatelessWidget {
      static Route route() => MaterialPageRoute(
            builder: (context) => NewTopic(),
          );
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Container(
            alignment: Alignment.center,
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Text('page: new topic'),
                RaisedButton(
                  child: Text('Save'),
                  onPressed: () => Navigator.of(context).pushReplacement(
                    CreatedTopicDetails.route(),
                  ),
                ),
              ],
            ),
          ),
        );
      }
    }
    
    class CreatedTopicDetails extends StatelessWidget {
      static Route route() => MaterialPageRoute(
            builder: (context) => CreatedTopicDetails(),
          );
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Container(
            alignment: Alignment.center,
            child: Text('page: created topic details'),
          ),
        );
      }
    }
    

    【讨论】:

    • 感谢您的宝贵时间和帮助@Kherel
    • 我很乐意为您提供帮助。祝你有美好的一天@Sam。
    猜你喜欢
    • 1970-01-01
    • 2019-12-16
    • 2019-06-30
    • 2020-07-14
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    相关资源
    最近更新 更多