flutter开发实战-GetX响应式状态管理使用

news2024/11/25 10:59:17

flutter开发实战-GetX响应式状态管理使用

GetX是一个简单的响应式状态管理解决方案。GetX是Flutter的一款超轻、功能强大的解决方案。它将高性能状态管理、智能依赖注入和路由管理快速而实用地结合在一起。这里简单使用一下GetX

一、引入GetX

在工程的pubspec.yaml中引入插件

  get: 4.6.5
    

GetX功能强大,里面包括routes, snackbars, internationalization, bottomSheets, dialogs等等,使用这些功能可以将MaterialApp更改成GetMaterialApp。但是我这里暂时不使用到这些功能。

二、使用GetX

在flutter创建后会有一个计数的示例。这里使用GetxController,Controller中定义变量都是可被观察的。

ZCounterController代码如下

class ZCounterController extends GetxController {
  RxInt timestamp = 0.obs;

  void getTimestamp() {
    print("getTimestamp");
    int cur = DateTime.now().millisecondsSinceEpoch;
    timestamp.value = cur;
  }
}
    

当点击按钮时候,重新获取时间戳,更改timestamp.value的值。

在使用的地方,我们需要实现

final ZCounterController c = Get.put(ZCounterController());

展示用到Obx函数

 Obx(() => Text(
               "获取的timestamp: ${c.timestamp}",
               style: TextStyle(fontSize: 12, color: Colors.white),
             )),

点击按钮调用c.getTimestamp();

效果图如下

在这里插入图片描述
使用完整代码如下

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:get/get.dart';

class ZGetXPage extends StatefulWidget {
  const ZGetXPage({super.key});

  @override
  State<ZGetXPage> createState() => _ZGetXPageState();
}

class _ZGetXPageState extends State<ZGetXPage> {
  @override
  void initState() {
    // TODO: implement initState
    super.initState();
  }

  @override
  void dispose() {
    // TODO: implement dispose
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    // Instantiate your class using Get.put() to make it available for all "child" routes there.
    final ZCounterController c = Get.put(ZCounterController());

    return Scaffold(
      appBar: AppBar(
        title: const Text('测试GetX'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            Container(
              height: 136,
              width: 200,
              color: Colors.blue,
              alignment: Alignment.center,
              child: Obx(() => Text(
                "获取的timestamp: ${c.timestamp}",
                style: TextStyle(fontSize: 12, color: Colors.white),
              )),
            ),
            SizedBox(height: 20,),
            TextButton(
              onPressed: () {
                c.getTimestamp();
              },
              child: Container(
                height: 36,
                width: 100,
                color: Colors.lightGreen,
                alignment: Alignment.center,
                child: Text(
                  '点击获取',
                  style: TextStyle(fontSize: 12, color: Colors.white),
                ),
              ),
            ),
          ],
        )
      ),
    );
  }
}

class ZCounterController extends GetxController {
  RxInt timestamp = 0.obs;

  void getTimestamp() {
    print("getTimestamp");
    int cur = DateTime.now().millisecondsSinceEpoch;
    timestamp.value = cur;
  }
}

    

三、小结

flutter开发实战-GetX响应式状态管理使用

学习记录,每天不停进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1649000.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

药物代谢动力学学习笔记

一、基本概念 二、经典房室模型 三、非线性药物代谢动力学 四、非房室模型 五、药代动力学与药效动力学 六、生物等效性评价 七、生物样品分析方法 基本概念 生物样品&#xff1a;生物机体的全血、血浆、血清、粪便、尿液或其他组织的样品 特异性&#xff0c;specificity&…

运维实施工程师之Linux服务器全套教程

一、Linux目录结构 1.1 基本介绍 Linux 的文件系统是采用级层式的树状目录结构&#xff0c;在此结构中的最上层是根目录“/”&#xff0c;然后在此目录下再创建其他的目录。 在 Linux 世界里&#xff0c;一切皆文件&#xff08;即使是一个硬件设备&#xff0c;也是使用文本来标…

MQTT 5.0 报文解析 03:SUBSCRIBE 与 UNSUBSCRIBE

欢迎阅读 MQTT 5.0 报文系列 的第三篇文章。在上一篇中&#xff0c;我们介绍了 MQTT 5.0 的 PUBLISH 及其响应报文。现在&#xff0c;我们将介绍用于订阅和取消订阅的控制报文。 在 MQTT 中&#xff0c;SUBSCRIBE 报文用于发起订阅请求&#xff0c;SUBACK 报文用于返回订阅结果…

纯干货!Prompt链式方法总结,灵活驾驭各种大模型!

当面对复杂任务的时&#xff0c;单一的Prompt是不够的&#xff0c;我们需要将Prompt链接在一起才能完成。今天这篇文章主要集中在Prompt链式方法介绍用于实现复杂任务生成&#xff0c;其中主要包括&#xff1a;顺序Prompt链、并行Prompt链、抽样Prompt链、树状Prompt链、循环Pr…

SpringBoot实现Config下自动关联.xml、.properties配置信息的实例教程

本篇文章主要讲解在SpringBoot实现Config下自动关联.xml、.properties配置信息的实例教程。 日期&#xff1a;2024年5月4日 作者&#xff1a;任聪聪 .properties文件调用方法 步骤一、打开我们的 .properties 创建一个demo参数如下图&#xff1a; 步骤二、创建一个config的包&…

