diff options
Diffstat (limited to 'lib/widgets/esense_connect_dialog.dart')
-rw-r--r-- | lib/widgets/esense_connect_dialog.dart | 79 |
1 files changed, 45 insertions, 34 deletions
diff --git a/lib/widgets/esense_connect_dialog.dart b/lib/widgets/esense_connect_dialog.dart index bb9305b..8320dd4 100644 --- a/lib/widgets/esense_connect_dialog.dart +++ b/lib/widgets/esense_connect_dialog.dart @@ -1,10 +1,16 @@ import 'package:flutter/material.dart'; +import 'package:sense_the_rhythm/utils/esense_input.dart'; class ESenseConnectDialog extends StatefulWidget { final void Function(String) connect; + final VoidCallback disconnect; final ValueNotifier<String> deviceStatus; + const ESenseConnectDialog( - {super.key, required this.deviceStatus, required this.connect}); + {super.key, + required this.deviceStatus, + required this.connect, + required this.disconnect}); @override State<ESenseConnectDialog> createState() => _ESenseConnectDialogState(); @@ -15,38 +21,43 @@ class _ESenseConnectDialogState extends State<ESenseConnectDialog> { @override Widget build(BuildContext context) { - return AlertDialog( - title: const Text('Connect to ESense'), - content: Column(mainAxisSize: MainAxisSize.min, children: [ - TextField( - onChanged: (input) { - setState(() { - eSenseDeviceName = input; - }); - }, - decoration: InputDecoration( - border: OutlineInputBorder(), - hintText: 'eSense-xxxx', - labelText: 'Device name', - ), - ), - // Text(eSenseDeviceName), - ValueListenableBuilder( - valueListenable: widget.deviceStatus, - builder: (BuildContext context, String value, Widget? child) { - return Text(value); - }), - ]), - actions: <Widget>[ - TextButton( - onPressed: () => Navigator.pop(context, 'Cancel'), - child: const Text('Close'), - ), - TextButton( - onPressed: () => widget.connect(eSenseDeviceName), - child: const Text('Connect'), - ), - ], - ); + return ValueListenableBuilder( + valueListenable: widget.deviceStatus, + builder: (BuildContext context, String deviceStatus, Widget? child) { + return AlertDialog( + title: const Text('Connect to ESense'), + content: Column(mainAxisSize: MainAxisSize.min, children: [ + TextField( + onChanged: (input) { + setState(() { + eSenseDeviceName = input; + }); + }, + decoration: InputDecoration( + border: OutlineInputBorder(), + hintText: 'eSense-xxxx', + labelText: 'Device name', + ), + ), + // Text(eSenseDeviceName), + Text(deviceStatus) + ]), + actions: <Widget>[ + TextButton( + onPressed: () => Navigator.pop(context, 'Cancel'), + child: const Text('Close'), + ), + ESenseInput.instance.connected + ? TextButton( + onPressed: () => widget.disconnect(), + child: const Text('Disconnect'), + ) + : TextButton( + onPressed: () => widget.connect(eSenseDeviceName), + child: const Text('Connect'), + ), + ], + ); + }); } } |