From 9143f2f16b5511b016a107adb5a38d34d1bc9677 Mon Sep 17 00:00:00 2001 From: uvok Date: Thu, 31 Jul 2025 15:55:08 +0200 Subject: Close connection on app exit --- lib/widgets/device_details.dart | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/widgets/device_details.dart b/lib/widgets/device_details.dart index 79f76cf..e481303 100644 --- a/lib/widgets/device_details.dart +++ b/lib/widgets/device_details.dart @@ -13,6 +13,8 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +import 'dart:ui'; + import 'package:uvok_epaper_badge/model/device/device.dart'; import 'package:flutter/material.dart'; import 'package:logger/logger.dart'; @@ -38,10 +40,21 @@ class DeviceDetailsScreen extends StatefulWidget { class DeviceDetailsState extends State { String connectStatus = ""; + late final AppLifecycleListener appLL; /// Whether the back button should be active. bool backActive = false; + DeviceDetailsState() { + appLL = AppLifecycleListener( + onExitRequested: () async { + logger.i("Exit requested"); + dispose(); + return AppExitResponse.exit; + }, + ); + } + @override Widget build(BuildContext context) { return Scaffold( @@ -76,12 +89,18 @@ class DeviceDetailsState extends State { @override void deactivate() { - widget.deviceConnection.disconnect().ignore(); - logger.i("Closing state"); + logger.i("(widget deactivate)"); // widget.device.disconnect().ignore(); super.deactivate(); } + @override + void dispose() { + logger.i("(widget dispose)"); + widget.deviceConnection.disconnect().ignore(); + super.dispose(); + } + void _doConnect() async { final dev = widget.device; -- cgit v1.2.3