GETX Error: Conditions must have a static type of 'bool'

GETX Error: Conditions must have a static type of 'bool'

首先,我正在使用 getx 状态管理。从 API 接收数据时可能会有延迟。 所以我尝试使用循环进度指示器但出现错误。

error: Conditions must have a static type of 'bool'. (non_bool_condition at [app] lib\screens\app\app.dart:56)

import 'package:get/get.dart';

class LoadingController extends GetxController {
  late RxBool isLoading;

  void getLoading() {
    isLoading = true.obs;
    Future.delayed(const Duration(seconds: 2), () {
      isLoading = false.obs;
    });
  }

  @override
  void onInit() {
    getLoading();
    super.onInit();
  }
}

所有页面均由无状态小部件组成

LoadingController loading = Get.put(LoadingController());

child: loading.isLoading
                      ? Center(
                          child: CircularProgressIndicator(),
                        )
                      : Container(
                          decoration: BoxDecoration(
                            color: cCardColor,
                            borderRadius: BorderRadius.circular(8.r),
                          ),

我不想全状态翻页,但我找不到办法

发生此错误是因为您定义了一个可观察变量,但像普通变量一样使用并为其赋值

您使用了 Observable 变量,因此您必须使用 ObxGetX 小部件来重建 UI。

像这样更改 UI 代码:

LoadingController loading = Get.put(LoadingController());

child: Obx(()=>loading.isLoading.value
                      ? Center(
                          child: CircularProgressIndicator(),
                        )
                      : Container(
                          decoration: BoxDecoration(
                            color: cCardColor,
                            borderRadius: BorderRadius.circular(8.r),
                          ),
    ),

另外,控制器也有问题。请检查以下代码。

import 'package:get/get.dart';

class LoadingController extends GetxController {
  RxBool isLoading = false.obs;

  void getLoading() {
    isLoading(true);
    Future.delayed(const Duration(seconds: 2), () {
      isLoading(false);
    });
  }

  @override
  void onInit() {
    getLoading();
    super.onInit();
  }
}