import 'package:dio/dio.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

/*
 * 用于 UI Page 对应的Controller 混入，可以在关闭页面的时候自动取消网络请求
 * 是否需要使用状态泛型？？
 */
mixin DioCancelableMixin on AutoDisposeNotifier {
  final CancelToken _cancelToken = CancelToken();

  @override
  void build() {
    super.build();

    // 注册一个回调函数，在对象被释放时调用
    ref.onDispose(() {
      if (!_cancelToken.isCancelled) {
        _cancelToken.cancel("Request cancelled due to AutoDisposeNotifier being disposed.");
      }
    });
  }

}
