Internet Permission

pub package

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.xml ga INTERNET va ACCESS_NETWORK_STATE qo'shadi
  • ✅ iOS Info.plist ga NSAppTransportSecurity qo'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

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