From 189dfe5a43ba055109898f3fef979e574d068018 Mon Sep 17 00:00:00 2001 From: pkuislm <69719051+pkuislm@users.noreply.github.com> Date: Mon, 11 Nov 2024 21:58:44 +0800 Subject: [PATCH] Fix battery update issue. --- lib/pages/reader/scaffold.dart | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/lib/pages/reader/scaffold.dart b/lib/pages/reader/scaffold.dart index a0bf05c..110b5fd 100644 --- a/lib/pages/reader/scaffold.dart +++ b/lib/pages/reader/scaffold.dart @@ -600,18 +600,6 @@ class _BatteryWidgetState extends State<_BatteryWidget> { super.initState(); _battery = Battery(); _checkBatteryAvailability(); - if(_hasBattery) { - _timer = Timer.periodic(const Duration(seconds: 1), (timer) async { - final batteryLevel = await _battery.batteryLevel; - if(_batteryLevel != batteryLevel) { - setState(() { - _batteryLevel = batteryLevel; - }); - } - }); - } else { - _timer = null; - } } void _checkBatteryAvailability() async { @@ -620,6 +608,15 @@ class _BatteryWidgetState extends State<_BatteryWidget> { if (_batteryLevel != -1) { setState(() { _hasBattery = true; + _timer = Timer.periodic(const Duration(seconds: 1), (timer) { + _battery.batteryLevel.then((level) =>{ + if(_batteryLevel != level) { + setState(() { + _batteryLevel = level; + }) + } + }); + }); }); } else { setState(() { @@ -639,7 +636,17 @@ class _BatteryWidgetState extends State<_BatteryWidget> { return const SizedBox.shrink(); //Empty Widget } - return _batteryInfo(_batteryLevel); + return FutureBuilder( + future: _battery.batteryLevel, + builder: (context, snapshot) { + if(snapshot.connectionState != ConnectionState.waiting + && !snapshot.hasError + && snapshot.data != -1) { + int batteryLevel = snapshot.data!; + return _batteryInfo(batteryLevel); + } + return const SizedBox.shrink(); + }); } @override