flutter配置命名路由传递参数
import 'package:flutter/material.dart';
//import 'package:flutter_demo/provider/provider.dart';
import 'package:flutter_demo/routes/routes.dart';
//import 'package:provider/provider.dart';
void main() {
//runApp(ChangeNotifierProvider(create: (context)=>changeNotifier(),child: MyApp()));
runApp(MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
initialRoute: '/',
onGenerateRoute: onGenerateRoute,
);
}
}
import 'package:flutter/material.dart';
import 'package:flutter_demo/tabs/Tabs.dart';
import 'package:flutter_demo/widgets/login/login.dart';
var router = {//配置路由路径
'/': (context, {arguments}) => Tabs(arguments: arguments),//使用arguments传递参数
'/login': (context, {arguments}) => Login()
};
// ignore: top_level_function_literal_block
var onGenerateRoute = (RouteSettings settings) {//onGenerateRoute配置
final String? name = settings.name;
final Function pageContentBuilder = router[name] as Function;
// ignore: unnecessary_null_comparison
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;
}
}
};