作者:闲鱼技术-邻云
背景
在做图片、视频相关功能的时候,相册是一个绕不开的话题,因为大家基本都有从相册获取图片或者视频的需求。最直接的方式是调用系统相册接口,基本功能是满足的,一些高级功能就不行了,例如自定义UI、多选图片等。
我们调研了官方的image_picker,它也是调用系统的相册接口来处理的,可定制程度不高,不能满足我们的要求。所以我们选择自己来开发Flutter相册组件。
我们的组件需要有如下的功能:
- 在app内完成图片、视频的选取,完全不用依赖系统相册组件
- 可以多选图片,支持指定选定图片的总数目
- 在多选的时候UI反应出选择的序号。
- 可以控制视频、图片的选择。例如:只让用户选择视频,图片是灰色的。
- 大图预览的时候可以放大缩小,也可直接加入到选取列表。
设计思路
API使用简单,功能丰富灵活,具有较高的订制性。业务方可以选择完全接入组件,也可以选择在组件上面进行UI定制。
Flutter做UI展现层,具体的数据由各Native平台提供。这种模式,天然从工程上把UI代码和数据代码进行了隔离。我们在开发一个native组件的时候常常会使用MVC架构。Flutter组件的开发的思路也基本类似。整体架构如下:
可以看出&#