diff options
author | uvok | 2025-07-30 20:34:54 +0200 |
---|---|---|
committer | uvok | 2025-07-30 20:34:54 +0200 |
commit | e0fb75037ae575bb0c63703299c2039bf970ad65 (patch) | |
tree | 0d259415e2bf115106ff25ebc77ff1f54d7c2284 /lib/widgets/device_details.dart | |
parent | 87e1dfffd2c17ef0e3d0711394122456e9d0c7c8 (diff) |
Shuffle code around / reorder
Diffstat (limited to 'lib/widgets/device_details.dart')
-rw-r--r-- | lib/widgets/device_details.dart | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/lib/widgets/device_details.dart b/lib/widgets/device_details.dart new file mode 100644 index 0000000..f3754d3 --- /dev/null +++ b/lib/widgets/device_details.dart @@ -0,0 +1,101 @@ +// Copyright (C) 2025, uvok cheetah +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. + +import 'package:uvok_epaper_badge/model/device.dart'; +import 'package:flutter/material.dart'; +import 'package:logger/logger.dart'; +import 'package:uvok_epaper_badge/model/device_connection.dart'; + +var logger = Logger(); + +class DeviceDetailsScreen extends StatefulWidget { + final Device device; + final DeviceConnection deviceConnection; + + const DeviceDetailsScreen({ + super.key, + required this.device, + required this.deviceConnection, + }); + + @override + State<StatefulWidget> createState() { + return DeviceDetailsState(); + } +} + +class DeviceDetailsState extends State<DeviceDetailsScreen> { + String connectStatus = "<Status>"; + + /// Whether the back button should be active. + bool backActive = false; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + backgroundColor: Theme.of(context).colorScheme.inversePrimary, + title: Text("Device details"), + ), + body: Center( + child: Column( + spacing: 20, + children: [ + Text(connectStatus), + ElevatedButton( + onPressed: backActive ? backClick : null, + child: Text("Back"), + ), + ], + ), + ), + ); + } + + @override + void initState() { + super.initState(); + _doConnect(); + } + + void backClick() { + Navigator.pop(context); + } + + @override + void deactivate() { + super.deactivate(); + logger.i("Closing state"); + // widget.device.disconnect().ignore(); + } + + void _doConnect() async { + final dev = widget.device; + + try { + logger.i("Try to connect..."); + await widget.deviceConnection.connect(); + } catch (e) { + logger.e(e); + await widget.deviceConnection.disconnect(); + connectStatus = e.toString(); + } finally { + backActive = true; + if (mounted) { + setState(() {}); + } + } + } +} |