Internet Permission
Flutter loyihalari uchun internet ruxsatlarini boshqarish va tarmoq ulanishini tekshirish package'i.
Xususiyatlar
✅ Internet ulanishini tekshirish
✅ Ulanish turini aniqlash (WiFi, Mobile, Ethernet, VPN)
✅ Internet ruxsatlarini tekshirish
✅ Platform versiyasini olish
✅ Avtomatik setup script
O'rnatish
1. pubspec.yaml ga qo'shing:
dependencies:
internet_permission: ^1.0.5
Yoki:
flutter pub add internet_permission
2. Ruxsatlarni avtomatik qo'shing:
dart run internet_permission:setup_permissions
Bu buyruq avtomatik ravishda:
- ✅ Android
AndroidManifest.xmlgaINTERNETvaACCESS_NETWORK_STATEqo'shadi - ✅ iOS
Info.plistgaNSAppTransportSecurityqo'shadi
3. Pub get qiling:
flutter pub get
Foydalanish
import 'package:flutter/material.dart';
import 'package:internet_permission/internet_permission.dart';
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final _permission = InternetPermission();
String _status = 'Tekshirilmoqda...';
@override
void initState() {
super.initState();
_checkInternet();
}
Future<void> _checkInternet() async {
// Internet bormi?
final isConnected = await _permission.isConnected();
// Ulanish turi
final type = await _permission.getConnectionType();
// 'wifi', 'mobile', 'ethernet', 'vpn', 'none'
// Ruxsat bormi?
final hasPermission = await _permission.hasInternetPermission();
setState(() {
_status = '''
Internet: ${isConnected ? '✅ Ulangan' : '❌ Yo\'q'}
Turi: $type
Ruxsat: ${hasPermission ? '✅ Bor' : '❌ Yo\'q'}
''';
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Internet Test')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(_status, textAlign: TextAlign.center),
SizedBox(height: 20),
ElevatedButton(
onPressed: _checkInternet,
child: Text('Qayta tekshirish'),
),
],
),
),
),
);
}
}
API
isConnected() → Future<bool>
Internet ulanishini tekshiradi.
final connected = await InternetPermission().isConnected();
getConnectionType() → Future<String>
Ulanish turini qaytaradi: 'wifi', 'mobile', 'ethernet', 'vpn', 'none'
final type = await InternetPermission().getConnectionType();
if (type == 'wifi') {
print('WiFi orqali ulangan');
}
hasInternetPermission() → Future<bool>
Internet ruxsati borligini tekshiradi.
final hasPermission = await InternetPermission().hasInternetPermission();
getPlatformVersion() → Future<String?>
Platform versiyasini qaytaradi.
final version = await InternetPermission().getPlatformVersion();
print(version); // "Android 13" yoki "iOS 16.0"
Qo'lda sozlash
Agar avtomatik script ishlamasa, qo'lda qo'shing:
Android
android/app/src/main/AndroidManifest.xml ga qo'shing:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application>
<!-- ... -->
</application>
</manifest>
iOS
ios/Runner/Info.plist ga qo'shing (</dict></plist> dan oldin):
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
⚠️ Production uchun: Faqat HTTPS ishlatish tavsiya etiladi.
Xatoliklarni hal qilish
Script ishlamasa
# 1. Tozalash
flutter clean
# 2. Qayta setup
dart run internet_permission:setup_permissions
# 3. Pub get
flutter pub get
Android build xatosi
cd android
gradlew clean
cd ..
flutter clean
flutter pub get
iOS build xatosi
cd ios
pod deintegrate
pod install
cd ..
flutter clean
flutter pub get
Misol
To'liq ishlaydigan misol uchun example papkasiga qarang:
cd example
flutter run
Hissa qo'shish
Pull request'lar xush kelibsiz! Katta o'zgarishlar uchun avval issue oching.
Litsenziya
MIT License - batafsil LICENSE faylida.
Muallif
AbubakrFlutter
- GitHub: @AbubakrFlutter
- Repository: internet_permission
Changelog
1.0.2
- ✨ Avtomatik setup script qo'shildi
- 📝 README yangilandi
- 🐛 Bug fix'lar
1.0.1
- 📱 Android va iOS qo'llab-quvvatlash
- ✅ Internet holat tekshirish
- 🔌 Ulanish turi aniqlash
1.0.0
- 🎉 Birinchi release