| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // ignore_for_file: public_member_api_docs |
| |
| import 'dart:async'; |
| |
| import 'package:flutter/material.dart'; |
| import 'package:battery/battery.dart'; |
| |
| void main() { |
| runApp(MyApp()); |
| } |
| |
| class MyApp extends StatelessWidget { |
| @override |
| Widget build(BuildContext context) { |
| return MaterialApp( |
| title: 'Flutter Demo', |
| theme: ThemeData( |
| primarySwatch: Colors.blue, |
| ), |
| home: MyHomePage(title: 'Flutter Demo Home Page'), |
| ); |
| } |
| } |
| |
| class MyHomePage extends StatefulWidget { |
| MyHomePage({Key key, this.title}) : super(key: key); |
| |
| final String title; |
| |
| @override |
| _MyHomePageState createState() => _MyHomePageState(); |
| } |
| |
| class _MyHomePageState extends State<MyHomePage> { |
| Battery _battery = Battery(); |
| |
| BatteryState _batteryState; |
| StreamSubscription<BatteryState> _batteryStateSubscription; |
| |
| @override |
| void initState() { |
| super.initState(); |
| _batteryStateSubscription = |
| _battery.onBatteryStateChanged.listen((BatteryState state) { |
| setState(() { |
| _batteryState = state; |
| }); |
| }); |
| } |
| |
| @override |
| Widget build(BuildContext context) { |
| return Scaffold( |
| appBar: AppBar( |
| title: const Text('Plugin example app'), |
| ), |
| body: Center( |
| child: Text('$_batteryState'), |
| ), |
| floatingActionButton: FloatingActionButton( |
| child: const Icon(Icons.battery_unknown), |
| onPressed: () async { |
| final int batteryLevel = await _battery.batteryLevel; |
| // ignore: unawaited_futures |
| showDialog<void>( |
| context: context, |
| builder: (_) => AlertDialog( |
| content: Text('Battery: $batteryLevel%'), |
| actions: <Widget>[ |
| FlatButton( |
| child: const Text('OK'), |
| onPressed: () { |
| Navigator.pop(context); |
| }, |
| ) |
| ], |
| ), |
| ); |
| }, |
| ), |
| ); |
| } |
| |
| @override |
| void dispose() { |
| super.dispose(); |
| if (_batteryStateSubscription != null) { |
| _batteryStateSubscription.cancel(); |
| } |
| } |
| } |