颤振利用注解生成可自定义的路由的实现

  


  

  

这是一个简单的颤振路由生成库,只需要少量的代码,然后利用注解配合源代码生成,自动生成路由表,省去手工管理路由代码的烦恼。

  

<>强特性

  
      <李>自定义路由名称李   <李>自定义路由动画   <李>自定义路由参数   <李>自定义路由逻辑李   
  

<强>依赖
  

        依赖关系:   #你的其它常规的依赖性   route_annotation: ^ 0.1.0      dev_dependencies:   #你其他dev_dependencies这里   build_runner: ^ 1.5.0   route_generator: ^ 0.1.2      之前      

  

<强>单次构建
  

  

在项目根目录中运行颤振build_runner构建运行酒吧,可以在需要时为项目生成路由代码。这会触发一次性构建,该构建遍历源文件,选择相关文件,并为它们生成必要的路由代码。虽然这很方便,但如果您不必每次在模型类中进行更改时都必须手动构建,那么你可以选择持续构建。

  

<>强持续构建
  

  

在项目根目录中运行颤振酒吧运行build_runner手表来启动观察者,它可以使我们的源代码生成过程更加方便。它会监视项目文件中的更改,并在需要时自动构建必要的文件。

  

  

           注释   描述               路由器   此注解用来标志某个为颤振应用程序的类,并以此生成相应的路由代码         RoutePage   此注解用来注解一个路由页面         RouteParameter   一个用来标志页面参数的注解,只为可选参数设计。用于RoutePage。         RouteField   此注解用来标志一个完全自定义的路由,被注解的对象必须作为路由页面类静态字段         PageRouteBuilderFuntcion   这个注解用来标识一个路由页面的RouteFactory静态方法         RoutePageBuilderFunction   这个注解用来标识一个路由页面的RoutePageBuilder静态方法         RouteTransitionBuilderFunction   这个注解用来标识一个路由页面的TransitionBuilder静态方法         RouteTransitionDurationField   这个注解用来标识一个自定义路由页面的过渡时长            

  


  

  

<强>定义路由应用
  

        @Router ()   类DemoApp延伸StatefulWidget {   @override   _DemoAppState createState()=比;_DemoAppState ();   }      类_DemoAppState延伸State{   @override   小部件构建(BuildContext上下文){   返回MaterialApp (   initialRoute:“/?>//isInitialRoute为真实表示它将作为初始页面   @RoutePage (isInitialRoute:真)   类主页延伸StatelessWidget {   @override   小部件构建(BuildContext上下文){   返回脚手架();   }   }   之前      

<强>定义路由页面参数

  

对于单个参数
  

        @RoutePage (params: [RouteParameter(“标题”)))   类>   Navigator.of(上下文).pushNamed (   ROUTE_ONE_ARGUMENT_PAGE,   参数:“标题为空”,   );   之前      

注意事项:
  

  

对于单个参数的路,由利用导航器进行导航的时候参数即为原始参数。

  

对于多个参数
  

        @RoutePage (params:(RouteParameter(“标题”),RouteParameter(“副标题”)])   类TwoArgumentPage延伸StatelessWidget {   最终字符串标题;   最终字符串副标题;      TwoArgumentPage ({。标题、关键关键this.subTitle}):超(关键:键);      @override   小部件构建(BuildContext上下文){   返回脚手架();   }   }      之前      

导航
  

        Navigator.of(上下文).pushNamed (   ROUTE_TWO_ARGUMENT_PAGE,   参数:{   “标题”:_titleController.text.isNotEmpty   & # 63;_titleController.text   :“标题为空”,   “副标题”:_subTitleController.text.isNotEmpty   & # 63;_subTitleController.text   :“子标题为空”,   },   );   之前      

注意事项:
  

  

对于多个参数的路,由利用导航器进行导航的时候参数必须为Map<字符串,dynamic>。

  

颤振利用注解生成可自定义的路由的实现