【发布时间】:2021-08-19 16:32:00
【问题描述】:
我正在尝试使用 Getx。我有一个 Home 类。在 Home 内部我有一个选项卡视图。
return Scaffold(
appBar: AppBar(
centerTitle: true,
bottom:TabBar(
controller: controller.controller,
tabs: controller.myTabs,
),
actions: [
Obx(
() => Center(
child: Text(controller.count.toString()),
),
),
],
),
body: Padding(
padding: const EdgeInsets.all(8.0),
child: TabBarView(
controller: controller.controller,
physics: const NeverScrollableScrollPhysics(),
children: [
AddPage(),
WordsPage(),
在 AddPageController 中,我从数据库中获取一个列表。我想在主页中显示列表中的项目数:
actions: [
Obx(
() => Center(
child: Text(controller.count.toString()),
),
),
],
这是我在 AddPageController 中的方法:
class AddController extends GetxController {
RxInt count = 0.obs;
@override
void onInit() {
getAddedVocabs();
super.onInit();
}
Future<void> getAddedVocabs() async {
final result = repository.getVocabsFromdb();
vocabs.addAll(result);
count.value = vocabs.length;
}
当 AddController 被绑定时,来自onInit 的 getAddedVocabs(); 方法被调用。现在如何在 Home 中触发Obx?
我想用WordsPage(), 和WordsPageController, 来做到这一点。
在其他控制器中调用 HomeController 来调用 obs 值是一种好习惯吗? :
Future<void> getAddedVocabs() async {
final result = repository.getVocabsFromdb();
vocabs.addAll(result);
Get.find<HomeController>().count.value = vocabs.length;
}
【问题讨论】:
标签: flutter flutter-getx