import 'dart:io'; import 'package:flutter/material.dart'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:hive_flutter/hive_flutter.dart'; import 'package:shared_preferences/shared_preferences.dart'; Future isNetworkAvailable() async { // check if there is a valid network connection final connectivityResult = await Connectivity().checkConnectivity(); if (connectivityResult != ConnectivityResult.mobile && connectivityResult != ConnectivityResult.wifi) { return false; } // check if the network is really connected to Internet try { final result = await InternetAddress.lookup('example.com'); if (result.isEmpty || result[0].rawAddress.isEmpty) { return false; } } on SocketException catch (_) { return false; } return true; } Future isPWAInstalled() async { final prefs = await SharedPreferences.getInstance(); return prefs.getBool('isInstalled') ?? false; } void setPWAInstalled({bool installed = true}) async { final prefs = await SharedPreferences.getInstance(); await prefs.setBool('isInstalled', installed); } bool get isTablet { final firstView = WidgetsBinding.instance.platformDispatcher.views.first; final logicalShortestSide = firstView.physicalSize.shortestSide / firstView.devicePixelRatio; // print("size:${logicalShortestSide > 600} tablet "); return logicalShortestSide > 600; } Future getNextAutoIncrementValue() async { var counterBox = await Hive.openBox('counterBox'); if (!counterBox.containsKey('counter')) { counterBox.put('counter', 0); } int? counter = counterBox.get('counter'); counterBox.put('counter', counter! + 1); await counterBox.close(); return counter; } class HexColor extends Color { static int _getColorFromHex(String hexColor) { hexColor = hexColor.toUpperCase().replaceAll("#", ""); if (hexColor.length == 6) { hexColor = "FF$hexColor"; } return int.parse(hexColor, radix: 16); } HexColor(final String hexColor) : super(_getColorFromHex(hexColor)); } extension Iterables on Iterable { Map> groupBy(K Function(E) keyFunction) => fold( >{}, (Map> map, E element) => map..putIfAbsent(keyFunction(element), () => []).add(element)); }