GetX 状态管理

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

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

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

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

Get.find()....   调用实例

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

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

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

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

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

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(
              builder: (controller) {
                return Text(
                  "计数器值为: ${controller.count}",
                  style: TextStyle(color: Colors.red, fontSize: 30),
                );
              },
            ),
            GetBuilder(
              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里设置的才会刷新,如果不填都会刷新

你可能感兴趣的:(前端)