import 'package:flutter/material.dart';
import 'package:flutter_app/luyou/Search.dart';
import 'package:flutter_app/luyou/Form.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
/**
* 统一配置路由跳转
*/
final routes = {
'/form': (context) => FormPageState(),
'/search': (context, {arguments}) => SearchPage(arguments: arguments)
};
@override
Widget build(BuildContext context) {
return MaterialApp(
//固定写法 统一处理
onGenerateRoute: (RouteSettings settings) {
final String name = settings.name;
final Function pageContentBuilder = this.routes[name];
if (pageContentBuilder != null) {
if (settings.arguments != null) {
final Route route = MaterialPageRoute(
builder: (context) =>
pageContentBuilder(context, arguments: settings.arguments));
return route;
} else {
final Route route = MaterialPageRoute(
builder: (context) => pageContentBuilder(context));
return route;
}
}
},
theme: ThemeData(primaryColor: Colors.red),
home: Scaffold(
appBar: AppBar(
title: Text("路由控件 界面跳转测试"),
centerTitle: true,
),
body: Routing(),
),
);
}
}
class Routing extends StatefulWidget {
@override
_RoutingState createState() => new _RoutingState();
}
class _RoutingState extends State<Routing> {
@override
Widget build(BuildContext context) {
return Container(
child: ListView(
children: <Widget>[
RaisedButton(
child: Text("跳转到搜索界面,并传值"),
onPressed: () {
Navigator.pushNamed(context, "/search",
arguments: {"id": "路由传值结果555"});
// Navigator.of(context).push(
// MaterialPageRoute(builder: (context) => SearchPage()),
// );
},
),
RaisedButton(
child: Text("跳转到表单界面并传值"),
onPressed: () {
Navigator.pushNamed(context, "/form");
// Navigator.of(context).push(
// MaterialPageRoute(
// builder: (context) => FormPageState(
// title: "跳转到表单界面并传值",
// )),
// );
},
),
],
),
);
}
}
接受界面
import 'package:flutter/material.dart';
class SearchPage extends StatelessWidget {
final arguments;
SearchPage({this.arguments});
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: FloatingActionButton(
child: Text('返回'),
backgroundColor: Colors.red,
onPressed: () {
Navigator.of(context).pop();
},
),
appBar: AppBar(title: Text("搜索"), centerTitle: true),
body: SearchContent(
arguments: arguments,
),
);
}
}
class SearchContent extends StatelessWidget {
final arguments;
SearchContent({this.arguments});
@override
Widget build(BuildContext context) {
return Container(
child: Column(
children: <Widget>[
Text("搜索界面"),
SizedBox(
height: 10,
),
RaisedButton(
child: Text("点击返回${arguments != null ? arguments['id'] : '0'}"),
onPressed: () {
Navigator.of(context).pop();
},
)
],
),
);
}
}
定义名称一定要是
arguments