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,那就需要使用反应式变量。反应式变量在改变时就会通知使用它们的地方,并实时局部刷新。且内部做了优化,若是变量与上一次比相同,那么则不会更新。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界