Flutter学习笔记 —— 关于GetX框架如何手动注销控制器

Flutter学习笔记 —— 关于GetX框架如何手动注销控制器

前言

最近在开发Flutter项目时,一个登出功能我认为几分钟就能弄完了,直到发现单凭 Getx 的路由跳转并不能自动注销相关的控制器,查阅百度一直无果。

经过花费一定时间查阅Getx 源码后发现
一个拓展吸引了我的注意

内容

extension Inst on GetInterface {
...
 
 
  /// Deletes the `Instance<S>`, cleaning the memory and closes any open
  /// controllers (`DisposableInterface`).
  ///
  /// - [tag] Optional "tag" used to register the Instance
  /// - [force] Will delete an Instance even if marked as `permanent`.
  Future<bool> delete<S>({String? tag, bool force = false}) async =>
      GetInstance().delete<S>(tag: tag, force: force);
 
  /// Deletes all Instances, cleaning the memory and closes any open
  /// controllers (`DisposableInterface`).
  ///
  /// - [force] Will delete the Instances even if marked as `permanent`.
  Future<void> deleteAll({bool force = false}) async =>
      GetInstance().deleteAll(force: force);
...
 
}

Get是继承于 GetInteface 接口,那么自然拥有这个拓展

可以看到里面有两个关键方法,delete() 、deleteAll()

通过翻译可得知,可以通过remove方法移除指定泛型的某个对象

那么知道该怎么删除了,之后上一个我的状态管理代码

代码示例

/**
 * @author Marinda
 * @date 2022/11/24 17:55
 * @desc Get页面管理器
 */
class PageManager{
 
  /*
   * 销毁所有页面数据重新加载!
   * 
   */
  void destoryAllPage(){
    Get.delete<IndexLogic>();
    Get.delete<MyLogic>();
    Get.delete<ContactsLogic>();
    Get.delete<MessageLogic>();
    Get.delete<UpdDetailsLogic>();
    Get.delete<UpdUserLogic>();
    Get.delete<TaskLogic>();
    Get.delete<SearchLogic>();
    Get.delete<ReportLogic>();
    Get.delete<DetailsLogic>();
  }

控制台打印

[GETX] "IndexLogic" onDelete() called
[GETX] "IndexLogic" deleted from memory
[GETX] "MyLogic" onDelete() called
[GETX] "MyLogic" deleted from memory
[GETX] Instance "ContactsLogic" already removed.
[GETX] "MessageLogic" deleted from memory
[GETX] Instance "UpdDetailsLogic" already removed.
[GETX] "UpdUserLogic" deleted from memory
[GETX] "TaskLogic" onDelete() called
[GETX] "TaskLogic" deleted from memory
[GETX] "SearchLogic" deleted from memory
[GETX] "ReportLogic" onDelete() called
[GETX] "ReportLogic" deleted from memory
[GETX] Instance "DetailsLogic" already removed.
[GETX] GOING TO ROUTE /login

结束语

关于 Flutter学习笔记 —— 关于GetX框架如何手动注销控制器 就讲到这里,对你有帮助的话!

  • 点赞
  • 收藏

谢谢你的观看!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值