From 4d5b950ed1c74f801f621ef0c07b44f496a7465b Mon Sep 17 00:00:00 2001 From: Koji Wakamiya Date: Fri, 22 Mar 2024 01:09:08 +0900 Subject: [PATCH] fix(battery_plus): Fix return value of getBattery to be nullable (#2745) --- .../battery_plus/example/lib/main.dart | 129 ++++++------------ .../lib/src/battery_plus_web.dart | 4 +- 2 files changed, 47 insertions(+), 86 deletions(-) diff --git a/packages/battery_plus/battery_plus/example/lib/main.dart b/packages/battery_plus/battery_plus/example/lib/main.dart index 5645d82b33..a6f348224d 100644 --- a/packages/battery_plus/battery_plus/example/lib/main.dart +++ b/packages/battery_plus/battery_plus/example/lib/main.dart @@ -42,24 +42,9 @@ class _MyHomePageState extends State { @override void initState() { super.initState(); - try { - _battery.batteryState.then( - _updateBatteryState, - onError: (e) { - _showError('onError: batteryState: $e'); - _updateBatteryState(BatteryState.unknown); - }, - ); - _batteryStateSubscription = _battery.onBatteryStateChanged.listen( - _updateBatteryState, - onError: (e) { - _showError('onError: onBatteryStateChanged: $e'); - _updateBatteryState(BatteryState.unknown); - }, - ); - } on Error catch (e) { - _showError('catch: batteryState: $e'); - } + _battery.batteryState.then(_updateBatteryState); + _batteryStateSubscription = + _battery.onBatteryStateChanged.listen(_updateBatteryState); } void _updateBatteryState(BatteryState state) { @@ -69,16 +54,6 @@ class _MyHomePageState extends State { }); } - void _showError(String message) { - // see https://github.com/fluttercommunity/plus_plugins/pull/2720 - // The exception may not be caught in the package and an exception may occur in the caller, so use try-catch as needed. - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text(message), - ), - ); - } - @override Widget build(BuildContext context) { return Scaffold( @@ -102,69 +77,55 @@ class _MyHomePageState extends State { const SizedBox(height: 24), ElevatedButton( onPressed: () { - try { - _battery.batteryLevel.then( - (batteryLevel) { - showDialog( - context: context, - builder: (_) => AlertDialog( - content: Text('Battery: $batteryLevel%'), - actions: [ - TextButton( - onPressed: () { - Navigator.pop(context); - }, - child: const Text('OK'), - ) - ], - ), - ); - }, - onError: (e) { - _showError('onError: batteryLevel: $e'); - }, - ); - } on Error catch (e) { - _showError('catch: batteryLevel: $e'); - } + _battery.batteryLevel.then( + (batteryLevel) { + showDialog( + context: context, + builder: (_) => AlertDialog( + content: Text('Battery: $batteryLevel%'), + actions: [ + TextButton( + onPressed: () { + Navigator.pop(context); + }, + child: const Text('OK'), + ) + ], + ), + ); + }, + ); }, child: const Text('Get battery level'), ), const SizedBox(height: 24), ElevatedButton( onPressed: () { - try { - _battery.isInBatterySaveMode.then( - (isInPowerSaveMode) { - showDialog( - context: context, - builder: (_) => AlertDialog( - title: const Text( - 'Is in Battery Save mode?', - style: TextStyle(fontSize: 20), - ), - content: Text( - "$isInPowerSaveMode", - style: const TextStyle(fontSize: 18), - ), - actions: [ - TextButton( - onPressed: () { - Navigator.pop(context); - }, - child: const Text('Close'), - ) - ], + _battery.isInBatterySaveMode.then( + (isInPowerSaveMode) { + showDialog( + context: context, + builder: (_) => AlertDialog( + title: const Text( + 'Is in Battery Save mode?', + style: TextStyle(fontSize: 20), + ), + content: Text( + "$isInPowerSaveMode", + style: const TextStyle(fontSize: 18), ), - ); - }, - onError: (e) { - _showError('onError: isInBatterySaveMode: $e'); - }, - ); - } on Error catch (e) { - _showError('catch: isInBatterySaveMode: $e'); - } + actions: [ + TextButton( + onPressed: () { + Navigator.pop(context); + }, + child: const Text('Close'), + ) + ], + ), + ); + }, + ); }, child: const Text('Is in Battery Save mode?'), ) diff --git a/packages/battery_plus/battery_plus/lib/src/battery_plus_web.dart b/packages/battery_plus/battery_plus/lib/src/battery_plus_web.dart index 97e1610e9f..353227954d 100644 --- a/packages/battery_plus/battery_plus/lib/src/battery_plus_web.dart +++ b/packages/battery_plus/battery_plus/lib/src/battery_plus_web.dart @@ -18,7 +18,7 @@ class BatteryPlusWebPlugin extends BatteryPlatform { /// Return [BatteryManager] if the BatteryManager API is supported by the User Agent. Future _getBatteryManager() async { try { - return await web.window.navigator.getBattery().toDart; + return await web.window.navigator.getBattery()?.toDart; } on NoSuchMethodError catch (_) { // BatteryManager API is not supported this User Agent. return null; @@ -108,7 +108,7 @@ class BatteryPlusWebPlugin extends BatteryPlatform { extension on web.Navigator { /// https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getBattery - external JSPromise getBattery(); + external JSPromise? getBattery(); } /// BatteryManager API