【发布时间】:2021-12-14 19:04:42
【问题描述】:
我在 2 条路线中使用 Obs/Obx,一条运行良好,一条不行。控制器中有 2 个 obs 变量。
import 'package:get/get.dart';
class CountController extends GetxController {
final vcount = 0.obs;
final ncount = 0.obs;
static CountController get to => Get.find<CountController>();
@override
void onInit() {
super.onInit();
}
setVcount(int vehnum) {
vcount(vehnum);
}
setNcount(int notenum) {
ncount(notenum);
}
}
我在应用程序抽屉 (vcount) 中的 ListTile 上使用的那个按预期工作。另一个是在 appbar 动作上,这是这个 appbar 上的唯一动作。如果 ncount 为 0,我想禁用 TextButton。
appBar: AppBar(
actions: <Widget> [
Obx(() =>
TextButton(
child: _appBarChild(),
onPressed: () => nCountController.ncount.value == 0 ? null : _switchView(),
// onPressed: () => _switchView(),
),
),
],
)
ncount 值是从路由的子节点设置的。
nCountController.setNcount(_queryResult.length);
一切都是一样的,导入controller.dart,“final (nC)countController = CountController.to;”,设置obs vars等,唯一的区别是小部件的类型,但是当我运行它时,我得到了错误:
======== 小部件库捕获的异常=================================== ====================== 构建 Obx 时抛出以下消息(具有 builder,dirty,state:_ObxState#11cd1): [Get] 检测到 GetX 使用不当。 您应该只对将要更新的特定小部件使用 GetX 或 Obx。 如果您看到此错误,您可能没有在 GetX/Obx 中插入任何可观察变量 或将它们插入 GetX 认为适合更新的范围之外 (例如:GetX => HeavyWidget => variableObservable)。 如果您需要更新父窗口小部件和子窗口小部件,请将每个窗口小部件包装在 Obx/GetX 中。
我是否遗漏了什么或 Obx 在应用栏中不起作用?
【问题讨论】:
标签: flutter observable flutter-getx