上篇文章中的路由配置是直接配置在main.dart
中,为了降低代码的耦合度,下面将路由配置分离出来。
Routes.dart
import 'package:flutter/material.dart';
import 'package:flutterdemo/route_pages/BottomNav.dart';
import 'package:flutterdemo/route_pages/PageOne.dart';
final routes = {
'/': (context) => BottomNav(),
'/pageone': (context, {arguments}) => PageOne(arguments: arguments)
};
Route onGenerateRoute (RouteSettings settings) {
final String name = settings.name;
final Function routeBuilder = routes[name];
if (routeBuilder != null) {
if (settings.arguments != null) {
final Route route = MaterialPageRoute(
builder: (context) => routeBuilder(context, arguments: settings.arguments)
);
return route;
}else {
final Route route = MaterialPageRoute(
builder: (context) => routeBuilder(context)
);
return route;
}
}
}
main.dart
import 'package:flutter/material.dart';
import './pages/route/Page.dart';
import 'package:flutterdemo/routes/Routes.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget{
@override
Widget build(BuildContext context) {
return MaterialApp(
onGenerateRoute: onGenerateRoute,
initialRoute: '/',
);
}
}