【发布时间】:2021-12-30 13:58:09
【问题描述】:
有一个显示预定时间的文本,基本上,文本的颜色应该根据时间而改变,所以如果预定时间在未来,那么它不应该改变它的颜色,如果它是过去那么它的颜色颜色应变为红色。预定时间是通知应该出现的时间和通知出现的时间应该改变,三元操作正常工作但只有当我点击另一个小部件来改变它的状态时,它不会自行改变状态。我正在使用 getx,所以我也尝试了 Obx,但没有奏效。我该如何解决这个问题?
Visibility(
visible: todoController.todos[index].date ==
'' &&
todoController.todos[index].time == ''
? false
: true,
child: Obx(() => Text(
(todoController.todos[index].date != now)
? '${todoController.todos[index].date!}, ${todoController.todos[index].time}'
: 'Today, ${todoController.todos[index].time}',
style: GoogleFonts.notoSans(
color: (run(
todoController
.todos[index].date,
todoController
.todos[index].time)
.compareTo(tz.TZDateTime.now(
tz.local)) >
0)
? Theme.of(context).hintColor
: Colors.redAccent,
fontSize: 20.0,
decoration:
(todoController.todos[index].done)
? TextDecoration.lineThrough
: TextDecoration.none,
))),
)
TodoController:
class TodoController extends GetxController {
var todos = <Todo>[].obs;
@override
void onInit() {
List? storedTodos = GetStorage().read<List>('todos');
if (storedTodos != null) {
todos = storedTodos.map((e) => Todo.fromJson(e)).toList().obs;
}
ever(todos, (_) {
GetStorage().write('todos', todos.toList());
});
super.onInit();
}}
【问题讨论】:
-
请提供控制器代码以便更好地理解
-
我正在使用 getx
-
你用
Obx包裹你的小部件了吗? -
是的,但没用
-
向我们展示您是如何使用
Obx包装小部件的。
标签: flutter conditional-operator flutter-getx