代码随想录——双指针与滑动窗口(四)

一.1423. 可获得的最大点数 题目详情 解题思路 这里我们每次只能取最左或最右边的卡牌,第一反应其实是使用双指针&#xff0c;通过局部贪心来解决&#xff0c;但是如果两边相等的话用局部贪心无法来判断到底取哪一边&#xff0c;那我们不妨换一个思路&#xff1a; 我们首先任…

uniapp的app端推送功能,不使用unipush

1&#xff1a;推送功能使用htmlPlus实现&#xff1a;地址HTML5 API Reference (html5plus.org) 效果图&#xff1a; 代码实现&#xff1a; <template><view class"content"><view class"text-area"><button click"createMsg&q…

Echarts柱状图横坐标不显示

本人遇到的问题&#xff1a;折线图横坐标可以正常显示 柱状图接收一样的数据在横坐标却显示不了 1.在前端打印是否能够正常接收数据、数据类型是否有误以及数据是否有内容 console.log(typeof optionbar.xAxis.data)console.log(optionbar.xAxis.data) 2.如上确定能够接收到数…

1天搞定SpringBoot+Vue全栈开发 (6)组件化开发

1.NPM使用 2.Vue CLI使用 3.组件化开发 修改App.vue&#xff1a; <template><img alt"Vue logo" src"./assets/logo.png" /><Hello></Hello> </template><script> import Hello from "./components/Hello.vue&q…

2-5 任务:打印九九表

本次实战的目标是通过编写程序实现打印九九乘法表、字符矩形、字符平行四边形和字符菱形等图形&#xff0c;以及解决百钱买百鸡问题和输出素数等实际问题。在实战过程中&#xff0c;我们将学习并掌握以下知识点。 双重循环的使用&#xff1a;通过双重循环实现九九乘法表的打印&…

Vector Laboratories|用于生物偶联疗法BioDesign™ dPEG® Linker连接平台

术语dPEG代表“离散PEG&#xff08;discrete PEG&#xff09;”&#xff0c;这是一种均一的、单分子量&#xff08;MW&#xff09;、高纯度的新一代聚乙二醇聚合物。Vector Laboratorie采用其受专利保护的专有生产工艺&#xff0c;可生产提供适合于各种应用场景&#xff0c;具有…

3月PMP成绩已公布!(附查询流程)

2024年3月PMP考试成绩已出~宝子们抓紧时间查询&#xff0c;没查到的也不要着急&#xff0c;在一周内考试成绩都会以邮件的形式通知给大家~ 下面查询PMP成绩的流程给大家安排上~↓↓↓ 方式一&#xff1a;直接登陆官网查询 1、查询网址&#xff1a;PMI官网&#xff1a;www.pmi.…

【贪心算法】单源最短路径Python实现

文章目录 [toc]问题描述Dijkstra算法Dijkstra算法的正确性贪心选择性质最优子结构性质 Dijkstra算法应用示例Python实现时间复杂性 问题描述 给定一个带权有向图 G ( V , E ) G (V , E) G(V,E)&#xff0c;其中每条边的权是非负实数&#xff0c;给定 V V V中的一个顶点&…

Hive3.0新特性:Materialized Views 物化视图

Materialized Views 物化视图 在 Apache Hive 3.0 中引入了物化视图&#xff08;Materialized Views&#xff09;的支持&#xff0c;它们是预先计算并缓存了查询结果的数据结构&#xff0c;以提高查询性能和降低延迟。物化视图通过将查询的结果存储在物理表中来实现&#xff0…

LeetCode 142.环形链表Ⅱ

题目描述 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内…

解决本地启动项目,用IP地址访问失败问题

解决方法&#xff1a;看看index.html页面有没有 这个标签&#xff0c;将它注释掉

虚幻引擎笔记

虚幻引擎笔记 一、蓝图类二、创建自定义Character蓝图三、操作映射和轴映射 一、蓝图类 Actor&#xff1a;可以放置在关卡中的物体Pawn&#xff1a;相当于游戏角色&#xff0c;可以通过玩家控制器来控制角色&#xff1a;在Pawn的基础上增加了四处走动的功能。创建游戏角色时使用…

[华为OD]C卷 精准核算检测 100

题目&#xff1a; 为了达到新冠疫情精准防控的需要&#xff0c;为了避免全员核酸检测Q带来的浪费&#xff0c;需要精准圈定可 能被感染的人群。现在根据传染病流调以及大数据分析&#xff0c;得到了每个人之间在时间、空间上是 否存在轨迹的交叉现在给定一组确诊人员编号&…

C语言实战项目---通讯录

项目要实现的内容&#xff1a;能够存放100个人的通讯录程序&#xff0c;能够实现联系人数据的存储&#xff0c;删除&#xff0c;修改&#xff0c;查找&#xff0c;展示联系人的信息。 所需知识&#xff1a;结构体&#xff0c;指针&#xff0c;函数................. 废话不多…

代码随想录刷题随记30-贪心4

代码随想录刷题随记30-贪心4 860.柠檬水找零 leetcode链接 比较显然 class Solution {public boolean lemonadeChange(int[] bills) {int []accountnew int[3];for(int cur:bills){if(cur5)account[0];else if(cur10){account[0]--;if(account[0]<0)return false;account…