internet_permission 2.0.1 copy "internet_permission: ^2.0.1" to clipboard
internet_permission: ^2.0.1 copied to clipboard

A Flutter plugin that automatically adds internet permissions to all platforms (Android, iOS, macOS, Windows, Linux, Web). One command setup: dart run internet_permission:setup

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,
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
4
likes
140
points
378
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin that automatically adds internet permissions to all platforms (Android, iOS, macOS, Windows, Linux, Web). One command setup: dart run internet_permission:setup

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on internet_permission

Packages that implement internet_permission