首页
学习
活动
专区
圈层
工具
发布

Flutter一个轻量且强大的插件:GetX 之状态管理

obs,使用简单的.obs即可使任何变量成为可观察的。...创建计数器页面 使用Get.put()实例化业务类 final Controller c = Get.put(Controller()); 我们在页面导航中显示出计数器的值。...title: Obx(() =>Text('Click:${c.count}')), elevation: 0.0, ), 按钮触发自增方法,每次count+1 floatingActionButton...多个页面同步更新显示计数器,只需要在另外的页面使用final Controller c = Get.find();即可找到一个正在被其他页面使用的Controler,同样在UI中,想显示该值并自动更新,...使用 Obx(() => Text("${c.count}")); 这样其他一个页面中修改了count,存在栈内的页面观察并显示了该变量的widget都会得到更新,同步显示最新结果。

1.8K20

Flutter 系列之GetX的学习(1) --> 状态管理

依赖管理: GetX 提供了一种智能方法来管理 Flutter 应用程序中的依赖项,例如视图控制器。GetX 将从内存中删除任何当前未使用的控制器。...读取状态:通过 x 这个 getter 公开了 _x 的值,允许外部读取。 修改状态:通过 increment() 方法,状态可以被修改(即 _x 的值递增)。...user = User().obs; 第二步 在ui中使用响应式变量 Obx 概念 Obx 是 GetX 中用于实现响应式 UI 的小部件。...它的主要作用是监听可观察变量(如 .obs 创建的变量)的变化,并在变化时自动更新其子树。 工作原理 可观察变量:通过将变量定义为 .obs,GetX 会将其转化为可观察对象。...控制器一定不要在你的UI中,把你的TextEditController,或者你使用的任何控制器放在你的Controller类中。 你是否需要触发一个事件来更新一个widget,一旦它被渲染?

