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 ...
随机推荐
- Go 基础之基本数据类型
Go 基础之基本数据类型 目录 Go 基础之基本数据类型 一.整型 1.1 平台无关整型 1.1.1 基本概念 1.1.2 分类 有符号整型(int8~int64) 无符号整型(uint8~uint6 ...
- 常见的企业Wiki
企业Wiki(Enterprise Wiki)指适用于企业或组织内部使用的Wiki.与非企业Wiki(如著名的MediaWiki)最根本的不同点在于,企业Wiki是为企业量身定做的Wiki.通过鼓励. ...
- 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(12) -- 使用代码生成工具Database2Sharp生成WPF界面代码
1.代码生成工具Database2Sharp生成WPF界面代码 WPF应用端的基础接口,和Winform端.Vue3+ElementPlus前端一样,都是调用SqlSugar开发框架中的相关业务接口, ...
- Vue之for循环
Vue中for循环的用法总结如下: 1.基本用法 v-for <!DOCTYPE html> <html lang="en"> <head> & ...
- 停止 Windows 11 更新的行之有效的办法,去掉 Windows Defender 实时监控(Win 11)
用设置的方法,几乎无法达成目的.即使禁用 Windows 11 服务里的 "Windows 更新" 服务,系统也会自己将之改成手动,然后再打开. 先找到控制面板 -> 服务, ...
- 从零开始搭建antd4.x + react16 + redux4 + webpack4 + react-router5基础框架解析
以上是2020年10月份的版本,后来,我将xmind进行了完善,文档也写的差不多了,可是,电脑坏了,硬盘换了,文件都没有了.这已经是第三次写这个文档了,思维导图就不更新了,按照几个重点进行说明. 这个 ...
- eclipse安装velocity插件(转)
http://www.jspxcms.com/knowledge/46.html http://blog.csdn.net/superbeck/article/details/5721382 插件地址 ...
- centos7安装glibc_2.28和gcc 8.2
centos7默认的gcc版本是4.8.5,无法编译高版本的glibc 2.28,需要升级到gcc 8.2版本 注:gcc高版本和glibc 2.28不兼容 ## 查看自带默认的glibc strin ...
- 新建vue项目,并引入element ui和axios的步骤
一.新建vue项目 (1)win+R进入命令行 使用cmd (2)切换到需要创建vue项目的盘符下 直接D:就能切换到D盘 (3)使用vue ui指令 进入图形化创建vue项目的界面(注意在创 ...
- netty整合websocket(完美教程)
websocket的介绍: WebSocket是一种在网络通信中的协议,它是独立于HTTP协议的.该协议基于TCP/IP协议,可以提供双向通讯并保有状态.这意味着客户端和服务器可以进行实时响应,并且这 ...