как использовать условный рендеринг с наблюдаемым логическим значением getX

#flutter #flutter-getx

Вопрос:

В моем контроллере входа в систему:

 class LoginController extends GetxController {
  final GlobalKey<FormState> loginFormKey = GlobalKey<FormState>();

  late TextEditingController emailController, passwordController;
  var isloading = false.obs;    <<<<<<<<<<<<
...

 

и, на мой взгляд, файл:

  Container(
  color: Colors.blueGrey,
  width: double.infinity,
  height: 150,

  child: Obx(()=>
    Center(
      child: logincontroller.isloading ? CircularProgressIndicator(): Container(),

    ),
  )
)
 

однако я продолжаю получать это сообщение:

33:50: Ошибка: Значение типа «RxBool» не может быть присвоено переменной типа «bool».

Ответ №1:

Попробуйте logincontroller.isLoading.value проверить значение RxBool

Комментарии:

1. спасибо, что решили эту проблему, однако: теперь, когда переменная isloading изменяется на true (при нажатии кнопки входа в систему), индикатор circularprogressindicator не отображается автоматически. он отображается только после того, как я выполню обновление/горячую перезагрузку.

2. в основном виджет не перестраивался. при загрузке значение изменяется с ложного на истинное. дочерний элемент: Obx(()=> Центр( дочерний элемент: logincontroller.isloading.value ? новый ЦиркулярПрогрессИндикатор(): новый контейнер(дочерний: Текст(«привет, это ложь»)), )

3. Как вы меняете значение ?

4. использование кнопки входа в систему для выполнения почтового вызова api. Будущее<void> Контрольный список() асинхронный { загружается = true.obs; //прямо здесь.

5. ты настоящий MVP. это сработало! можете ли вы объяснить мне, почему это так. Даже если стоимость технически изменялась и раньше?