Flutter 在main中创建应用程序关闭时如何关闭流?

Flutter 在main中创建应用程序关闭时如何关闭流?,flutter,Flutter,我有一个自定义http客户端,它截取响应,通过流提供服务不可用事件: class MyHttpClient extends http.BaseClient { final String apiBase; MyHttpClient({required this.apiBase}); final _controller = StreamController<ServiceUnavailableEvent>.broadcast(); Stream<Service

我有一个自定义http客户端,它截取响应,通过流提供服务不可用事件:

class MyHttpClient extends http.BaseClient {
  final String apiBase;

  MyHttpClient({required this.apiBase});

  final _controller = StreamController<ServiceUnavailableEvent>.broadcast();

  Stream<ServiceUnavailableEvent> get stream => _controller.stream;


  @override
  Future<http.StreamedResponse> send(http.BaseRequest request) async {
    final response = await request.send();
    if (request.url.toString().startsWith(apiBase) &&
        response.statusCode == HttpStatus.serviceUnavailable) {
      _controller.sink.add(ServiceUnavailableEvent(isAvailable: false));
    } else {
      _controller.sink.add(ServiceUnavailableEvent(isAvailable: true));
    }
    return response;
  }

  Future<void> close() async {
    await _controller.close();
  }
}
一切正常,我在自定义http客户端上添加了关闭流的
close
方法。但是什么时候/怎样才能调用这个
close
方法呢


我考虑过,但所有状态似乎都是错误的,因为我只想在应用程序真正关闭时关闭客户端(即,如果用户重新打开/恢复应用程序,则必须创建一个新客户端才能重新创建订阅)。

当应用程序关闭时,您如何知道它仍处于打开状态。我认为平台(ios/android)会关闭它

void main() {
  final client = MyHttpClient(apiBase: apiBase)
  runApp(MyApp(client: client));
}