flutter BLoC框架
BLoC(Business Logic Component)是一种在Flutter中用于管理状态和处理业务逻辑的设计模式和架构模式。
BLoC 的核心思想是将应用程序的状态、业务逻辑和UI分离开来,以实现单向数据流。
主要组件组成:
Business Logic(业务逻辑):
BLoC 本质上是一个业务逻辑单元,负责处理数据的输入、处理和输出。它通常包含一些方法,用于处理用户的操作、处理网络请求、访问数据库等。
Streams(数据流):
BLoC 使用 Streams 来管理数据的流动。通过 Streams,BLoC 可以根据数据的变化将更新的状态传递给应用程序的其他部分。
Events(事件):
事件是指用户的操作或其他触发器,它们会触发 BLoC 中的业务逻辑。例如,当用户点击一个按钮或滑动页面时,可以触发一个事件,然后 BLoC 可以处理该事件,更新相应的状态。
UI(用户界面):
用户界面层负责显示来自 BLoC 的数据,并将用户的操作转化为事件发送给 BLoC。通常,BLoC 会将处理过的数据通过 Streams 传递给 UI 层,然后 UI 可根据接收到的数据更新界面。
优点:
分层和可维护性:BLoC 提供了一种清晰的分层结构,将 UI 层、业务逻辑层和数据层进行解耦,使得代码更易于理解、扩展和维护。它可以帮助团队更好地组织和管理代码。
可测试性:BLoC 的业务逻辑和状态管理可以单独进行单元测试,从而确保业务逻辑的正确性。这种可测试性可以帮助开发人员快速发现和修复问题,并确保代码在更大规模和复杂性的项目中能够正常工作。
复用性和扩展性:BLoC 将业务逻辑与 UI 进行解耦,使得可以在不同的页面和组件中复用、共享业务逻辑。这种复用性可以减少重复代码,提高代码的复用性和可维护性。同时,通过增加新的 BLoC 或调整现有的 BLoC,可以轻松地扩展应用程序的功能。
单向数据流:BLoC 使用单向数据流模型,确保数据的流动方向清晰且可预测。这种单向数据流模型可以减少状态管理方面的复杂性,使得代码更易于追踪和调试。
异步处理:BLoC 可以方便地处理异步操作,例如网络请求、数据库读写等。通过 Streams,BLoC 可以将来自异步操作的结果传递给 UI 层进行展示。
目录结构
|--lib
|-- blocs (bloc相关)
|-- common (常用类,例如常量Constant)
|-- data (网络数据层)
|-- db (数据库)
|-- event (事件类)
|-- models (实体类)
|-- res (资源文件,string,colors,dimens,styles)
|-- ui (界面相关page,dialog,widgets)
|-- utils (工具类)
flutter BLoC框架的更多相关文章
- Flutter Bloc状态管理 简单上手
我们都知道,Flutter中Widget的状态控制了UI的更新,比如最常见的StatefulWidget,通过调用setState({})方法来刷新控件.那么其他类型的控件,比如StatelessWi ...
- 即将开源 | 2亿用户背后的Flutter应用框架Fish Redux
背景 在闲鱼深度使用 Flutter 开发过程中,我们遇到了业务代码耦合严重,代码可维护性糟糕,如入泥泞.对于闲鱼这样的负责业务场景,我们需要一个统一的应用框架来摆脱当下的开发困境,而这也是 Flut ...
- Flutter Widget框架概述
Flutter Widget采用现代响应式框架构建,这是从 React 中获得的灵感,中心思想是用widget构建你的UI. Widget描述了他们的视图在给定其当前配置和状态时应该看起来像什么.当w ...
- Flutter跨平台框架的使用-iOS最新版
科技引领我们前行 [前言] 1:先简单的介绍下Flutter,它是一款跨平台应用SDK,高性能跨平台实现方案(暂时讨论iOS和Android), 它不同于RN,少了像RN的JS中间桥接层,所以它的性能 ...
- 浅谈跨平台框架 Flutter 的优势与结构
作者:个推iOS工程师 伊泽瑞尔 一.背景 目前,移动开发技术主要分为原生开发和跨平台开发两种.其中,原生应用是指在某个特定的移动平台上,使用平台所支持的开发工具和语言,直接调用系统提供的API所开发 ...
- flutter Provide 状态管理篇
Provide是Google官方推出的状态管理模式.官方地址为: https://github.com/google/flutter-provide 现在Flutter的状态管理方案很多,redux. ...
- Flutter中高级培训
Flutter中高级培训 一.简介 Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面.Flutter可以与现有的代码一起工作.本课程全面介绍Flutter ...
- flutter_bloc使用解析---骚年,你还在手搭bloc吗!
前言 首先,有很多的文章在说flutter bloc模式的应用,但是百分之八九十的文章都是在说,使用StreamController+StreamBuilder搭建bloc,提升性能的会加上Inher ...
- 【源码篇】Flutter GetX深度剖析 | 我们终将走出自己的路(万字图文)
前言 人心中的成见是一座大山,任你怎么努力都休想搬动. 这是电影<哪吒>里申公豹说的一句话,也是贯彻整部电影的一个主题:或许这句话引起了太多人的共鸣:35岁职场危机,大厂卡本科学历,无房无 ...
- 【译】Java、Kotlin、RN、Flutter 开发出来的 App 大小,你了解过吗?
现在开发 App 的方式非常多,原生.ReactNative.Flutter 都是不错的选择.那你有没有关注过,使用不同的方式,编译生成的 Apk ,大小是否会有什么影响呢?本文就以一个最简单的 He ...
随机推荐
- 文心一言 VS 讯飞星火 VS chatgpt (108)-- 算法导论10.1 6题
六.用go语言,说明如何用两个栈实现一个队列,并分析相关队列操作的运行时间. 文心一言: 使用两个栈实现队列的基本思想是利用一个栈(stack1)来处理入队操作,另一个栈(stack2)来处理出队操作 ...
- js滚动条滚动到底部和顶部
<!DOCTYPE html> <html> <head> <title></title> <style type="tex ...
- mysql语句操作
1.从login表中选出name字段包含admin的前10条结果所有信息的sql语句 select * from login where name like %admin% limit 0 ,10; ...
- 2023-10-25:用go语言,假如某公司目前推出了N个在售的金融产品(1<=N<=100) 对于张三,用ai表示他购买了ai(0<=ai<=10^4)份额的第i个产品(1<=i<=N) 现给出K(
2023-10-25:用go语言,假如某公司目前推出了N个在售的金融产品(1<=N<=100) 对于张三,用ai表示他购买了ai(0<=ai<=10^4)份额的第i个产品(1& ...
- t分布及t分布表
http://baike.baidu.com/view/1419652.htm 下表列出了自由度为1-30以及80.100.120等t-分布的单侧和双侧区间值.例如,当样本数量n=5时,则自由度v ...
- python3使用pymsql操作mysql数据库
操作系统 :Windows 10_x64 python版本 :3.9.2 pymysql版本: 1.0.2 MySQL版本: 5.7.38 之前写过一篇关于python操作mysql数据库的文章: ...
- React同构与极致的性能优化
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- 计算机网络之防火墙和Wlan配置
一.防火墙 防火墙(firewall)是一种安全设备,它的位置一般处于企业网络边界与外网交界的地方,用于隔离不信任的数据包 准确点讲,它就是隔离外网和内网的一道屏障,用于保护内部资源信息安全的一种策略 ...
- SQL动态化多个分组查询
现有以下三张表,分别为:diqu(地区表),zhiye(职业表),info(信息表) 最基本的分组查询 1 select dqID,jbID,COUNT(1) from info group by d ...
- [ABC317G] Rearranging
Problem Statement There is a grid with $N$ rows and $M$ columns. The square at the $i$-th row from t ...