Flutter GetX使用

这篇具有很好参考价值的文章主要介绍了Flutter GetX使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

下载地址:
https://pub-web.flutter-io.cn/packages/get

导入依赖:

dependencies:
  get: ^4.6.5

导入头文件:

import 'package:get/get.dart';

使用 Obx() 、 GetX<T>()

创建全局数据 Counter,继承 GetxController

class Counter extends GetxController {
  /// 在使用GetX时,我们必须通过在值的末尾添加以下内容使变量可被观察到 **obs**在值的末尾加上然后,
  /// 当变量发生变化时,应用程序中依赖它的其他部分将得到通知。
  var count = 0.obs; // 等同于 RxInt count = 0.obs;

  increment() => count.value++;
}

添加依赖:

  /// 注入依赖
  Counter controller = Get.put(Counter());

添加组件 Obx() ,监听显示数据:

/// 监听数据: Obx 返回一个组件
Obx(
	() => Text('您点击了${controller.count}次'),
),

/// GetX<T>() 等同于 Obx()
GetX<Counter>(
	builder: (_) {
	return Text('您点击了${_.count}次');
	},
),

改变数据:

/// 改变数据
controller.increment();

使用 GetBuilder<T>()

创建全局数据 MyController 继承 GetxController

class MyController extends GetxController {
  var number = 0;

  add() {
    number++;
    update();// 监听数据更新
  }
}

添加依赖:

  MyController controller = Get.put(MyController());

添加组件 GetBuilder<T> :

              GetBuilder<MyController>(
                  init: controller,
                  initState: (_) {},
                  dispose: (state) {},
                  builder: (_) {
                    return Column(
                      children: [
                        Text('您点击了${_.number}次'),
                        ElevatedButton(
                          child: const Text("Click"),
                          /// 改变数据
                          onPressed: () => _.add(),
                        ),
                      ],
                    );
                  },
                ),

使用 ValueBuilder<T?>

                /// ValueBuilder 监听数据
                ValueBuilder<int?>(
                  initialValue: 0,
                  onDispose: () {},
                  onUpdate: (p0) => print("$p0"),
                  builder: (value, updater) {
                    return Column(
                      children: [
                        Text('您点击了$value次'),
                        ElevatedButton(
                          child: const Text("Click"),
                          onPressed: () {
                            value = (value ?? 0) + 1;
                            updater(value);//更新数据
                          },
                        ),
                      ],
                    );
                  },
                ),

在添加的依赖是全局的,考虑到内存释放问题,在页面deposit的时候需要释放controller

  
  void dispose() {
    super.dispose();
    /// 清除单例数据
    Get.delete<MyController>();
  }

如果需要到下一个页面访问该数据,需要使用 Get.find<T>() 函数:

MyController controller = Get.find<MyController>();

数据监听展示:

               GetBuilder(
                  init: controller,
                  builder: (_) {
                    return Column(
                      children: [
                        Text("${controller.number}"),
                        ElevatedButton(
                          child: const Text("Click"),
                          onPressed: () {
                            _.add();// 更新数据,上个页面的数据也会随之改变!!!
                          },
                        ),
                      ],
                    );
                  },
                )

此时会出现一个问题,就是如果想创建两个同类型的model(即 runtimeType 相同)需要如何区分呢?这时需要用到 tag 参数,主要下面三个函数:

/// 添加依赖
MyController controller = Get.put(MyController(), tag: "one");
MyController controller = Get.put(MyController(), tag: "two");

/// 访问数据
MyController controller = Get.find<MyController>(tag: "one");
MyController controller = Get.find<MyController>(tag: "two");

/// 删除数据
Get.delete<MyController>(tag: "one");
Get.delete<MyController>(tag: "two");

上述主要用到 GetX状态管理功能,如果想使用它的路由管理功能需要将 MaterialApp 改为 GetMaterialApp,这时候是不需要 content 的,例如页面 push文章来源地址https://www.toymoban.com/news/detail-567147.html

Get.to(() => const Page());

