颤抖如何导航回特定页面

时间:2019-08-02 23:34:30

标签: flutter

我有一个具有多个页面的应用程序,根据用户选择,某些页面会被跳过。

例如,我有以下页面 details.dart

contact.dart

address.dart

code.dart

summary.dart

我想从以上任何页面转到另一页。但是,我想先检查一下它们是否在堆栈中,然后弹出。否则,将该页面推入堆栈

如何在Flutter中做到这一点

4 个答案:

答案 0 :(得分:0)

我认为您可能要使用Navigator.of(context).pushNamedAndRemoveUntilNavigator.popUntil

它们非常相似,但是就像名称建议pushNamedAndRemoveUntil在谓词匹配时推送一条新路由,而popUntil重用树中的现有Route / Widget。

您可以在这个精彩的Medium post上详细了解它们,并详细解释所有选项。

答案 1 :(得分:0)

您可以在home之后使用materialApp内部的路线

return MaterialApp(
    home:... ,
    routes:{
       "/routeName" : (context) => PageRoute()
    }

,然后从任何页面调用路由名称 例如:“联系人”页面中的应用程序需要移至PageRoute

//Contact Page
  ... 
 onTap:(){
   Navigator.pushReplacementName(context,'/routeName');
   }

答案 2 :(得分:0)

只需使用多个Navigator.pop

答案 3 :(得分:0)

以下是如何在两条路线之间导航,使用以下步骤:

-创建两条路线。

-使用 Navigator.push() 导航到第二条路线。

-使用 Navigator.pop() 返回第一条路线。

import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(
    title: 'Navigation Basics',
    home: FirstRoute(),
  ));
}

class FirstRoute extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('First Route'),
      ),
      body: Center(
        child: ElevatedButton(
          child: Text('Open route'),
          onPressed: () {
            Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => SecondRoute()),
            );
          },
        ),
      ),
    );
  }
}

class SecondRoute extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Second Route"),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.pop(context);
          },
          child: Text('Go back!'),
        ),
      ),
    );
  }
}