From 507e6cd7074511d05f1388848f4f0856f7308864 Mon Sep 17 00:00:00 2001 From: Vladimir Babin Date: Thu, 3 Sep 2026 06:46:42 +0300 Subject: [PATCH] fix(battery_plus): invoke client.close() on Linux batteryState getter The Linux batteryState getter passed a tear-off (client.close) to whenComplete instead of calling it (client.close()), so the UPower client was never closed after reading the state. The sibling batteryLevel getter already calls client.close() correctly. --- .../battery_plus/lib/src/battery_plus_linux.dart | 2 +- .../battery_plus/test/battery_plus_linux_test.dart | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/battery_plus/battery_plus/lib/src/battery_plus_linux.dart b/packages/battery_plus/battery_plus/lib/src/battery_plus_linux.dart index 89ab9b778f..7bd4fc2c3f 100644 --- a/packages/battery_plus/battery_plus/lib/src/battery_plus_linux.dart +++ b/packages/battery_plus/battery_plus/lib/src/battery_plus_linux.dart @@ -54,7 +54,7 @@ class BatteryPlusLinuxPlugin extends BatteryPlatform { return client .connect() .then((_) => client.displayDevice.state.toBatteryState()) - .whenComplete(() => client.close); + .whenComplete(() => client.close()); } /// Fires whenever the battery state changes. diff --git a/packages/battery_plus/battery_plus/test/battery_plus_linux_test.dart b/packages/battery_plus/battery_plus/test/battery_plus_linux_test.dart index 7f86b691eb..a41880521c 100644 --- a/packages/battery_plus/battery_plus/test/battery_plus_linux_test.dart +++ b/packages/battery_plus/battery_plus/test/battery_plus_linux_test.dart @@ -29,6 +29,17 @@ void main() { expect(battery.batteryState, completion(BatteryState.charging)); }); + test('battery state closes the client', () async { + late MockUPowerClient client; + final battery = BatteryPlusLinuxPlugin(); + battery.createClient = () { + client = createMockClient(state: UPowerDeviceState.charging); + return client; + }; + await battery.batteryState; + verify(client.close()).called(1); + }); + test('battery state changes', () { final battery = BatteryPlusLinuxPlugin(); battery.createClient = () {