flutter架构设计(基于getx的路由)
⽬前的项⽬架构,是完整依赖于 get 这⼀框架,pub.dev 中排名第⼀的like 也证明了其在⼤众中的喜爱程度.
lib 下我仅有两个⽂件夹,common 和 pages
common
存放绝⼤部分可与业务逻辑抽离的抽象接⼝,公共 widget,公共构造⽅法,const 值等等,不过⽬前我也存放了⼀些与业务耦合的对象,接下来⼀⼀解释.
entir ies
entiries
存放 jsonToModel 转出的 model,该层实际与 pages 耦合,⽬前放在此
extensio n
存放对系统Foundation 类的拖展,⽬前业务较⼩,我只拖展了 array 这个⽅法,将 swift 中的数组的⾼阶函数拖展了⼀下
这⾥顺便提⼀下框架中的⽂件导出,我采⽤的是将每个⽂件夹都做成⼩型的 library 导出
这样做的好处是,可以减少在使⽤时头⽂件的导⼊,导致业务⽂件中,import ⼗分多⽽且乱,特别是业务页⾯中,对⼦控件的引⼊等等.
Foundation 类其实都可以拖展⼀下,毕竟系统类拖展⽅法这么好的优点⼀定不能浪费啊, String,image,int,double,date,random等等,后续我会在业务成熟后进⾏完整的展⽰的.
impl
对系统的抽象代理类,进⾏抽象,封装成 widget 回调.
flutter 很多的控件,其中的代理需要我们⾃⼰创建⼀个 widget 去实现,但是有时候我们希望简单实现掉这个类,然后把需要的属性抛出,放到业务中去实现.⽐如我⽬前实现的SliverPersistentHeaderDelegateImpl就是实现掉SliverPersistentHeaderDelegate,然后吧
builder,maxExtent,minExtent,shouldRebuild都抛出去,让业务去决定,省去了⾃⼰创建类的⿇烦.
la ngs
国际化,⽬前国际化我只是做了单页⾯切换,这东西需要定义很多的英⽂,实际使⽤的时候⽂本全部都要⽤英⽂,不过 getx 可以将国际化的代码简化到极致,只要⼀个 tr 属性即可实现,⼗分推荐尝试.
m iddlew a r es
flutter pubmiddlew
⽬前我只做了两个路由中间件,⼀个是欢迎页⾯,⼀个是登录路由,get 的路由功能真的是⼗分的完美.
举例登录路由:
只要在路由页⾯中绑定⼀个登录中间件
直接可以实现⽆耦合的登录判断拦截.
r o utes
业务中最核⼼的路由模块.全部使⽤ get 的路由跳转,使⽤的是命名路由跳转
names.dart
pages.dart
routes.dart
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论