【Bugfix】flutter GetX 使用 Obx 监听 GetxController 时,页面退出 GetxController 无法销毁

2023-03-17 10:12:16 浏览数 (2)

背景

  • 我的页面数据全来自 GetxController ,每次进入时需要重置数据,但 GetX 似乎把 GetxController 保留了,下次在进入页面直接复用了之前的数据,导致数据混乱

尝试

  • 一下调用均不能销毁 GetxController 的引用,下次进来还是会获得之前的 GetxController
代码语言:javascript复制
  @override
  void dispose() {
    super.dispose();
    // _viewModel 继承自 GetxController
    // 以下方法都不行
    _viewModel.dispose();
    _viewModel.onClose();
    Get.delete(tag: widget.tag, force: true);
  }

解决

  • 参考大神的方法
  • 我的解决
代码语言:javascript复制
// 通过 Get.put(tag: widget.tag, contrller); 添加 Controller
_viewModel = Get.put(tag: widget.tag, QuickCalculationPracticeViewModel(model, questionCount));
  • 在 dispose 中使用 GetInstance().delete() 移除
代码语言:javascript复制
  @override
  void dispose() {
    GetInstance().delete<QuickCalculationPracticeViewModel>(tag: widget.tag);
    super.dispose();
  }
  • 参考链接:https://www.coder.work/article/7440554

0 人点赞