internet_permission 1.0.4
internet_permission: ^1.0.4 copied to clipboard
A Flutter plugin for managing internet permissions and checking network connectivity. Check if device is connected to internet, get connection type (WiFi, Mobile, Ethernet, VPN).
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:internet_permission/internet_permission.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Internet Permission Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final _internetPermission = InternetPermission();
String _status = 'Bosing...';
bool _isChecking = false;
@override
void initState() {
super.initState();
_checkPermission();
}
Future<void> _checkPermission() async {
setState(() => _isChecking = true);
try {
// Platform versiyasini olish
final version = await _internetPermission.getPlatformVersion();
// Internet ruxsatini tekshirish
final hasPermission = await _internetPermission.hasInternetPermission();
// Internet bog'lanishni tekshirish
final isConnected = await _internetPermission.isConnected();
// Bog'lanish turini olish
final connectionType = await _internetPermission.getConnectionType();
setState(() {
_status = '''
Platform: ${version ?? 'Noma\'lum'}
Internet ruxsati: ${hasPermission ? '✅ Bor' : '❌ Yo\'q'}
Internet holati: ${isConnected ? '✅ Ulangan' : '❌ Ulanmagan'}
Bog'lanish turi: ${_getConnectionTypeText(connectionType)}
''';
_isChecking = false;
});
} catch (e) {
setState(() {
_status = 'Xato: $e';
_isChecking = false;
});
}
}
String _getConnectionTypeText(String type) {
switch (type) {
case 'wifi':
return '📶 WiFi';
case 'mobile':
return '📱 Mobil internet';
case 'ethernet':
return '🔌 Ethernet';
case 'vpn':
return '🔒 VPN';
case 'none':
return '❌ Yo\'q';
default:
return '❓ Noma\'lum';
}
}
Future<void> _requestPermission() async {
setState(() => _isChecking = true);
try {
final result = await _internetPermission.requestInternetPermission();
setState(() {
_status = result
? '✅ Ruxsat berildi'
: '❌ Ruxsat rad etildi';
_isChecking = false;
});
// Qayta tekshirish
if (result) {
await Future.delayed(const Duration(seconds: 1));
await _checkPermission();
}
} catch (e) {
setState(() {
_status = 'Xato: $e';
_isChecking = false;
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: const Text('Internet Permission Demo'),
),
body: Center(
child: Padding(
padding: const EdgeInsets.all(24.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Icon(
Icons.wifi,
size: 100,
color: Colors.blue,
),
const SizedBox(height: 32),
if (_isChecking)
const CircularProgressIndicator()
else
Text(
_status,
textAlign: TextAlign.center,
style: Theme.of(context).textTheme.titleLarge,
),
const SizedBox(height: 32),
ElevatedButton.icon(
onPressed: _isChecking ? null : _checkPermission,
icon: const Icon(Icons.refresh),
label: const Text('Tekshirish'),
),
const SizedBox(height: 16),
ElevatedButton.icon(
onPressed: _isChecking ? null : _requestPermission,
icon: const Icon(Icons.security),
label: const Text('Ruxsat so\'rash'),
style: ElevatedButton.styleFrom(
backgroundColor: Colors.green,
foregroundColor: Colors.white,
),
),
],
),
),
),
);
}
}