简单导航
import 'package:flutter/material.dart';void main(){ runApp(MaterialApp( title: "导航条演示01", home: new FirstScreen(), ));} class FirstScreen extends StatelessWidget{ @override Widget build(BuildContext context){ return Scaffold( appBar: AppBar(title: Text("导航页面")), body: Center( child: RaisedButton( child: Text('查看商品详情页'), onPressed: (){ //onPressed 点击事件 Navigator.push(context, MaterialPageRoute(builder: (context)=>new SecondScreen()));//Navigator导航组件 MaterialPageRoute路由组件 },), ), ); }}class SecondScreen extends StatelessWidget{ @override Widget build(BuildContext context){ return Scaffold( appBar: AppBar(title: Text('WWt商品详情页'),), body: Center( child: RaisedButton( child: Text("返回"), onPressed: (){ Navigator.pop(context); //返回 }, ), ), ); }}
导航传递参数
import 'package:flutter/material.dart';class Product{//商品对象 final String title;//商品标题 final String descriptiom;//商品描述 Product(this.title,this.descriptiom);//构造函数}void main(){ runApp(MaterialApp( title: "导航的数据传递和接收", home: ProductList( products:List.generate(20, (i) => Product("商品$i", "这是一个商品详情,编号$i"))//生成20个导航 ), ));}class ProductList extends StatelessWidget { final List<Product> products; ProductList({Key key,@required this.products}):super(key: key);//构造函数 @override Widget build(BuildContext context) { return Scaffold(//脚手架 appBar: AppBar(title: Text("商品列表"),), body: ListView.builder( itemCount: products.length, itemBuilder: (context,index){ return ListTile( title: Text(products[index].title), onTap: (){//点击时的响应事件 Navigator.push( context, MaterialPageRoute( builder:(context)=>ProductDetail(product:products[index]) ) ); } ); },), ); }}class ProductDetail extends StatelessWidget { final Product product; ProductDetail({Key key,@required this.product}):super(key: key); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text("${product.title}"),), body: Center(child: Text("${product.descriptiom}"),), ); }}
导航返回参数(异步请求和等待)
import 'package:flutter/material.dart';void main(){ runApp(MaterialApp( title: "页面跳转返回数据", home: FirstPage(), ));}class FirstPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text("找电话"),), body: Center( child: RouteButton(), ), ); }}class RouteButton extends StatelessWidget { @override Widget build(BuildContext context) { return RaisedButton( onPressed: (){_navigateToPhone(context);}, child: Text("去找人"), ); } _navigateToPhone(BuildContext context) async{ final result = await Navigator.push( context, MaterialPageRoute(builder: (context)=>zhaoren())); Scaffold.of(context).showSnackBar(SnackBar(content: Text("$result")));//这条是返回参数的重点 }}class zhaoren extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("我是人"), ), body: Center( child: Column( children: <Widget>[ RaisedButton( child: Text("机器人"), onPressed: (){ Navigator.pop(context,"机器人编号:10086"); }, ), RaisedButton( child: Text("人工机器人"), onPressed: (){ Navigator.pop(context,"机器人编号:10087"); }, ), ], ), ), ); }}