修改MyApp ,注册新路由:"new_page2":(context)=>EchoRoute(),
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
routes: {
//"new_page":(context)=>NewRoute(),
"new_page2":(context)=>EchoRoute(),
},
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
新建路由界面,获取路由参数
class EchoRoute extends StatelessWidget {
@override
Widget build(BuildContext context) {
//获取路由参数
var args=ModalRoute.of(context).settings.arguments;
return Scaffold(
appBar: AppBar(
title: Text("New route"),
),
body: Center(
//直接展示参数内容
child: Text(args),
),
);
}}
在打开路由时传递参数
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.display1,
),
FlatButton(
child: Text("open new route"),
textColor: Colors.blue,
onPressed: () {
//在打开路由时传递参数
Navigator.of(context).pushNamed("new_page2", arguments: "参数传递到子页面");
// Navigator.pushNamed(context, "new_page");
// Navigator.push(context,
// new MaterialPageRoute(builder: (context) {
// return new NewRoute();
// }));
},
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
), // This trailing comma makes auto-formatting nicer for build methods.
);
}
}
