flutter_signal_strength 0.0.1 copy "flutter_signal_strength: ^0.0.1" to clipboard
flutter_signal_strength: ^0.0.1 copied to clipboard

PlatformAndroid

Retrieve cellular and wifi signal strength

example/lib/main.dart

import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:flutter_signal_strength/flutter_signal_strength.dart';
import 'package:permission_handler/permission_handler.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 _flutterSignalStrength = FlutterSignalStrength();
  int _cellularSignal = -1;
  int _wifiSignal = -1;
  int _cellularDbm = 0;
  int _wifiDbm = 0;
  Timer? _timer;

  @override
  void initState() {
    super.initState();
    _requestPermissions();
    // Update signal strength every 2 seconds
    _timer = Timer.periodic(const Duration(seconds: 2), (timer) {
      _updateSignalStrengths();
    });
  }

  @override
  void dispose() {
    _timer?.cancel();
    super.dispose();
  }

  Future<void> _requestPermissions() async {
    await Permission.phone.request();
    await Permission.location.request();
  }

  Future<void> _updateSignalStrengths() async {
    try {
      final cellularSignal =
          await _flutterSignalStrength.getCellularSignalStrength();
      final wifiSignal = await _flutterSignalStrength.getWifiSignalStrength();
      final cellularDbm =
          await _flutterSignalStrength.getCellularSignalStrengthDbm();
      final wifiDbm = await _flutterSignalStrength.getWifiSignalStrengthDbm();

      setState(() {
        _cellularSignal = cellularSignal;
        _wifiSignal = wifiSignal;
        _cellularDbm = cellularDbm;
        _wifiDbm = wifiDbm;
      });
    } on PlatformException catch (e) {
      debugPrint('Error getting signal strength: ${e.message}');
    }
  }

  String _getSignalDescription(int level) {
    switch (level) {
      case 0:
        return 'No Signal';
      case 1:
        return 'Poor';
      case 2:
        return 'Moderate';
      case 3:
        return 'Good';
      case 4:
        return 'Excellent';
      default:
        return 'Unknown';
    }
  }

  Widget _buildSignalIndicator(String type, int level, int dbm) {
    return Card(
      margin: const EdgeInsets.all(8.0),
      child: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            Text(
              type,
              style: const TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
            ),
            const SizedBox(height: 8),
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: List.generate(5, (index) {
                return Container(
                  margin: const EdgeInsets.symmetric(horizontal: 2),
                  width: 20,
                  height: 20 + (index * 5),
                  decoration: BoxDecoration(
                    color: index <= level - 1 ? Colors.green : Colors.grey[300],
                    borderRadius: BorderRadius.circular(4),
                  ),
                );
              }),
            ),
            const SizedBox(height: 8),
            Text(
              _getSignalDescription(level),
              style: const TextStyle(fontSize: 16),
            ),
            const SizedBox(height: 4),
            Text(
              '$dbm dBm',
              style: const TextStyle(fontSize: 14, color: Colors.grey),
            ),
          ],
        ),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Signal Strength Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              _buildSignalIndicator(
                  'Cellular Signal', _cellularSignal, _cellularDbm),
              _buildSignalIndicator('WiFi Signal', _wifiSignal, _wifiDbm),
            ],
          ),
        ),
      ),
    );
  }
}
4
likes
140
points
67
downloads

Publisher

verified publisherlukas-poque.dev

Weekly Downloads

Retrieve cellular and wifi signal strength

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on flutter_signal_strength