命名路由如果在initstate中接收路由參數(shù)鱼响,需要通過重定向路由把參數(shù)轉(zhuǎn)發(fā)到接收參數(shù)的頁面
step1.在main中定義重定向路由
? Widget build(Object context) {
? ? return MaterialApp(
? ? ? home: Tabs(),
? ? ? theme: ThemeData(primaryColor: Colors.green),
? ? ? routes: route,
? ? ? // 重定向路由
? ? ? onGenerateRoute: (RouteSettings settings) {
? ? ? ? print('build route for ${settings.name}');
? ? ? ? var routes = <String, WidgetBuilder>{
? ? ? ? ? ? //在此處設(shè)置路由,如果有單獨(dú)路由表的,需要?jiǎng)h除路由表上的路由
? ? ? ? ? "/newsdetail": (ctx) => NewsDetailPage(settings.arguments),
? ? ? ? };
? ? ? ? WidgetBuilder builder = routes[settings.name];
? ? ? ? return MaterialPageRoute(builder: (ctx) => builder(ctx));
? ? ? },
? ? );
? }
step2。發(fā)起頁面跳轉(zhuǎn)的Navigator.pushNamed
Navigator.pushNamed(context, "/newsdetail",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? arguments: "${this._newList[index]["aid"]}"); //替換路由
step3.接收參數(shù)的頁面
class NewsDetailPage extends StatefulWidget {
? ? //定義接收參數(shù)的構(gòu)造函數(shù)
? final aid;
? NewsDetailPage(this.aid, {Key key}) : super(key: key);
? @override
? _NewsDetailPageState createState() => _NewsDetailPageState(this.aid);
}
class _NewsDetailPageState extends State<NewsDetailPage> {
? _NewsDetailPageState(this.aid);
? var aid;
? List _list = [];
? @override
? void initState() {
? ? // TODO: implement initState
? ? super.initState();
? ? this._getNewsDetail();
? }