写点什么

Flutter 状态管理 --Getx 学习 2

用户头像
Android架构
关注
发布于: 20 小时前
  • 已经确定依赖已经初始化完成的,需要使用 controller 的 widget


例如


/// 命名路由 GetPage(name: AppRoutes.SPLASH,page: () => SplashPage(),binding: BindingsBuilder.put(() => Get.put(SplashController())),),/// 闪屏界面 class SplashPage extends GetView<SplashController> {@overrideWidget build(BuildContext context) {return Scaffold(body: Image.asset(R.LOGO_SPLASH_ID,width: double.infinity,height: double.infinity,fit: BoxFit.cover,));}}

GetBuilder

  • GetBuilder 相比 Obx,GetBuilder 是手动的状态管理器,需要更改的时候主动需要调用 update();

  • 因为 GetBuilder 是手动的状态管理器,所以相比 Obx,内部没有维护 StreamSubscription,内存消耗就会少


GetBuilder 源码还是很好理解的,点进去看下,就简单介绍下怎么使用


/// 必创参数,回调返回子 widgetfinal GetControllerBuilder<T> builder;/// 默认是 true; 如果 Controller 已经注册,如果是已懒加载的方式注册的,GetBuilder 移除的时候删除/// 删除 controller,如果没有注册调用 init 初始化,GetBuilder 移除的时候删除也删除 controller/// 设置 false,调用 init 初始化,GetBuilder 移除的时候删除也删除 controllerfinal bool global;/// 这个 id 很有用,如果同一个 controller,被多个 GetBuilder 关联,当需要赛选其中一个刷新时候/// 调用 update(['id']);final Object id;/// 同一个类型有多个不同的实例时,tag 区分;唯一 final String tag;/// 默认 true,时候自动回收 controllerfinal bool autoRemove;/// 默


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


认 false 控制当 GetBuilder 移除的时候是否删除内存中的 controllerfinal bool assignId;/// 过滤器,控制刷新时机 final Object Function(T value) filter;/// 对应 state 生命周期的回调 final void Function(State state) initState, dispose, didChangeDependencies;final void Function(GetBuilder oldWidget, State state) didUpdateWidget;/// 当 controller 没有注册的时候,初始化 final T init;

GetX

  • Getx 相比 GetBuilder 实现了自动响应数据变化,

  • Getx 相比 Obx,内部可以初始化 controller,以及 state 生命周期的回调,controller 时候及时回收等;

  • Getx 相比 GetBuilder、Obx 效率要低,

MixinBuilder

  • 看名字就知道融合 Obx、GetBuilder 功能

  • 既可以手动控制刷新,也可以自动刷新;

  • 内存消耗最多的,效率最低的


Getx 还提供很多局部刷新的 weidget ValueBuilder 、ObxValue 等,都很简单,


这里有个很实用的技巧,例如 ObxValue((data) => Switch(value: data.value,onChanged: data, // Rx 有一个 _callable_函数! 你可以使用 (flag) => data.value = flag,),false.obs,),/// 响应数据 data,data();会调用 call()方法,自动赋值,自动刷新 T call([T v]) {

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Flutter状态管理--Getx学习2