📜  navigator.pushandremoveuntil flutter - Dart (1)

📅  最后修改于: 2023-12-03 15:17:50.556000             🧑  作者: Mango

Flutter中的Navigator.pushAndRemoveUntil

在Flutter中,Navigator.pushAndRemoveUntil是导航栏中最常用的功能之一。该功能可以让开发人员在跳转到新页面时,移除之前所有的页面,并指定新页面作为当前页面。

用法

要使用Navigator.pushAndRemoveUntil方法,需要导入“material.dart”包,并使用Navigator的实例来调用该方法。

import 'package:flutter/material.dart';

Navigator.pushAndRemoveUntil(
  context,
  MaterialPageRoute(builder: (BuildContext context) => NewPage()),
  (Route<dynamic> route) => false,
);

在上述代码中,我们使用了MaterialPageRoute作为构建新页面的工具,并且使用了false作为移除所有页面的标志。

参数说明

调用Navigator.pushAndRemoveUntil方法时,通常需要提供以下参数:

  • context:当前上下文环境。

  • Route:用于构建新页面的路由。

  • Function:用于指定需要移除的页面。如果返回值为true,将继续移除当前页面;如果返回值为false,则表示当前页面应停止移除。

示例

以下是一个使用Navigator.pushAndRemoveUntil的简单示例。在该示例中,我们将创建两个页面,并将第二个页面作为当前页面。

import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(
    home: FirstPage(),
  ));
}

class FirstPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: RaisedButton(
          child: Text('Go to Next Page'),
          onPressed: () {
            Navigator.pushAndRemoveUntil(
              context,
              MaterialPageRoute(builder: (BuildContext context) => SecondPage()),
              (Route<dynamic> route) => false,
            );
          },
        ),
      ),
    );
  }
}

class SecondPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Second Page'),
      ),
      body: Center(
        child: RaisedButton(
          child: Text('Go Back'),
          onPressed: () {
            Navigator.pop(context);
          },
        ),
      ),
    );
  }
}

在上述示例中,我们创建了两个页面,第一个页面包含了一个按钮,点击该按钮则会跳转到第二个页面。而在第二个页面中,我们创建了一个带有返回按钮的AppBar,并将其设置为当前页面。