network_quality_monitor 0.2.0 copy "network_quality_monitor: ^0.2.0" to clipboard
network_quality_monitor: ^0.2.0 copied to clipboard

Flutter plugin for monitoring network status and basic network quality on Android and iOS.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:network_quality_monitor/network_quality_monitor.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final _plugin = NetworkQualityMonitor();
  NetworkQualityStatus? _current;
  String _log = 'Ready';
  bool _listening = false;

  @override
  void initState() {
    super.initState();
    _refreshOnce();
  }

  Future<void> _refreshOnce() async {
    final data = await _plugin.getCurrentStatus();
    if (!mounted) return;
    setState(() {
      _current = data;
      _log = 'Current: ${data.raw}\n\n$_log';
    });
  }

  void _startListening() {
    if (_listening) return;
    _listening = true;
    _plugin.onStatusChanged.listen((event) {
      if (!mounted) return;
      setState(() {
        _current = event;
        _log = 'Changed: ${event.raw}\n\n$_log';
      });
    });
  }

  Future<void> _probeNow() async {
    final data = await _plugin.probeQuality(
      probeUrl: 'https://www.baidu.com/favicon.ico',
      timeoutMs: 1500,
    );
    if (!mounted) return;
    setState(() {
      _current = data;
      _log = 'Probe: ${data.raw}\n\n$_log';
    });
  }

  @override
  Widget build(BuildContext context) {
    final current = _current;
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Network Quality Monitor Example')),
        body: Padding(
          padding: const EdgeInsets.all(16),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: [
              ElevatedButton(
                onPressed: _refreshOnce,
                child: const Text('Get Current Status'),
              ),
              const SizedBox(height: 12),
              ElevatedButton(
                onPressed: _startListening,
                child: const Text('Start Listening'),
              ),
              const SizedBox(height: 12),
              ElevatedButton(
                onPressed: _probeNow,
                child: const Text('Probe Quality Now'),
              ),
              const SizedBox(height: 16),
              Text('Connected: ${current?.isConnected ?? false}'),
              Text('Type: ${current?.networkType.name ?? 'unknown'}'),
              Text('Quality: ${current?.quality.name ?? 'unknown'}'),
              Text('Downlink(Kbps): ${current?.downlinkKbps ?? '-'}'),
              const SizedBox(height: 16),
              const Text(
                'Event Log',
                style: TextStyle(fontWeight: FontWeight.w600),
              ),
              const SizedBox(height: 8),
              Expanded(child: SingleChildScrollView(child: Text(_log))),
            ],
          ),
        ),
      ),
    );
  }
}
1
likes
140
points
9
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Flutter plugin for monitoring network status and basic network quality on Android and iOS.

Homepage

Topics

#network #connectivity #monitor #quality

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on network_quality_monitor

Packages that implement network_quality_monitor