路由命名
class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), routes: { // 注册路由表 'new_page': (context) => NewRoute(), '/': (context) => MyHomePage(title: 'Flutter Demo Home page') }, ); }}//根据name跳转Navigator.pushNamed(context, 'new_page');//不使用nameclass RouterTestRoute extends StatelessWidget { @override Widget build(BuildContext context) { return Center( child: ElevatedButton( onPressed: () async { var result = await Navigator.push(context, MaterialPageRoute(builder: (context) { return TipRoute(text: '我是提示xxx'); })); print('路由返回值: $result'); }, child: Text('打开提示页'), ), ); }}
import 'package:flutter/material.dart';void main() { runApp(MyApp());}class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage(title: 'Flutter Demo Home Page'), ); }}class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => _MyHomePageState();}class _MyHomePageState extends State<MyHomePage> { int _counter = 0; void _incrementCounter() { setState(() { _counter++; }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text( 'You have pushed the button this many times:', ), Text( '$_counter', style: Theme.of(context).textTheme.headline4, ), TextButton( onPressed: () { Navigator.push(context, MaterialPageRoute(builder: (context) { return RouterTestRoute(); })); }, child: Text('open new route'), ) ], ), ), floatingActionButton: FloatingActionButton( onPressed: _incrementCounter, tooltip: 'Increment', child: Icon(Icons.add), ), ); }}// 创建一个新路由class NewRoute extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('New route'), ), body: Center( child: Text("This is new Route"), ), ); }}class TipRoute extends StatelessWidget { // 接收一个text参数 TipRoute({Key key, @required this.text}) : super(key: key); final String text; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('提示'), ), body: Padding( padding: EdgeInsets.all(18), child: Center( child: Column( children: <Widget>[ Text(text), ElevatedButton( onPressed: () { Navigator.pop(context, '我是返回值'); }, child: Text('返回')) ], ), ), ), ); }}class RouterTestRoute extends StatelessWidget { @override Widget build(BuildContext context) { return Center( child: ElevatedButton( onPressed: () async { var result = await Navigator.push(context, MaterialPageRoute(builder: (context) { return TipRoute(text: '我是提示xxx'); })); print('路由返回值: $result'); }, child: Text('打开提示页'), ), ); }}