如何使用 GetX 可观察变量?

Posted

技术标签:

【中文标题】如何使用 GetX 可观察变量?【英文标题】:How to work with GetX Observable Variables? 【发布时间】:2021-08-30 21:54:46 【问题描述】:

我有一个简单的计时器应用,它的 UI 包含以下代码 sn-p:

body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Container(
              width: 120,
              height: 120,
              child: Obx(
                () => CircularProgressIndicator(
                  value: <== This is what I'm asking about,
                ),
              ),
            ),

我希望 CircularProgressIndicator 像时钟一样递增,每秒或每分钟更改其值 1/60。我的 GetxController 课程开始:

class Controller extends GetxController 
  Timer? timer;
  Duration timerInterval = Duration(seconds: 1);
  var time = 0;
  var strTime = '00:00'.obs;

它的方法名称类似于 startTimer()stopTimer()resetTimer()

如果我让控制器的 time 字段可观察

var time=0.obs;

然后尝试在 CircularProgressIndicator 中使用该值

Obx(
      () => CircularProgressIndicator(
         value: timeController.time.value % 60,
       ),
    ),

我收到一个错误,A value of type 'int' can't be assigned to a variable of type 'RxInt' 以控制器中的标记线为中心:

 void resetTimer() 
if (timer != null) 
  timer!.cancel();
  timer = null;
  time = 0; <== This is the problematic line

strTime.value = '00:00';

我认为我需要用time.value=0; 替换此代码,但这只会创建一个新的错误消息type 'int' is not a subtype of type 'RxInt' of 'function result'。 我做错了什么?

【问题讨论】:

【参考方案1】:

像下面这样用RxInt 替换var 怎么样?

RxInt time = 0.obs;

检查您是否正确导入'package:get/get.dart';

【讨论】:

感谢您的回复,非常感谢。我检查以确认我没有正确导入。并且用RxInt 替换var 没有效果。编译器从其声明中推断出该变量是RxInt

以上是关于如何使用 GetX 可观察变量?的主要内容,如果未能解决你的问题,请参考以下文章

Getx:`.obs` 函数有啥作用?

对 Flutter 应用程序的 getX dart 包中的 RxList 进行排序

如何将可观察对象发布的整数变量绑定到 SwiftUI 中的 textField?

如何对服务中的 BehaviorSubject 变量进行单元测试,它是组件中的可观察对象

如何使用 GetX 使用 Firestore 流填充列表

如何防止用户在颤动中使用 getX 倒退