组件开发三种方式
-
material或者cupertino
这种被称为Flutter原生开发,其实还是使用了组件库,只是这个组件库的提供者是Flutter官方 -
第三方提供的组件,比如Bruno
有完善文档,有自己的设计特色,如果喜欢,直接用也未尝不可。 -
自己写一套
如何选择?
-
material或者cupertino无法避免,但是很多时候直接使用,麻烦并且跟设计差异较大,总之就是不尽如人意。
-
第三方组件,就看喜不喜欢。最好能和UI设计达成一致。UI也是基于这套组件来设计界面,那么引入使用,大家都方便。
虽然我很想偷懒,直接用Bruno,但是团队还是决定自己写一套。
- 到一定程度,基本上都会有这种想法。大半年以来,一个电商APP跟下来,Flutter基本的也熟练了。material组件太多,根本学不完,常用的也就那么几个。大多数组件听都没听过。
如何自己写?
-
使用组合的方式,按照UI设计。这里最重要的组件就是Container(),其地位就相当于iOS(OC)中的UIView
其他常用的组件有Row,Column,Expanded,Stack(Positioned),SizedBox,GestureDetector(InkWell),Stack,Image(本地和网络)(系统的icon不如UI的切图), Text,TextField,ListView,GridView,Center,Wrap(偶尔用用)。
由以上这些常用组件,基本上可以实现80%左右的需求。
Flutter 布局备忘录 -- 多图警告,干货建议收藏 -
虽然Flutter底层是画图,不过在实际使用中,直接画界面的场景真的不多。(相当于iOS中的贝塞尔曲线画图)
-
有些时候可以考虑使用比Widget更底层的RenderObject。
如何封装?
-
文件夹:这是最容易想到的方法,命名统一,可以在工程中直接使用,很方便。这个肯定会用。
-
Flutter package:这个就相当于iOS开发中的framework。如果组件想跨工程使用,走这一步是迟早的事。本次是UI组件封装,纯Dart封装,所以选这个。
选2 Dart包
-
Flutter Plugin:这个涉及到iOS和Android原生的情况下会用。这个看情况吧,iOS和Android都要实现一遍,然后用Flutter加个外壳。非必要的情况下不会这样做。(这种情况无可避免)











网友评论