GetX状态管理Flutter不改变值

发布于 2025-01-13 05:28:29 字数 1088 浏览 1 评论 0原文

我有非 obs 有状态类,它返回数据列表

Class OvertimeDetails extends StatefulWidget {
  List<DataGetOvertime> listSelectedOT = [];
  bool isLongPressEnable = false;
  final String jenisPermit;
  Function() refreshState;
  OvertimeDetails(
      {Key key,
      this.jenisPermit,
      this.listSelectedOT,
      this.isLongPressEnable,
      this.refreshState})
      : super(key: key);

  @override
  _ListOvertimeState createState() => _ListOvertimeState();
}

,然后我将其作为 Rx() 调用到父类,

Rx<OvertimeDetails> listOvertimeDet;

void initState(){
 listOvertimeDet = OvertimeDetails(
        jenisPermit: widget.jenisPermit,
        isLongPressEnable: _isLongPressEnabled,
        listSelectedOT: []).obs;

}

我想通过在应用程序栏上显示它来监听 OvertimeDetails 中选定列表的值更改,如下所示,但它不起作用。但是,当我从列表中选择数据后按一次热重载时,它可以正常工作,在该值正确收听后。

Obx(
          () => Text(listOvertimeDet.value.listSelectedOT == null
              ? "Multiple Approve"
              : "${listOvertimeDet.value.listSelectedOT.length} item selected"),
        )

I have non obs stateful class that return list of data

Class OvertimeDetails extends StatefulWidget {
  List<DataGetOvertime> listSelectedOT = [];
  bool isLongPressEnable = false;
  final String jenisPermit;
  Function() refreshState;
  OvertimeDetails(
      {Key key,
      this.jenisPermit,
      this.listSelectedOT,
      this.isLongPressEnable,
      this.refreshState})
      : super(key: key);

  @override
  _ListOvertimeState createState() => _ListOvertimeState();
}

then I call it to the parent class as Rx()

Rx<OvertimeDetails> listOvertimeDet;

void initState(){
 listOvertimeDet = OvertimeDetails(
        jenisPermit: widget.jenisPermit,
        isLongPressEnable: _isLongPressEnabled,
        listSelectedOT: []).obs;

}

I want to listen value change of selected list from OvertimeDetails by show it on app bar like this and it didn't work. But, it work properly when I press hot reload once after I selected the data from list, after that value listen correctly.

Obx(
          () => Text(listOvertimeDet.value.listSelectedOT == null
              ? "Multiple Approve"
              : "${listOvertimeDet.value.listSelectedOT.length} item selected"),
        )

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼泪淡了忧伤 2025-01-20 05:28:29
 // use this way
 // GetxController 

final employeeModelList = List<EmployeeModel>.empty(growable: true).obs;
 
 // use this way
 // GetxController 

final employeeModelList = List<EmployeeModel>.empty(growable: true).obs;
 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文