【Flutter Unit 重大更新 1 】超好用的组件收藏夹上线
重大更新篇是有重大功能支持是的相关文章,进行介绍,文尾会附带这段时间的更新情况
前言
经过一周的更新,解决了不少bug, 感谢大家的支持,
项目star个数也已破千
Flutter Unit 于今日上线一个重要的功能模块组件收藏夹
,丝滑的操作等你体验。 欢迎star : github.com/toly1994328…
FlutterUnit.apk 下载 |
FlutterUnit mac版 下载 |
Github仓库地址 |
---|---|---|
由于数据库变动,下载新版前,手机中如有旧版,请先卸载。
一、收藏夹整体介绍
1. 收藏夹的操作
收藏夹设计的初衷是: Flutter中的组件非常多,分类页并不明确 作为
集卡癖
的我很想有个收藏的接口,让我能自由收藏分类。 应用中默认给出了12种分类方式,也就是12个收藏夹,且210+组件已录入相应收藏夹
当然你可以自由的创建、修改、删除它们。收藏集还可以指定颜色用以区分。
添加收藏集 |
修改收藏集 |
删除收藏集 |
---|---|---|
2. 组件的收藏与取消操作
数据库表采用
widget
与category
一对多的结构,收录组件。 在每个详情页的右滑菜单中可以查看当前组件的收藏信息, 点击收藏夹名称时
时可以切换该组件是否收录。在收藏夹里面可以左滑删除
删除与数据同步 |
组件加入收藏集 |
收藏集支持多选 |
---|---|---|
3.整体效果
对收藏夹页面整体进行优化,效果如下,保留了默认收藏集。 点击收藏夹会进入收藏的内容,每个item也可以点击进入详情页。
滑动效果 |
长按右菜单滑页 |
详情内长按展示收藏菜单 |
---|---|---|
4.彩蛋: 左右滑栏
很多朋友反映左右滑栏与系统的
侧滑返回冲突
,所以特意设置了滑栏的小彩蛋主页长按底部左侧按钮可打开左侧滑栏
主页长按底部右侧按钮可打开右侧滑栏
详情页长按顶部房子按钮可打开右侧滑栏
长按左菜单滑页 |
长按右菜单滑页 |
详情内长按展示收藏菜单 |
---|---|---|
二、收藏夹实现相关
1. 基于bloc 实现业务逻辑与界面的分离
- 原始数据层面使用
CategoryDao
进行数据库的交互,即增删查改
-
CategoryRepository
负责数据的存储和操作接口,CategoryDbRepository
为数据库资源实现方式 - 这样处理的好处是统一操作接口,未来如果使用线上数据,实现
CategoryNetRepository
即可,其他整体逻辑不需要改变,即方便拓展。
abstract class CategoryRepository {
//切换一个组件在收藏夹中的状态
Future toggleCategory(int categoryId, int widgetId);
// 检查一个组件是否在收藏夹内
Future check(int categoryId,int widgetId);
// 获取一个收藏夹中的所有组件
Future> loadCategoryWidgets({int categoryId = 0});
// 获取所有收藏集
Future> loadCategories();
//添加收藏集
Future addCategory(CategoryPo categoryPo);
//更新收藏集
Future updateCategory(CategoryPo categoryPo);
//删除收藏集
Future deleteCategory(int id);
//查看某个组件在哪些收藏集中
Future> getCategoryByWidget(int widgetId);
}
-
CategoryBloc
负责收藏夹本身的业务操作,根据事件返回状态 -
CategoryWidgetBloc
负责收藏夹中组件的业务操作,根据事件返回状态
- 最后界面根据事件映射出的状态进行显示,即可。
- 这里涉及了很多状态的同步,用bloc就非常方便。(
不引战,状态管理工具你爱用啥用啥。
) - 核心差不多也就这些,其他的就是界面的设计,详细的东西还是自己看看源码吧。
2.收藏的表结构
category表
和widget表
是相对独立的,负责各自的信息记录 通过category_widget表
来建议一对多的关系,剩下的就是sql的能力了。
三、更新记录 1
2020-4-16
fixed " 修改样式无法点击的问题。
fixed " 一些已知文案的错误。
fixed " hero动画闪现不同步问题。
2020-4-17
fixed " 进入收藏页,再回到首页,顶部显示不同步的问题。
fixed " 主页item双击黑屏问题。
feature " 支持详情页【相关链接的栈管理】,
" 即: 点击多个链接,不直接返回主页.
2020-4-18
feature " 小彩蛋: 【长按】底部栏【最左侧按钮】,打开左边菜单栏
" 【长按】底部栏【最右侧按钮】,打开右边菜单栏
fixed " 收藏集的AppBar背景色同主页选中色。
2020-4-19
optimize " 添加收录【LayoutBuilder】组件
optimize " 添加收录【IgnorePointer】组件
optimize " 添加收录【AbsorbPointer】组件
optimize " 添加收录【BackdropFilter】组件
2020-4-21
feature " 使用Sliver优化收藏集的显示
2020-4-24
feature " 完成组件收藏夹功能
尾声
欢迎Star和关注FlutterUnit 的发展,让我们一起携手,成为Unit一员。 另外本人有一个Flutter微信交流群,欢迎小伙伴加入,共同探讨Flutter的问题,期待与你的交流与切磋。
- IOS WebView控件详解
- Java并发学习之synchronized使用小结
- 18.3/18.4/18.5 用keepalived配置高可用集群
- JDK容器学习之Queue:DelayQueue
- React-Native组件之 Navigator和NavigatorIOS
- JDK容器学习之Queue:ConcurrentLinkedQueue
- JDK容器学习之Queue: PriorityQueue
- React Native导航器之react-navigation使用
- Nginx 路由转发配置笔记
- React Native控件之ListView
- Java学习之深拷贝浅拷贝及对象拷贝的两种方式
- [周末课程]什么是“页面业务流程”分析思维导图?如何编写页面假JSON数据? &下一个前端组件“日历”
- Java并发学习之玩转线程池
- Java & PhantomJs 实现html输出图片
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 使用laravel和ECharts实现折线图效果的例子
- Laravel 将数据表的数据导出,并生成seeds种子文件的方法
- Laravel Eloquent ORM 多条件查询的例子
- laravel5.5添加echarts实现画图功能的方法
- thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
- Laravel 创建指定表 migrate的例子
- Laravel find in set排序实例
- Laravel 对某一列进行筛选然后求和sum()的例子
- 关于laravel 数据库迁移中integer类型是无法指定长度的问题
- laravel多条件查询方法(and,or嵌套查询)
- thinkphp框架使用JWTtoken的方法详解
- Laravel创建数据库表结构的例子
- laravel按天、按小时,查询数据的实例
- 浅谈laravel中的关联查询with的问题
- 解决Laravel 不能创建 migration 的问题