route_generator是什么
这是一个简单的 Flutter 路由生成库,只需要少量的代码,然后利用注解配合源代码生成,自动生成路由表,省去手工管理路由代码的烦恼。
特性
- 自定义路由名称
- 自定义路由动画
- 自定义路由参数
- 自定义路由逻辑
依赖
dependencies:
# Your other regular dependencies here
route_annotation: ^0.1.0
dev_dependencies:
# Your other dev_dependencies here
build_runner: ^1.5.0
route_generator: ^0.1.2
生成代码
- 单次构建
在项目根目录中运行flutter pub run build_runner build
,可以在需要时为项目生成路由代码。这会触发一次性构建,该构建遍历源文件,选择相关文件,并为它们生成必要的路由代码。虽然这很方便,但如果您不必每次在模型类中进行更改时都必须手动构建,那么你可以选择持续构建。
- 持续构建
在项目根目录中运行flutter pub run build_runner watch
来启动watcher,它可以使我们的源代码生成过程更加方便。它会监视项目文件中的更改,并在需要时自动构建必要的文件。
route_annotation
annotation | description |
---|---|
Router |
此注解用来标志某个为 Flutter App 的类,并以此生成相应的路由代码 |
RoutePage |
此注解用来注解一个路由页面 |
RouteParameter |
一个用来标志页面参数的注解,只为可选参数设计。用于 RoutePage 。 |
RouteField |
此注解用来标志一个完全自定义的路由,被注解的对象必须作为路由页面类静态字段 |
PageRouteBuilderFuntcion |
这个注解用来标识一个路由页面的 RouteFactory 静态方法 |
RoutePageBuilderFunction |
这个注解用来标识一个路由页面的 RoutePageBuilder 静态方法 |
RouteTransitionBuilderFunction |
这个注解用来标识一个路由页面的 TransitionBuilder 静态方法 |
RouteTransitionDurationField |
这个注解用来标识一个自定义路由页面的过渡时长 |
代码示例
定义路由 App
@Router()
class DemoApp extends StatefulWidget {
@override
_DemoAppState createState() => _DemoAppState();
}
class _DemoAppState extends State<DemoApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
initialRoute: "/",
onGenerateRou