import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:flutter/material.dart'; export 'toastification.dart'; extension StatefulWidgetExtensions on State { /// Check if the widget exist before safely setting state. void safeSetState(VoidCallback fn) { if (mounted) { // ignore: invalid_use_of_protected_member setState(fn); } } } String? stringFromJson(dynamic json) { if (json is String && json.isNotEmpty) return json; return null; } double? doubleFromJson(dynamic json) { if (json is double) return json; return null; } int? intFromJson(dynamic json) { if (json is int) return json; return null; } T? objectFromJson(dynamic json, T Function(Map) fromJson) { if (json is Map) return fromJson(json); return null; } List? listFromJson( dynamic json, T Function(Map) fromJson, ) { if (json is List) { return json .whereType>() .map((e) => fromJson(e)) .toList(); } return null; } Future checkInternetConnexion() async { final List connectivityResult = await (Connectivity() .checkConnectivity()); // This condition is for demo purposes only to explain every connection type. // Use conditions which work for your requirements. if (connectivityResult.contains(ConnectivityResult.mobile)) { // Mobile network available. return true; } else if (connectivityResult.contains(ConnectivityResult.wifi)) { // Wi-fi is available. // Note for Android: // When both mobile and Wi-Fi are turned on system will return Wi-Fi only as active network type return true; } else if (connectivityResult.contains(ConnectivityResult.ethernet)) { // Ethernet connection available. return true; } else if (connectivityResult.contains(ConnectivityResult.vpn)) { // Vpn connection active. // Note for iOS and macOS: // There is no separate network interface type for [vpn]. // It returns [other] on any device (also simulator) return true; } else if (connectivityResult.contains(ConnectivityResult.bluetooth)) { // Bluetooth connection available. return false; } else if (connectivityResult.contains(ConnectivityResult.other)) { // Connected to a network which is not in the above mentioned networks. return false; } else if (connectivityResult.contains(ConnectivityResult.none)) { // No available network types return false; } else { return false; } }