dispose method

  1. @override
void dispose()
override

清理资源 在 StatefulWidget 被从树中移除并销毁时调用的,这个方法用于清理资源。

Called when the widget is removed from the tree permanently. Used to release resources.

Implementation

@override
void dispose() {
  logi("[lifecycle] dispose");

  // 解绑 context provider(仅解绑自己绑定的)
  _playController._unbindContext(_contextProvider);

  // 移除全屏状态监听(仅在注册过时才移除)
  if (_hasFullScreenListener) {
    _playController.isFullScreenNotifier.removeListener(_fullScreenListener);
  }

  // 安全移除设置面板请求监听(即使未注册也不会报错)
  _playController.settingPanelRequestNotifier
      .removeListener(_handleSettingPanelRequest);

  // 销毁共享动画管理器
  _animationManager.dispose();

  // 移除观察者
  WidgetsBinding.instance.removeObserver(this);

  super.dispose();
}