Flutter--替换路由、指定跳转路由
  45VoiS2mj7n5 2023年11月02日 39 0


替换路由

注意路由配置和上篇文章配置相同
import 'package:flutter/material.dart';

class MinePage extends StatefulWidget {
MinePage({Key key}) : super(key: key);


_MinePageState createState() => _MinePageState();
}


class _MinePageState extends State<MinePage> {
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RaisedButton(
child: Column(
children: <Widget>[
RaisedButton(
child: Text("跳转到登录页面"),
onPressed: (){
Navigator.pushNamed(context, '/login');
},
),
RaisedButton(
child: Text("跳转到注册页面"),
onPressed: (){
Navigator.pushNamed(context, '/registerFirst');
},
),
],
)
)
],
);
}
}
login页面(栈中弹出当前页面)
import 'package:flutter/material.dart';


class LoginPage extends StatelessWidget {
const LoginPage({Key key}) : super(key: key);

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("登录")),
body: Center(
child: Column(
children: <Widget>[
SizedBox(
height: 40,
),
Text("登录页"),
RaisedButton(
child: Text("登录"),
onPressed: () {
// 登陆成功返回
Navigator.of(context).pop();
},
)
],
),
));
}
}
注册页面(替换路由实现)
import 'package:flutter/material.dart';

class RegisterFirstPage extends StatelessWidget {
const RegisterFirstPage({Key key}) : super(key: key);


@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("登录")),
body: Center(
child: Column(
children: <Widget>[
SizedBox(
height: 40,
),
Text("注册1"),
RaisedButton(
child: Text("下一步"),
onPressed: () {
// 此时跳转到第二个注册页,但是栈中还是存在第一个注册页,当点击返回时会返回到第一个注册页
Navigator.pushNamed(context, '/registerSecond');
// 替换路由,把当前路由(页面)替换成传入的页面(registerSecond)这样意味着栈中当前页面已经不存在了,可以从当前页面直接返回至根页面
// Navigator.of(context).pushReplacementNamed('/registerSecond');
},
)
],
),
));
}
}

置顶帖跳转路由

import 'package:flutter/material.dart';
import 'package:flutter_app/pages/tabs.dart';

class RegisterSecondPage extends StatelessWidget {
const RegisterSecondPage({Key key}) : super(key: key);


@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("登录")),
body: Center(
child: Column(
children: <Widget>[
SizedBox(
height: 40,
),
Text("完成"),
RaisedButton(
child: Text("确定"),
onPressed: () {
// 将栈中的所有路由置为空,并将指定路由放入栈中
Navigator.of(context).pushAndRemoveUntil(
// 直接跳转回根路由, 根路由为index=3
new MaterialPageRoute(builder: (context) => new Tabs(index:3)),
(route) => route == null
);
},
)
],
),
));
}
}

Flutter--替换路由、指定跳转路由_flutter


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  b1UHV4WKBb2S   2023年11月13日   34   0   0 裁剪ideflutter
  b1UHV4WKBb2S   2023年11月13日   27   0   0 flutterDart
45VoiS2mj7n5