对于全局共享的数据,很多情况下我们都是使用Get.put和Get.find来实现的,它们是 GetX 框架提供了一种方便的方式来管理应用程序状态和访问依赖项。 Get.put函数 Get.put 函数用于将一个对象注册为单例,以便在整个应用程序中重用。它通常用于注册 控制器、服务、数据存储类 等全局性的依赖项,使它们可以在整个应用程序...
(2)put和find GetX中的数据管理者叫做XxxGetxController,通过GetInstance单例对象去管理controller(只展示部分核心代码): 和Provider其实是非常类似的,都是通过范型去作为key存储和查找,但和Provider不一样的是,Provider在一颗子树上是唯一的,而GetX中没有树形结构,所以要使用多个Controller就需要加上tag去区分。顺便提一...
Get.put和Get.find是通过一个内部全局的静态Map来管理,所以在传递和存放时就脱离了InheritedWidget,结合Obx,在对获取到的GetxController的 value 时会有个addListener的操作,从而实现Stream的绑定和更新 可以说 GetX 内部有很多“魔法”,这些魔法或者是对 Flutter API 的 Hook、或者是直接脱离 Flutter 设计的自定义实现...
注意:在上面的示例中,我使用了getPages和GetPage,这是GetX 5.x版本中引入的新路由管理方式。 如果你使用的是旧版本的GetX,你可能需要使用home属性和initialBinding。 然而,对于简单的应用或当你不希望将控制器与特定路由绑定时,你可以直接在需要的地方使用Get.put()和Get.find<>()。 (3)在页面中使用控制器 常...
Controllercontroller=Get.find();//是的,它看起来像魔术,Get会找到你的控制器,并将其提供给你。你可以实例化100万个控制器,Get总会给你正确的控制器。 1. 2. 补充: 在Getx中,Get.find 的作用是查找并返回注册在Getx依赖注入系统中的控制器实例。一般情况下,一次 Get.put(MyController()) 调用将会注册一个...
import 'package:get/get.dart'; 插件 这个getx代码生成插件,我花了不少精力去完善,功能已经比较齐全了,希望对大家有所帮助。 欢迎大家提issue,提issue之前,请务必认真查看文档:GetX代码生成IDEA插件,超详细功能讲解,确保想提的需求,在本插件里面未被实现;上次有个老哥给我连开三个issue,提的需求都是早已实现的功...
一、Get的依赖注入源码解析 1、 Get.put 每次我们存一个对象的时候都会使用Get.put()。要用的时候都是Get.find()。 那么Getx是如何将我们需要的对象保存起来?而且还可以跨页面共享数据的呢? 接下来,带着疑问去源码寻找我们需要的答案。 首先我们来看一看我们put的时候的代码 ...
在HomePage中,我们使用Get.put来创建CountController的实例,并使用Obx来监听计数器的变化并更新UI。 在DetailPage中,我们使用了GetX提供的路由管理方式,通过GetPage配置了一个名为'/detail'的路由。 当然我们在全局的页面上需要这么写 用bindsings 这么注册全局的gext ...
在GetX范式下,不再通过context传递状态管理器,而是通过put/find获取; main.dart改造:将原MaterialApp替换为GetMaterialApp,使App能够拥有GetX的特性,GetMaterialApp内部的参数与MaterialApp相同; image.png GetX范式下逻辑的编写 需求:点击页面右下角的按钮,每点击一次,页面中间现实的数字+1; ...
在GetX中,put(), putAsync(), 和 lazyPut() 方法都用于向依赖注入系统中添加对象,但它们的行为有所不同。 put():这个方法会立即创建并添加对象。 当你调用 Get.put(Service()) 时,Service 的实例会立即被创建并添加到依赖注入系统中。 putAsync():这个方法用于异步创建并添加对象。