【问题标题】:`RouteAware`-implementer unsubscribe from any previous dependency?`RouteAware`-implementer 取消订阅任何以前的依赖项?
【发布时间】:2019-10-26 16:17:59
【问题描述】:

以下 sn-p 来自 RouteObserver 的 Flutter 文档:

   @override
   void didChangeDependencies() {
     super.didChangeDependencies();
     routeObserver.subscribe(this, ModalRoute.of(context));
   }

   @override
   void dispose() {
     routeObserver.unsubscribe(this);
     super.dispose();
   }

我不明白为什么didChangeDependencies 也不包括routeObserver.unsubscribe(this)

RouteAware-implementer 是否应该取消订阅任何以前的依赖项?

【问题讨论】:

    标签: flutter flutter-dependencies


    【解决方案1】:

    这是安全的,因为如果 this 已经在订阅者列表中,subscribe 的实现不会执行任何操作。

    【讨论】:

    • 但是如果ModalRoute 现在是不同的会发生什么?
    • 没关系。如果ModalRoute 发生更改,则无需退订。
    • 那么为什么不从initState调用subscribe呢?
    • 这根本不可能。 ModalRoute.of 不能在 initState 内部调用。
    猜你喜欢
    • 2020-04-27
    • 1970-01-01
    • 2020-10-17
    • 2020-03-09
    • 1970-01-01
    • 2016-07-23
    • 2018-09-15
    • 2022-01-19
    • 2012-03-14
    相关资源
    最近更新 更多