GetX 状态管理

Future<void> init() async {
  Get.put(TapController());
}

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await init();
  runApp(const MainApp());
}

在开始阶段把TapController put压入内存

后面需要用的时候可以直接:

Get.find<TapController>()....   调用实例

在需要刷新小部件的时候可以选择

1:  GetBuilder<TapController>(builder:(_){... })  或者 GetX<...>(builder:(_){...})

2:  Obx(() { ... })   

方法2需要在TapController class里把对应的参数后加 .obs

Obx和GetX<MyController>和GetBuilder<MyController>的区别:
1: Obx的Controller作用域是在外面的,而GetX<MyController>的Controller作用域只限于当前函数体里面的.
2: GetBuilder<MyController>和GetX<MyController>的区别在于GetBuilder<MyController>的性能会更高一点

import 'package:get/get.dart';
 
class CountController extends GetxController {
  var count = 0;
 
  void increment() {
    count++;
    update(['jimi_count']);
  }
}

import 'package:flutter/material.dart';
import 'package:flutter_getx_example/GetXControllerUniqueIDExample/CountConroller.dart';
import 'package:get/get.dart';
 
class GetXControllerUniqueIDExample extends StatelessWidget {
 
  CountController countController = Get.put(CountController());
 
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("GetX Obx---GetXController"),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            GetBuilder<CountController>(
              builder: (controller) {
                return Text(
                  "计数器值为: ${controller.count}",
                  style: TextStyle(color: Colors.red, fontSize: 30),
                );
              },
            ),
            GetBuilder<CountController>(
              id: 'jimi_count',
              builder: (controller) {
                return Text(
                  "计数器值为: ${controller.count}",
                  style: TextStyle(color: Colors.green, fontSize: 30),
                );
              },
            ),
            SizedBox(height: 20,),
            ElevatedButton(
              onPressed: () => countController.increment(),
              child: Text("增加"))
          ],
        ),
      ),
    );
  }
}

只有update里设置的才会刷新,如果不填都会刷新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值