import 'dart:async'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:asr_client/providers/settings_providers.dart'; import 'package:asr_client/services/websocket_service.dart'; final webSocketServiceProvider = Provider( (_) => WebSocketServiceImpl(), ); final webSocketConnectionProvider = StreamProvider((ref) { final service = ref.watch(webSocketServiceProvider); ref.onDispose(() { if (service is WebSocketServiceImpl) { service.dispose(); } }); return service.connectionStateStream; }); final webSocketMessagesProvider = StreamProvider((ref) { final service = ref.watch(webSocketServiceProvider); return service.messageStream; }); final autoConnectProvider = FutureProvider((ref) async { final service = ref.read(webSocketServiceProvider); final url = await ref.read(serverUrlProvider.future); unawaited(service.connect(url)); });