// 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 . import 'package:uvok_epaper_badge/model/device/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 createState() { return DeviceDetailsState(); } } class DeviceDetailsState extends State { String connectStatus = ""; /// 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(() {}); } } } }