[Flutter] Router Navigation
2024-08-22 19:18:05
Basic navigation by using 'Navigator.push' & 'Navigator.pop()', for example, we have two screen, screen1 and screen2, we want to navigate between two screens:
// Screen1.dart import 'package:flutter/material.dart';
import 'screen2.dart'; class Screen1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.red,
title: Text('Screen 1'),
),
body: Center(
child: RaisedButton(
color: Colors.red,
child: Text('Go Forwards To Screen 2'),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) {
return Screen2();
}),
);
},
),
),
);
}
}
Screen2.dart:
import 'package:flutter/material.dart'; class Screen2 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.blue,
title: Text('Screen 2'),
),
body: Center(
child: RaisedButton(
color: Colors.blue,
child: Text('Go Back To Screen 1'),
onPressed: () {
Navigator.pop(context);
},
),
),
);
}
}
Using the named route:
In main.dart, we can list all the routes:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
// home: Screen0(),
initialRoute: '/',
routes: {
'/': (context) => Screen0(),
'/first': (context) => Screen1(),
'/second': (context) => Screen2()
},
);
}
}
To be noticed: 'home' & 'initialRoute' cannot be used at the same time.
child: Column(
children: <Widget>[
RaisedButton(
color: Colors.red,
child: Text('Go To Screen 1'),
onPressed: () {
Navigator.pushNamed(context, '/first');
},
),
RaisedButton(
color: Colors.blue,
child: Text('Go To Screen 2'),
onPressed: () {
Navigator.pushNamed(context, '/second');
},
),
],
),
最新文章
- MySql 管理操作常用命令
- 1205索引使用explain
- 序列中找子序列的dp
- win7 解决git clone 连接被拒绝&mdash;hosts文件过期
- 应用dom4j读取xml的例子
- Oracle DataGuard 物理Standby 搭建(下)
- Android SDK更新缓慢或无法更新的解决方法
- jsonsql
- Java_java多线程下载-断点下载-超详细
- Java基础-Eclipse环境搭建(02)
- Gradient Descent 梯度下降法-R实现
- CAP带你轻松玩转Asp.Net Core消息队列
- C#读写Excel实践笔记
- zookeeper原理与安装
- git 配置 BeyondCompare
- 解决spring-boot启动异常Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean
- 夯实基础之--new关键字、instanceOf原理
- MT【201】折线计数
- 移植RTL8188CUS USB-WIFI(移植失败)
- pyhon之函数参数
热门文章
- hive学习(1)
- ubuntu 使用新添加的用户登录只有$解决方法
- MySQL数据库-表操作-SQL语句(二)
- AS3.0绘图API
- tsql获取sqlserver某个库下所有表
- 环境配置 python 3.6+Anaconda+cuda9.0+cudNN7.0+Tensorflow
- NEST 根据id查询
- MQTT协议中的topic
- javascript 区域外事件捕捉setCapture
- hybris backoffice创建product遇到的synchronization问题和解答