当前位置: 首页 > wzjs >正文

合肥 网站建设公司厦门推广平台较好的

合肥 网站建设公司,厦门推广平台较好的,亿网科技有限公司,微信建站网站下面是一个完整的 GetX 示例,演示如何在一个组件中更新状态,并在另一个组件中获取更新后的数据。我们将使用 GetX 的状态管理工具(GetxController Obx/GetBuilder)。 1. 定义 Controller 首先,创建一个 GetxControll…

下面是一个完整的 GetX 示例,演示如何在一个组件中更新状态,并在另一个组件中获取更新后的数据。我们将使用 GetX 的状态管理工具(GetxController + Obx/GetBuilder)。


1. 定义 Controller

首先,创建一个 GetxController 来管理状态。

counter_controller.dart
import 'package:get/get.dart';class CounterController extends GetxController {// 使用 Rx 包裹的响应式变量RxInt count = 0.obs;// 更新状态的方法void increment() {count.value++;}
}

2. 在 WidgetA 中更新状态

创建一个按钮组件,点击时调用 increment() 更新状态。

widget_a.dart
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'counter_controller.dart';class WidgetA extends StatelessWidget {final CounterController controller = Get.put(CounterController());WidgetA({super.key});Widget build(BuildContext context) {return ElevatedButton(onPressed: () {// 调用 Controller 的方法更新状态controller.increment();},child: const Text('Increment Counter'),);}
}

3. 在 WidgetB 中获取状态

另一个组件监听 count 的变化,并实时显示最新值。这里提供两种方式:

方式 1:使用 Obx(响应式更新)
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'counter_controller.dart';class WidgetB extends StatelessWidget {WidgetB({super.key});Widget build(BuildContext context) {final CounterController controller = Get.find<CounterController>();return Obx(() => Text('Current Count: ${controller.count.value}',style: Theme.of(context).textTheme.headlineMedium,),);}
}
方式 2:使用 GetBuilder(局部更新)
class WidgetB extends StatelessWidget {WidgetB({super.key});Widget build(BuildContext context) {return GetBuilder<CounterController>(builder: (controller) {return Text('Current Count: ${controller.count.value}',style: Theme.of(context).textTheme.headlineMedium,);},);}
}

4. 整合到主页面

将两个组件放在同一个页面中测试。

main.dart
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'widget_a.dart';
import 'widget_b.dart';void main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({super.key});Widget build(BuildContext context) {return GetMaterialApp( // 注意:必须用 GetMaterialApphome: Scaffold(appBar: AppBar(title: const Text('GetX Example')),body: const Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: [WidgetB(), // 显示状态SizedBox(height: 20),WidgetA(), // 更新状态],),),),);}
}

效果

  • 点击 WidgetA 的按钮时,CounterController 中的 count 会递增。
  • WidgetB 会自动刷新并显示最新的计数器值。

关键点说明

  1. Get.put() vs Get.find()

    • Get.put():注册 Controller(通常在首次使用时调用)。
    • Get.find():获取已注册的 Controller(无需重复创建)。
  2. 响应式 vs 非响应式

    • Obx:监听 .obs 变量,变化时自动刷新(需配合 Rx 类型)。
    • GetBuilder:手动调用 update() 时刷新(适合非响应式变量)。
  3. GetMaterialApp

    • 必须使用 GetMaterialApp 替代 MaterialApp,这是 GetX 的根上下文。

补充:如何手动触发更新?

如果在 CounterController 中不使用 .obs,可以通过 update() 方法通知界面刷新:

class CounterController extends GetxController {int count = 0;void increment() {count++;update(); // 通知 GetBuilder 刷新}
}

此时 WidgetB 必须使用 GetBuilder 才能生效。


通过这个例子,你可以清晰看到 GetX 的状态更新跨组件共享状态的流程。GetX 的语法更简洁,适合中小型项目快速开发。

http://www.dtcms.com/wzjs/151894.html

相关文章:

  • 打开网站无反应怎么做新闻软文推广案例
  • seo网站地图外链互换平台
  • 网站后台表格教育培训机构
  • 网页设计与网站建设实训报告产品策划方案怎么做
  • 建造个网站花多少钱百度知识营销
  • 运输 织梦网站模板处理事件seo软件
  • wordpress默认模版seo技术平台
  • 备案个人网站名称大全武汉网站运营专业乐云seo
  • 网站深度功能国际新闻直播
  • 做网站IP信息流广告优化师
  • 免费注册个人网站seminar什么意思中文
  • 做外贸 网站没有邮箱怎么找seo交流网
  • 天津网站搜索引擎优化关键词排名提高方法
  • 什么是oa系统郑州网站关键词优化外包
  • 徐州网站定制现在比较好的营销平台
  • 新闻网站建设评比规则怎么在百度推广自己的网站
  • 专门做正品的网站有哪些深圳百度快速排名优化
  • 网站如何接广告赚钱竞价排名软件
  • 上海全国网站建设百度手机助手官网下载
  • 弹性web做网站好不好整合营销理论主要是指
  • linux视频播放网站微信营销策略有哪些
  • 方案网站百度网讯科技客服人工电话
  • 深圳网站建设 网站制作 网站设计【迅美】旧版网站建设流程步骤
  • 一流的锦州网站建设产品推广怎么做
  • 西宁那有做网站的网站seo推广优化
  • 卫生局网站建设方案网络营销章节测试答案
  • 电子商务网站建设管理论文太原seo自媒体
  • 上海专业高端网站建设百度广告代理商
  • 海伦网站建设推广游戏赚钱的平台有哪些
  • 怎么做百度网站验证码小程序制作流程