diff options
Diffstat (limited to 'lib/device_details.dart')
-rw-r--r-- | lib/device_details.dart | 78 |
1 files changed, 10 insertions, 68 deletions
diff --git a/lib/device_details.dart b/lib/device_details.dart index 11a5f39..f3754d3 100644 --- a/lib/device_details.dart +++ b/lib/device_details.dart @@ -16,13 +16,19 @@ 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}); + const DeviceDetailsScreen({ + super.key, + required this.device, + required this.deviceConnection, + }); @override State<StatefulWidget> createState() { @@ -32,16 +38,10 @@ class DeviceDetailsScreen extends StatefulWidget { class DeviceDetailsState extends State<DeviceDetailsScreen> { String connectStatus = "<Status>"; - // Just to have a resonable default subscription? - // StreamSubscription<BluetoothConnectionState> subs = - // Stream<BluetoothConnectionState>.empty().listen((e) => ()); /// Whether the back button should be active. bool backActive = false; - // BluetoothCharacteristic? current; - // BluetoothCharacteristic? available; - @override Widget build(BuildContext context) { return Scaffold( @@ -74,51 +74,22 @@ class DeviceDetailsState extends State<DeviceDetailsScreen> { Navigator.pop(context); } - void onConnStateChange(ConnectionStatus event) { - setState(() { - connectStatus = event.toString(); - }); - logger.i("New conn state: ${event.toString()}"); - } - @override void deactivate() { super.deactivate(); logger.i("Closing state"); - // subs.cancel().ignore(); // widget.device.disconnect().ignore(); } void _doConnect() async { final dev = widget.device; - // subs.cancel().ignore(); - // subs = dev.connectionState.listen(onConnStateChange); + try { logger.i("Try to connect..."); - // connect timeout doesn't work under Linux - // await dev.connect().timeout(Duration(seconds: 2)); - // logger.i("Connected!"); - - // connectStatus = "Connected"; - - // // ???? WTF ???? - // List<BluetoothService> svcs = await dev.discoverServices(); - // dev.onServicesReset.listen((_) async { - // logger.i("Services Reset"); - // try { - // List<BluetoothService> svcs = await dev.discoverServices(); - // findCharac(svcs); - // } catch (e) { - // logger.e(e); - // } - // }); - - // logger.i("services discovered"); - - // findCharac(svcs); + await widget.deviceConnection.connect(); } catch (e) { logger.e(e); - // dev.disconnect().ignore(); + await widget.deviceConnection.disconnect(); connectStatus = e.toString(); } finally { backActive = true; @@ -127,33 +98,4 @@ class DeviceDetailsState extends State<DeviceDetailsScreen> { } } } - - // void findCharac(List<BluetoothService> svcs) { - // if (svcs.isEmpty) { - // connectStatus += ", No services found!"; - // return; - // } - // connectStatus += ", Services found!"; - // BluetoothService? badgeService = svcs.firstWhereOrNull( - // (s) => s.serviceUuid.str == "ca260000-b4bb-46b2-bd06-b7b7a61ea990", - // ); - - // if (badgeService == null) { - // } else { - // logger.i("badge service found"); - // current = badgeService.characteristics.firstWhereOrNull( - // (c) => - // c.characteristicUuid.str == "ca260001-b4bb-46b2-bd06-b7b7a61ea990", - // ); - // available = badgeService.characteristics.firstWhereOrNull( - // (c) => - // c.characteristicUuid.str == "ca260002-b4bb-46b2-bd06-b7b7a61ea990", - // ); - // } - - // if (current == null || available == null) { - // } else { - // logger.i("characteristics found"); - // } - // } } |