92010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Flutter之GetX集成及使用详解

    在 Flutter 应用开发过程中,状态管理、路由管理在应用框架中扮演着重要角色。目前主流的解决方案有 Google 官方的 Provider,三方的 GetX、Bloc、 fish-redux 等。...items = [].obs;final myMap = {}.obs; // 自定义类 - 可以是任何类final user = User().obs; 获取响应式变量的值...Obx 刷新界面: name.value = "123"isLogged.value = truecount.value = 1number.value = 12.0 对于其他数据类型需要调用 update...Obx 即可实现响应式更新,即变量的值发生变化时自动刷新界面: Obx(() => Text("${count.value}")) 数据变化监听 除了使用 Obx 实现界面数据自动刷新外,GetX 提供了多种手动方式对响应式变量进行数据变化监听...4.GetX 插件的使用 为了在项目中方便使用 GetX ,可以选择安装 GetX 插件,使用 GetX 可以快速创建 GetX 的页面模板,并且可以通过快捷键快速使用 GetX 相关功能。

    11.4K46

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

    _msg = msg; } } 如果在Java中,图一时方便,直接在构造函数里面传值,然后需要的值越来越多,导致需要增加该构造函数传参,因为强耦合很多类,一改构造函数,爆红一大片(Dart构造函数可选参数的特性...:_InstanceBuilderFactory类,我们传入dependedt对象会存入这个类中 _singl 这个map存值的时候,不是用的put,而是用的putIfAbsent 如果map中有key...GetStream 实例,添加到了Obx中的 RxNotifier() 实例;RxNotifier() 实例中有一个 subject(GetStream ) 实例,Rx类型中数据变化会触发 subject...:将RxInterface.proxy中原来的值,重新赋给自己,至此 _ObxState 中的 _observer对象地址,进行了一番奇幻旅游后,结束了自己的使命 图示 [Obx监听转移] 总结 Obx...中是在路由里面去回收这些实例的,但是,如果你没使用GetX的路由,又用Obx,你会发现,GetXController居然无法自动回收!!!

    5.4K53

    Flutter 状态管理之GetX库

    三、状态更新UI   下面我们通过状态来更新UI,比如我们将点击按钮将文本内容改成大写,再点击改成小写,下面我们修改_HomePageState类中的代码,如下所示: class _HomePageState...test.toUpperCase() : test.toLowerCase())这行代码,在初始情况下显示为小写,然后我们点击按钮调用changeText()函数,函数中更改isUppercase 的值...然后在changeText()方法中修改可观察变量的值。...最后使用Obx包裹需要局部刷新的组件,例如:Obx(() => Text(test.value)),当可观察变量值更新时,Obx包裹中的内容就会进行刷新。   ...Get.put(HomeController()),得到控制器对象,然后在Text中通过控制器得到里面的值,同样可以调用里面的方法,这样我们就将业务和UI分离了。

    3.2K01

    Flutter GetX使用---简洁的魅力!

    ,头皮发麻 GetX实现了动态路由传参,也就是说直接在命名路由上拼参数,然后能拿到这些拼在路由上的参数,也就是说用flutter写H5,直接能通过Url传值,OMG!...:Obx(),这样可以愉快的到处写定点刷新操作了 Obx()方法刷新的条件 只有当响应式变量的值发生变化时,才会会执行刷新操作,当某个变量初始值为:“test”,再赋值为:“test”,并不会执行刷新操作...下面解释来自官方README文档 这里尝试了下,将整个类对象设置为响应类型,当你改变了类其中一个变量,然后执行更新操作,只要包裹了该响应类变量的Obx(),都会实行刷新操作,将整个类设置响应类型,需要结合实际场景使用...BLoC或Controller类中调用你的路由),当你的应用程序被编译到web时,你的路由将出现在URL中。...,来对相应的GetXController进行回收 这个通用控件,我也给getx提了PR,一直在审核 就算这个控件的PR通过了,集成到getx中,getx低版本也无法使用,没辙 这边我给出这个通用回收控件代码

    9.1K103

    Flutter 多语言、主题切换之GetX库

    库前面我们讲述了状态管理的使用,实际上GetX是非常强大的,功能很多,本篇文章中我们将介绍GetX的多语言切换和主题切换等功能。...), ])), ); } }   上面属于GetX的常规使用,然后就是在body中根据当前的item下标来确定显示什么内容,底部的bottomNavigationBar...Get的Translations ,进行键值的切换,zh_CN是中文,en_US是英文,里面通过键获取对应的值,那么这一部分我们就写好了,后续如果有新的字符添加进来就依葫芦画瓢。...五、切换语言 ① my_home.dart   现在为了是我们的切换语言生效,在我们之前直接使用字符串的地方,现在就需要更改为Local中的键了,首先我们修改一下my_home.dart中的代码,如下图所示...Getx处理页面显示的语言设置项目,切换语言和获取语言。

    2.2K01

    GetX代码生成IDEA插件,超详细功能讲解(透过现象看本质)

    ] 这是多次完善后的功能选择弹窗 [getx_new] 鄙人是个十足的颜值党,这次最新版本的页面,我做了很多考量 首页随着各位靓仔提的各种需求,Select Function,从最初的俩个功能,增加到现在的七个功能...,是放在类的成员变量作用域 这个作用域是在实例化构造函数之前起效的 所以我们在添加被实例的Page的时候,成员变量的作用域直接被触发,GetXController就被注入 PageView触发机制 PageView...触发被添加Widget,是触发对应Widget的build方法 切换到哪个Widget,就触发对应Widget的build方法 有了上面这层理解,就很容易解决PageView的问题了 只需要将注入过程放在...,所以无法做回收操作 那只能从外部入手,我就写了一个通用控件,来对相应的GetXController进行回收 这个通用控件,我也给getx提了PR,一直在审核 就算这个控件的PR通过了,集成到getx中...GetXController了 这种回收方式在GetBuilder和Obx俩种刷新机制中,都是通用的 回收的时机:是当前页面被回收的时候 唯一麻烦的:需要你手动把GetBindWidget这个控件,引入到自己的项目中

    2.1K61

    Flutter 网络请求之Dio库

    :Flutter 状态管理之GetX库,创建了一个可观察的变量,然后写了一个请求网络的方法,使用了Dio库的Get请求,请求一个API地址,你可以将这个地址在浏览器中测试,确保它可以返回值。...这是我请求的结果,如下图所示:   通过网络请求会返回一个response 对象,我们将对象转换为Json字符串,然后再获取字符串中的imgurl的值,也就是这个图片的网络地址链接,最后再更新这个...imgPath的值,Obx()包裹的内容就会刷新,下面我们运行一下看看效果: 这是默认的图片,然后点击一下请求网络的按钮,经过短暂的网络延迟之后就会加载出网络请求返回后的图片,如下图所示: 这个请求返回的图片类似于每日一图...然后我们回到network_manager.dart中,在里面新增一个request()方法,其他的代码也做了修改,整体代码如下所示: class NetworkManager { factory...对于dio的封装就到这里了,肯定不是完善了,因为还有很多东西没有考虑到,我们可以根据实际中的需要再去添加,我这里就不赘述了,下面我们结合GetX去使用。

    1.5K00

    Flutter状态管理--GetX的简单使用

    这边介绍下GetX的使用以及常用的方法。 二、 GetX GetX 是 Flutter 上的一个轻量且强大的解决方案:高性能的状态管理、智能的依赖注入和便捷的路由管理。...1、相关优势: 1、轻量,可以模块单独编译,没有用到的功能不会编译进我们的代码 2、刷新简单, 第一种自动刷新 Obx(() => Text()) 第二中手动刷新 update() 3、跨页面交互 4、...路由管理 getx内部实现了路由管理,这个是非常重要的,这样我们就不需要使用其他第三插件,之前都是使用fluro,现在直接不用了,而且getx的路由管理真的真的非常简单。...6、国际化、主题的适配 7、获取全局的BuildContext 这个也是比较喜欢的地方,很多时候弹窗或者其他地方,需要拿到上下文,使用getx,直接获取。...比一级一级传值简单方便舒适吧。 final ProjectCloudSettingController settingC = Get.find(); 7、黑暗模式 可以参考前期写的博客。

    4.3K21

    优化 Flutter 应用开发:探索 ViewModel 的威力

    2.2 常见的状态管理方案:setState、Provider、GetX、Riverpod 等在 Flutter 中,有许多不同的状态管理方案可供选择,每种方案都有其自己的特点和适用场景:setState...:setState 是 Flutter 最基本的状态管理方案之一,它通过调用 setState 方法来更新组件的状态,并触发重新构建UI。...使用 GetX 实现 ViewModel 的步骤如下:创建 Controller 类:编写一个继承自 GetxController 的 Controller 类,定义视图状态和业务逻辑。...以下是一些最佳实践:业务逻辑的委托:ViewModel 应该将复杂的业务逻辑委托给其他类来处理,使得代码更加清晰和可测试。...在这个案例中,我们创建一个名为 TodoListViewModel 的 ViewModel 类,它负责管理待办事项列表的状态和逻辑。

    1.1K10

    STL四种智能指针

    它无法复制到其他unique_ptr,无法通过值传递到函数,也无法用于需要副本的任何标准模板库 (STL) 算法。只能移动 unique_ptr,即对资源管理权限可以实现转。...如期,在离开大括号后,共享基础对象的指针从3->2->1->0变换,最后计数为0时,pa对象被delete,此时使用getX()已经获取不到原来的值。...但是矩阵类的智能指针类设计思想和Point类一样啊,就不能借用吗?答案当然是能,那就是使用模板技术。为了使我们的智能指针适用于更多的基础对象类,我们有必要把智能指针类通过模板来实现。...做法就是上面的代码注释的地方取消注释,取消Woman类或者Man类的任意一个即可,也可同时取消注释,全部换成弱引用weak_ptr。...另外,如果按值而不是按引用给show()传递对象,for_each()将非法,因为这将导致使用一个来自vp的非临时unique_ptr初始化pi,而这是不允许的。

    3.1K41

    C++智能指针

    1.智能指针的由来 C++中,动态内存的管理是通过一对运算符来完成的,new用于申请内存空间,调用对象构造函数初始化对象并返回指向该对象的指针。...对动态内存的管理,可以引申为对系统资源的管理,但是C++程序中动态内存只是最常使用的一种资源,其他常见的资源还包括文件描述符(file descriptor)、互斥锁(mutex locks)、图形界面中的字型和笔刷...如期,在离开大括号后,共享基础对象的指针从3->2->1->0变换,最后计数为0时,pa对象被delete,此时使用getX()已经获取不到原来的值。 对智能指针的改进。...它无法复制到其他unique_ptr,无法通过值传递到函数,也无法用于需要副本的任何标准模板库 (STL) 算法。只能移动 unique_ptr,即对资源管理权限可以实现转。...另外,如果按值而不是按引用给show()传递对象,for_each()将非法,因为这将导致使用一个来自vp的非临时unique_ptr初始化pi,而这是不允许的。

    4.1K40

    Android开发时的多点触控是如何实现的?

    一般我们处理MotionEvent事件,通过MotionEvent.getAction来获取事件类型,这就是单点触控。在单点触控中,会涉及对下面几个消息的处理。...在多点触控时,我们可以通过代码来获取当前移动的是哪根手指。 多点触控 1 识别按下的手指 上面讲解了在什么情况下会触发什么消息,但我们怎么来识别当前按下的是哪根手指呢?...这里实现的效果是:当用户按下第2根手指时,就开始追踪这根手指,无论其他手指是否抬起,只要这根手指没有抬起,就一直显示这根手指的位置,如下如。...View控件,所以继承自View类即可。...值: int index = event.getActionIndex(); 我们知道,当第1根手指按下的时候触发的是ACTION_DOWN消息,随后的手指按下的时候触发的都是ACTION_POINTER_DOWN

    1.5K20
    领券