到了这里,关于Flutter GetX使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • flutter使用getx进行数据状态管理,实现页面响应式

    flutter使用getx进行数据状态管理,实现页面响应式

    无论是什么样的应用,都还是需要最基础的数据来支撑的,而且不同的页面之间可能需要共享数据状态,这就显得数据状态管理非常有必要了。因为我这里使用了get依赖库,所以就可以直接在项目中使用getx来管理状态,不想再使用别的框架了。而且getx使用起来也挺方便的。

    2024年01月22日
    浏览(9)
  • Flutter中GetX系列六--GetxController/GetView使用详情

    在实际的项目开发过程中,我们不可能把UI代码、业务逻辑都放在一起处理,这样对项目的架构、代码的可读性、后期的维护将会是致命的,好在 GetX 为我们提供了 GetxController , GetxController 主要的作用是用于UI代码与业务逻辑分离开来。 这里主要讲解使用 GetxController 动态获取

    2024年02月10日
    浏览(10)
  • 【Flutter】Flutter GetX 传递参数

    在 Flutter 开发中,状态管理和数据传递是两个非常重要的环节。今天,我们将介绍一个强大的库——GetX,它可以帮助我们更高效地进行状态管理和数据传递。本文的重点包括: 了解 GetX 是什么以及它的主要功能 学习如何在 Flutter 中安装和使用 GetX 掌握如何使用 GetX 进行参数

    2024年02月05日
    浏览(10)
  • Flutter 状态管理之GetX库

    Flutter 状态管理之GetX库

      Flutter使用的是声明式UI,是通过状态去更新UI组件的,因此我们首先就要学习状态的使用。同样为了简化原本的状态使用,我们会使用Getx库。   之前说要写Flutter,一拖就是一年多,有些不好意思。现在都24年了,终于等到你,下面还是按照我们最属于的思路来吧。 首

    2024年01月23日
    浏览(9)
  • Flutter GetX 之 国际化

    今天给大家介绍一下 GetX 的国际化功能,在日常开发过程中,我们经常会使用到国际化功能,需要们的应用支持 国际化,例如我们需要支持 简体、繁体、英文等等。 上几篇文章介绍了GetX的 路由管理 和 状态管理,看到大家的点赞和收藏,还是很开心的,说明这两篇文章给大

    2024年01月19日
    浏览(19)
  • 对Flutter GetX的一些理解

    1.内部实现了 路由管理 ,相比目前主流的fluro框架更轻量,并且路由跳转无需上下文对象,支持自定义路由中间件和动态路由传参等功能。 2.提供两种简单灵活的实现状态管理的方式。 3.它内部实现了依赖注入,可以快速的获取到某个状态管理器( GetxController )。 4.在实际开发

    2023年04月08日
    浏览(9)
  • Flutter 全能型选手GetX —— 状态管理

    使用篇 简介 依赖管理 路由管理 状态管理 主题配置 多语言配置 离线缓存 网络请求 原理篇 Flutter 从源码看Getx的依赖原理 Obx:响应式状态管理,当数据源变化时,将自动执行刷新组件的方法 GetX:响应式状态管理,当数据源变化时,将自动执行刷新组件的方法 GetBuilder:简单

    2024年02月02日
    浏览(10)
  • flutter getx nested navigation 嵌套路由

    flutter getx nested navigation 嵌套路由

    https://youtu.be/SXER4JVBFps 嵌套路由可以用在如购物确认向导界面切换。 使用 getx 实现嵌套路由,需要如下步骤: 通过 Navigator 组件的 key 属性 用 Get.nestedKey(1) 进行标记 onGenerateRoute 决定去哪个视图界面 initialRoute 初始路由 通过 Get.toNamed 的 id 属性执行嵌套路由 第一步:准备工作

    2024年02月11日
    浏览(9)
  • Flutter GetX 实现 ChatGPT 简单聊天界面

    Flutter 是一款跨平台的移动应用开发框架,而 GetX 是 Flutter 中一种简单易用的状态管理和路由管理工具。本篇我们将使用 Flutter 和 GetX 实现一个简单的聊天界面,以与 ChatGPT 进行交互。 我们需要在 Flutter 项目中引入 GetX 库。在 pubspec.yaml 文件中添加以下依赖: 在 main 函数中添

    2023年04月17日
    浏览(12)
  • Flutter GetX页面跳转动画与属性

    Flutter GetX页面跳转动画解释: fade: 页面渐变动画,新页面会从透明度为 0 的状态渐变到完全显示。 fadeIn: 渐入动画,新页面会从透明度为 0 的状态渐变到完全显示。 rightToLeft: 从右向左滑动动画,新页面从屏幕右侧滑入显示。 leftToRight: 从左向右滑动动画,新页面从屏幕左侧

    2024年02月06日
    浏览(5)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包