fix: Make NetworkService web-safe by skipping connectivity monitoring on web platform

This commit is contained in:
Patrick Britton 2026-02-17 10:46:50 -06:00
parent 2b3704a3f9
commit 6d43ae2b09

View file

@ -1,4 +1,5 @@
import 'dart:async'; import 'dart:async';
import 'package:flutter/foundation.dart' show kIsWeb;
import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:connectivity_plus/connectivity_plus.dart';
/// Service for monitoring network connectivity status /// Service for monitoring network connectivity status
@ -7,7 +8,7 @@ class NetworkService {
factory NetworkService() => _instance; factory NetworkService() => _instance;
NetworkService._internal(); NetworkService._internal();
final Connectivity _connectivity = Connectivity(); Connectivity? _connectivity;
final StreamController<bool> _connectionController = final StreamController<bool> _connectionController =
StreamController<bool>.broadcast(); StreamController<bool>.broadcast();
@ -18,7 +19,15 @@ class NetworkService {
/// Initialize the network service and start monitoring /// Initialize the network service and start monitoring
void initialize() { void initialize() {
_connectivity.onConnectivityChanged.listen((List<ConnectivityResult> results) { // Skip connectivity monitoring on web - it's not supported
if (kIsWeb) {
_isConnected = true;
_connectionController.add(true);
return;
}
_connectivity = Connectivity();
_connectivity!.onConnectivityChanged.listen((List<ConnectivityResult> results) {
final result = results.isNotEmpty ? results.first : ConnectivityResult.none; final result = results.isNotEmpty ? results.first : ConnectivityResult.none;
_isConnected = result != ConnectivityResult.none; _isConnected = result != ConnectivityResult.none;
_connectionController.add(_isConnected); _connectionController.add(_isConnected);
@ -29,7 +38,9 @@ class NetworkService {
} }
Future<void> _checkConnection() async { Future<void> _checkConnection() async {
final results = await _connectivity.checkConnectivity(); if (kIsWeb || _connectivity == null) return;
final results = await _connectivity!.checkConnectivity();
final result = results.isNotEmpty ? results.first : ConnectivityResult.none; final result = results.isNotEmpty ? results.first : ConnectivityResult.none;
_isConnected = result != ConnectivityResult.none; _isConnected = result != ConnectivityResult.none;
_connectionController.add(_isConnected); _connectionController.add(_isConnected);