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 可根据接收到的数据更新界面。

优点:

  1. 分层和可维护性:BLoC 提供了一种清晰的分层结构,将 UI 层、业务逻辑层和数据层进行解耦,使得代码更易于理解、扩展和维护。它可以帮助团队更好地组织和管理代码。

  2. 可测试性:BLoC 的业务逻辑和状态管理可以单独进行单元测试,从而确保业务逻辑的正确性。这种可测试性可以帮助开发人员快速发现和修复问题,并确保代码在更大规模和复杂性的项目中能够正常工作。

  3. 复用性和扩展性:BLoC 将业务逻辑与 UI 进行解耦,使得可以在不同的页面和组件中复用、共享业务逻辑。这种复用性可以减少重复代码,提高代码的复用性和可维护性。同时,通过增加新的 BLoC 或调整现有的 BLoC,可以轻松地扩展应用程序的功能。

  4. 单向数据流:BLoC 使用单向数据流模型,确保数据的流动方向清晰且可预测。这种单向数据流模型可以减少状态管理方面的复杂性,使得代码更易于追踪和调试。

  5. 异步处理: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框架的更多相关文章

  1. Flutter Bloc状态管理 简单上手

    我们都知道,Flutter中Widget的状态控制了UI的更新,比如最常见的StatefulWidget,通过调用setState({})方法来刷新控件.那么其他类型的控件,比如StatelessWi ...

  2. 即将开源 | 2亿用户背后的Flutter应用框架Fish Redux

    背景 在闲鱼深度使用 Flutter 开发过程中,我们遇到了业务代码耦合严重,代码可维护性糟糕,如入泥泞.对于闲鱼这样的负责业务场景,我们需要一个统一的应用框架来摆脱当下的开发困境,而这也是 Flut ...

  3. Flutter Widget框架概述

    Flutter Widget采用现代响应式框架构建,这是从 React 中获得的灵感,中心思想是用widget构建你的UI. Widget描述了他们的视图在给定其当前配置和状态时应该看起来像什么.当w ...

  4. Flutter跨平台框架的使用-iOS最新版

    科技引领我们前行 [前言] 1:先简单的介绍下Flutter,它是一款跨平台应用SDK,高性能跨平台实现方案(暂时讨论iOS和Android), 它不同于RN,少了像RN的JS中间桥接层,所以它的性能 ...

  5. 浅谈跨平台框架 Flutter 的优势与结构

    作者:个推iOS工程师 伊泽瑞尔 一.背景 目前,移动开发技术主要分为原生开发和跨平台开发两种.其中,原生应用是指在某个特定的移动平台上,使用平台所支持的开发工具和语言,直接调用系统提供的API所开发 ...

  6. flutter Provide 状态管理篇

    Provide是Google官方推出的状态管理模式.官方地址为: https://github.com/google/flutter-provide 现在Flutter的状态管理方案很多,redux. ...

  7. Flutter中高级培训

    Flutter中高级培训 一.简介 Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面.Flutter可以与现有的代码一起工作.本课程全面介绍Flutter ...

  8. flutter_bloc使用解析---骚年,你还在手搭bloc吗!

    前言 首先,有很多的文章在说flutter bloc模式的应用,但是百分之八九十的文章都是在说,使用StreamController+StreamBuilder搭建bloc,提升性能的会加上Inher ...

  9. 【源码篇】Flutter GetX深度剖析 | 我们终将走出自己的路(万字图文)

    前言 人心中的成见是一座大山,任你怎么努力都休想搬动. 这是电影<哪吒>里申公豹说的一句话,也是贯彻整部电影的一个主题:或许这句话引起了太多人的共鸣:35岁职场危机,大厂卡本科学历,无房无 ...

  10. 【译】Java、Kotlin、RN、Flutter 开发出来的 App 大小,你了解过吗?

    现在开发 App 的方式非常多,原生.ReactNative.Flutter 都是不错的选择.那你有没有关注过,使用不同的方式,编译生成的 Apk ,大小是否会有什么影响呢?本文就以一个最简单的 He ...

随机推荐

  1. Go 基础之基本数据类型

    Go 基础之基本数据类型 目录 Go 基础之基本数据类型 一.整型 1.1 平台无关整型 1.1.1 基本概念 1.1.2 分类 有符号整型(int8~int64) 无符号整型(uint8~uint6 ...

  2. 常见的企业Wiki

    企业Wiki(Enterprise Wiki)指适用于企业或组织内部使用的Wiki.与非企业Wiki(如著名的MediaWiki)最根本的不同点在于,企业Wiki是为企业量身定做的Wiki.通过鼓励. ...

  3. 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(12) -- 使用代码生成工具Database2Sharp生成WPF界面代码

    1.代码生成工具Database2Sharp生成WPF界面代码 WPF应用端的基础接口,和Winform端.Vue3+ElementPlus前端一样,都是调用SqlSugar开发框架中的相关业务接口, ...

  4. Vue之for循环

    Vue中for循环的用法总结如下: 1.基本用法 v-for <!DOCTYPE html> <html lang="en"> <head> & ...

  5. 停止 Windows 11 更新的行之有效的办法,去掉 Windows Defender 实时监控(Win 11)

    用设置的方法,几乎无法达成目的.即使禁用 Windows 11 服务里的 "Windows 更新" 服务,系统也会自己将之改成手动,然后再打开. 先找到控制面板 -> 服务, ...

  6. 从零开始搭建antd4.x + react16 + redux4 + webpack4 + react-router5基础框架解析

    以上是2020年10月份的版本,后来,我将xmind进行了完善,文档也写的差不多了,可是,电脑坏了,硬盘换了,文件都没有了.这已经是第三次写这个文档了,思维导图就不更新了,按照几个重点进行说明. 这个 ...

  7. eclipse安装velocity插件(转)

    http://www.jspxcms.com/knowledge/46.html http://blog.csdn.net/superbeck/article/details/5721382 插件地址 ...

  8. centos7安装glibc_2.28和gcc 8.2

    centos7默认的gcc版本是4.8.5,无法编译高版本的glibc 2.28,需要升级到gcc 8.2版本 注:gcc高版本和glibc 2.28不兼容 ## 查看自带默认的glibc strin ...

  9. 新建vue项目,并引入element ui和axios的步骤

    一.新建vue项目 (1)win+R进入命令行  使用cmd (2)切换到需要创建vue项目的盘符下    直接D:就能切换到D盘 (3)使用vue ui指令 进入图形化创建vue项目的界面(注意在创 ...

  10. netty整合websocket(完美教程)

    websocket的介绍: WebSocket是一种在网络通信中的协议,它是独立于HTTP协议的.该协议基于TCP/IP协议,可以提供双向通讯并保有状态.这意味着客户端和服务器可以进行实时响应,并且这 ...