#flutter #flutter-getx
Вопрос:
Я пытаюсь использовать Getx. У меня домашние занятия .Внутри дома у меня есть вид вкладки.
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 привязан , getAddedVocabs();
вызывается метод from onInit
. теперь, как я могу сработать Obx
дома?
Я хочу сделать это с WordsPage(),
и. WordsPageController,
Рекомендуется вызывать HomeController внутри другого контроллера для вызова значения obs? :
Future<void> getAddedVocabs() async {
final result = repository.getVocabsFromdb();
vocabs.addAll(result);
Get.find<HomeController>().count.value = vocabs.length;
}
Ответ №1:
Вопрос: Когда AddController привязан , вызывается метод getAddedVocabs(); из OnInit. теперь, как я могу запустить Obx в домашних условиях?
Ответ: Чтобы ваш Obx работал, просто привяжите свой домашний контроллер к домашнему классу. Obx обновит изменения автоматически.
class HomeController 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;
}
}
class Home extends GetView<HomeController> {
...
actions: [
Obx(
() => Center(
child: Text('${controller.count}'),
),
),
],
}