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