flutter_bloc使用将从下图的三个维度说明 [flutter_bloc] 前言 首先,有很多的文章在说flutter bloc模式的应用,但是百分之八九十的文章都是在说,使用StreamController +StreamBuilder搭建bloc,提升性能的会加上InheritedWidget,这些文章看了很多,真正写使用bloc作者开发的flutter_bloc却少之又少。 蛋痛,各位叼毛,就不能好好说说flutter_bloc的使用吗?非要各种抄bloc模式提出作者的那俩篇文章。现在,搞的杂家这个伸手党要自己去翻文档总结(手动滑稽)。 使用框架,不拘泥框架,在观察者模式的思想上,灵活的去使用flutter_bloc提供Api,这样可以大大的缩短我们的开发时间! 相关Api白嫖地址:flutter_bloc相关Api flutter_bloc GitHub:https://github.com/felangel/bloc Pub:https://pub.dev/
优秀的全局数据管理方式 flutter_bloc,完美的业务逻辑和界面UI代码分层隔离。flutter_bloc_test,bloc也可以mock测试,完全脱离界面耦合。 调用的是流式API,这和我们平常调用API 接口的方式有点不一样,平常是一次调用一次返回,而流式调用是一次调用多次返回,因此我们可以使用dart 的 stream API 来处理5、但是更好的方式是,使用flutter_bloc ,这样,我们可以将界面UI 和 逻辑部分做到很好的隔离,方便维护全局数据管理Flutter应用中可以使用Flutter_bloc这个全局数据管理库来更好地管理全局数据。 多语言和主题设置的支持Flutter提供了国际化和主题管理API,我们可以将应用所需的各种语言和主题资源文件集中存放,并在应用启动时根据用户选择的语言和主题载入相关资源文件,这部分我使用flutter_bloc 在Flutter应用中,我们可以使用HTTP请求向ChatGPT发送请求,所有的逻辑全部都在flutter_bloc 封装的 逻辑中完成,当然这里用到了 flutter pub 上别人提供的 dart
// home_page_games.dart import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart // categories_success_widget.dart import 'package:flutter/material.dart'; import 'package:flutter_bloc // category_item.dart import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart // game_by_category_bloc.dart import 'package:equatable/equatable.dart'; import 'package:flutter_bloc // games_by_category_widget.dart import 'package:flutter/material.dart'; import 'package:flutter_bloc
另一部分组件则消费事件 [在这里插入图片描述] *** 2 BloC 的基本使用 BloC是一种架构模式也是一种编程思想,在Flutter中使用BloC时,首先要引入bloc库 dependencies: flutter_bloc 代码如下: import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc 定义的 Bloc 角色,代码如下: import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:intl/intl.dart'; /
2.通过 flutter_bloc 实现状态管理: 源码位置 我们前面说过,状态管理的目的在于:让状态可以共享及在更新状态时可以同步更新相关组件显示,且将状态变化逻辑和界面构建进行分离。 flutter_bloc 是实现状态管理的工具之一,它的核心是:通过 Bloc 将 Event 操作转化成 State;同时通过 BlocBuilder 监听状态的变化,进行局部组件构建。 class CountState { final int value; const CountState({this.value = 0}); } 最后是 Bloc ,新版的 flutter_bloc flutter_bloc 只是 状态管理 的工具之一,而其他的工具,也不会脱离这个核心。 四、官方案例 - github_search 解读 1. 案例介绍:源码位置 为了让大家对 flutter_bloc 在逻辑分层上有更深的认识,这里选取了 flutter_bloc 官方的一个案例进行解读。
基于 flutter_bloc 的状态管理 状态类的核心逻辑应该在于界面的 构建逻辑,而业务数据的维护,我们可以提取出来。 这里通过 flutter_bloc 来将秒表中数据的维护逻辑进行分离,由 bloc 承担。 这里用的是 flutter_bloc ,你完全也可以使用其他的状态管理来实现类似的分离。工具千变万化,但思想万变不离其宗。谢谢观看 ~
widget这里是我封装的一些自定义组件,里面包括,在列表里面播放视频的控件等 所以,需要那些库呢,这里我贴一下 pull_to_refresh: ^1.5.8 flutter_bloc: ^ video_player: ^0.10.8+1 chewie: ^0.9.8+1 neeko: ^0.0.6 其中 : debounce_throttle 是因为搜索的时候要输入关键字,控制调用接口的频率; flutter_bloc
✅ 开发者: Felix Angelov ✅ 赞助者: Very Good Ventures, Stream, Miquido ✅ 版本: flutter_bloc: ^8.0.1(编写该文的时候) BLoC 提供我们的 BLoC import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import
flutter_bloc 导入了 Flutter 包。 四、检查源代码结构 查看库的代码仓库是否有 android/、ios/ 等原生代码目录。 47 flutter_bloc[48] 8.1.6 - 一个基于 BLoC(Business Logic Component)设计模式的 Flutter 状态管理库,解耦业务逻辑和 UI。 /pub.dev/packages/flare_flutter [47] table_calendar: https://pub.dev/packages/table_calendar [48] flutter_bloc : https://pub.dev/packages/flutter_bloc [49] pull_to_refresh: https://pub.dev/packages/pull_to_refresh
许多软件包(其中最著名的可能是provider和flutter_bloc)在BuildContext上引入了扩展方法,以更简洁地访问注入的依赖项。
image.png image.png ---- 这里通过 flutter_bloc 对更新/下载状态进行管理,所以在下载时,你可以随意切换到其他界面而不用担心下载进去会重置的问题。
//模拟耗时 return String.fromCharCodes(first.map((e) => e + count)); } } 复制代码 ---- 题外话: 如果你使用过flutter_bloc
Provider 的升级版,提供更好的性能和灵活性,但是说哪个更好,其实不能一概而论,毕竟不同的人会有不同的编码习惯,当然这里可以设计得灵活一些,具体全局状态管理可以替换,即便你想使用 GetX,或者是 flutter_bloc
1)); //模拟耗时 return String.fromCharCodes(first.map((e) => e + count)); } } ---- 题外话: 如果你使用过flutter_bloc
---- 最后,是加载页最核心的业务逻辑,该项目是通过 flutter_bloc 来进行状态管理的。
---- 最后,是加载页最核心的业务逻辑,该项目是通过 flutter_bloc 来进行状态管理的。
HttpWeatherRepository(api: OpenWeatherMapAPI(), client: http.Client()); }); 或者是使用bloc: import 'package:flutter_bloc
和尚在之前尝试 EventChannel 时曾经用到过 Stream 流数据,现在准备学习一下 flutter_bloc 时也主要用到 Stream 来做异步处理,于是简单学习一下何为 Stream
使用 这边介绍下使用,对官方的用法做了一些调整 调整心路的历程,可参照:flutter_bloc使用解析---骚年,你还在手搭bloc吗! 这里就不重复写怎么使用了,使用明细可参照:flutter_bloc使用解析---骚年,你还在手搭bloc吗!
shared_preferences zefyr image_picker sqflite url_launcher flutter/foundation flutter_webview_plugin flutter_bloc