getx getbuilder使用方法

CounterBinding:

class CounterBinding extends Bindings {
  @override
  void dependencies() {
    Get.lazyPut(() => CounterController());
  }
}

CounterController:

class CounterController extends GetxController {
  int count = 0;
  
  void increase(){
    count += 1;
    update();
  }
}

CounterPage:

class CounterPage extends StatelessWidget {

  final controller = Get.find<CounterController>();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("Counter"),
      ),
      body: Center(
        child: GetBuilder<CounterController>(builder: (logic) {
          return Text("${controller.count}", style: const TextStyle(fontSize: 50),);
        }),
      ),
      floatingActionButton: FloatingActionButton(
        child: const Icon(Icons.add),
        onPressed: controller.increase,
      ),
    );
  }
}

变量可以是普通的声明方式,也可以转换成反应式变量。

有什么不同呢?简单来说,假如需要使用GetX和Obx,那就需要使用反应式变量。反应式变量在改变时就会通知使用它们的地方,并实时局部刷新。且内部做了优化,若是变量与上一次比相同,那么则不会更新。

posted @ 2024-01-17 09:50  吾爱吃鱼  阅读(176)  评论(0)    收藏  举报