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

发布于:2024-05-11 ⋅ 阅读:(167) ⋅ 点赞:(0)

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响应式状态管理使用

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


网站公告

今日签到

点亮在社区的每一天
去签到