power_state_monitor 0.1.2 copy "power_state_monitor: ^0.1.2" to clipboard
power_state_monitor: ^0.1.2 copied to clipboard

PlatformWindows

Flutter plugin that exposes Windows sleep/resume power state events via a Dart stream.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:power_state_monitor/power_state_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 List<String> _events = [];

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

  Future<void> _initializePowerMonitor() async {
    await PowerStateMonitor.instance.initialize();

    PowerStateMonitor.instance.onPowerStateChanged.listen((event) {
      setState(() {
        final now = DateTime.now();
        final timeStr = '${now.hour}:${now.minute}:${now.second}';
        _events.insert(0, '[$timeStr] ${event.name}');

        // Keep only last 20 events
        if (_events.length > 20) {
          _events.removeLast();
        }
      });

      // Handle specific events
      if (event == PowerStateEvent.resumeAutomatic ||
          event == PowerStateEvent.resumeSuspend) {
        _onSystemResumed();
      }
    });
  }

  void _onSystemResumed() {
    // Refresh data, reconnect to servers, etc.
    debugPrint('System resumed from sleep/hibernate - refreshing data...');
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Power State Monitor Demo'),
          backgroundColor: Colors.blue,
        ),
        body: Column(
          children: [
            Container(
              padding: const EdgeInsets.all(16),
              color: Colors.blue.shade50,
              child: const Text(
                'This application monitors the system\'s power state.\n'
                'Try putting your computer into sleep or hibernation mode.',
                style: TextStyle(fontSize: 16),
                textAlign: TextAlign.center,
              ),
            ),
            const Padding(
              padding: EdgeInsets.all(16),
              child: Text(
                'Event history:',
                style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
              ),
            ),
            Expanded(
              child:
                  _events.isEmpty
                      ? const Center(
                        child: Text(
                          'Waiting for events...\n\n'
                          'Put the system to sleep,\n'
                          'then wake it back up.',
                          textAlign: TextAlign.center,
                          style: TextStyle(color: Colors.grey, fontSize: 16),
                        ),
                      )
                      : ListView.builder(
                        padding: const EdgeInsets.symmetric(horizontal: 16),
                        itemCount: _events.length,
                        itemBuilder: (context, index) {
                          return Card(
                            child: ListTile(
                              leading: Icon(
                                _getIconForEvent(_events[index]),
                                color: _getColorForEvent(_events[index]),
                              ),
                              title: Text(_events[index]),
                            ),
                          );
                        },
                      ),
            ),
          ],
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () {
            setState(() {
              _events.clear();
            });
          },
          tooltip: 'Clear history',
          child: const Icon(Icons.clear_all),
        ),
      ),
    );
  }

  IconData _getIconForEvent(String event) {
    if (event.contains('resume')) {
      return Icons.power_settings_new;
    } else if (event.contains('suspend')) {
      return Icons.bedtime;
    } else if (event.contains('battery')) {
      return Icons.battery_alert;
    }
    return Icons.info;
  }

  Color _getColorForEvent(String event) {
    if (event.contains('resume')) {
      return Colors.green;
    } else if (event.contains('suspend')) {
      return Colors.orange;
    } else if (event.contains('battery')) {
      return Colors.red;
    }
    return Colors.blue;
  }

  @override
  void dispose() {
    PowerStateMonitor.instance.dispose();
    super.dispose();
  }
}
0
likes
150
points
24
downloads

Publisher

unverified uploader

Weekly Downloads

Flutter plugin that exposes Windows sleep/resume power state events via a Dart stream.

Repository (GitHub)
View/report issues

Topics

#flutter-plugin #windows #power-management #system-events

Documentation

API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on power_state_monitor

Packages that implement power_state_monitor