Fladder/lib/providers/connectivity_provider.dart
PartyDonut 935d6fe176
feature: Video quality options (#234)
Co-authored-by: PartyDonut <PartyDonut@users.noreply.github.com>
2025-02-23 13:29:59 +01:00

39 lines
1.2 KiB
Dart

import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'connectivity_provider.g.dart';
enum ConnectionState {
offline,
mobile,
wifi,
ethernet;
bool get homeInternet => switch (this) {
ConnectionState.offline => false,
ConnectionState.mobile => false,
ConnectionState.wifi => true,
ConnectionState.ethernet => true,
};
}
@Riverpod(keepAlive: true)
class ConnectivityStatus extends _$ConnectivityStatus {
@override
ConnectionState build() {
Connectivity().onConnectivityChanged.listen(onStateChange);
return ConnectionState.offline;
}
void onStateChange(List<ConnectivityResult> connectivityResult) {
if (connectivityResult.contains(ConnectivityResult.ethernet)) {
state = ConnectionState.ethernet;
} else if (connectivityResult.contains(ConnectivityResult.wifi)) {
state = ConnectionState.wifi;
} else if (connectivityResult.contains(ConnectivityResult.mobile)) {
state = ConnectionState.mobile;
} else if (connectivityResult.contains(ConnectivityResult.none)) {
state = ConnectionState.offline;
}
}
}