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里设置的才会刷新,如果不填都会刷新