websocket_providers.dart 955 B

123456789101112131415161718192021222324252627282930
  1. import 'dart:async';
  2. import 'package:flutter_riverpod/flutter_riverpod.dart';
  3. import 'package:asr_client/providers/settings_providers.dart';
  4. import 'package:asr_client/services/websocket_service.dart';
  5. final webSocketServiceProvider = Provider<WebSocketService>(
  6. (_) => WebSocketServiceImpl(),
  7. );
  8. final webSocketConnectionProvider = StreamProvider<ConnectionState>((ref) {
  9. final service = ref.watch(webSocketServiceProvider);
  10. ref.onDispose(() {
  11. if (service is WebSocketServiceImpl) {
  12. service.dispose();
  13. }
  14. });
  15. return service.connectionStateStream;
  16. });
  17. final webSocketMessagesProvider = StreamProvider<ServerMessage>((ref) {
  18. final service = ref.watch(webSocketServiceProvider);
  19. return service.messageStream;
  20. });
  21. final autoConnectProvider = FutureProvider<void>((ref) async {
  22. final service = ref.read(webSocketServiceProvider);
  23. final url = await ref.read(serverUrlProvider.future);
  24. unawaited(service.connect(url));
  25. });