如何使用 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 可观察变量?的主要内容,如果未能解决你的问题,请参考以下文章
对 Flutter 应用程序的 getX dart 包中的 RxList 进行排序
如何将可观察对象发布的整数变量绑定到 SwiftUI 中的 textField?