diff options
Diffstat (limited to 'lib/widgets')
| -rw-r--r-- | lib/widgets/connection_status_button.dart | 12 | ||||
| -rw-r--r-- | lib/widgets/esense_connect_dialog.dart | 79 | ||||
| -rw-r--r-- | lib/widgets/level_list_entry.dart | 12 | 
3 files changed, 61 insertions, 42 deletions
| diff --git a/lib/widgets/connection_status_button.dart b/lib/widgets/connection_status_button.dart index ce3e662..e0c4cb4 100644 --- a/lib/widgets/connection_status_button.dart +++ b/lib/widgets/connection_status_button.dart @@ -21,10 +21,14 @@ class ConnectionStatusButton extends StatelessWidget {                context: context,                builder: (BuildContext context) {                  return ESenseConnectDialog( -                    deviceStatus: ESenseInput.instance.deviceStatus, -                    connect: (String name) { -                      ESenseInput.instance.connectToESense(name); -                    }); +                  deviceStatus: ESenseInput.instance.deviceStatus, +                  connect: (String name) { +                    ESenseInput.instance.connectToESense(name); +                  }, +                  disconnect: () { +                    ESenseInput.instance.eSenseManager.disconnect(); +                  }, +                );                },              ),          label: Text(deviceStatus), 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'), +                    ), +            ], +          ); +        });    }  } diff --git a/lib/widgets/level_list_entry.dart b/lib/widgets/level_list_entry.dart index a47a9c2..832186f 100644 --- a/lib/widgets/level_list_entry.dart +++ b/lib/widgets/level_list_entry.dart @@ -25,10 +25,14 @@ class LevelListEntry extends StatelessWidget {        context: context,        builder: (BuildContext context) {          return ESenseConnectDialog( -            deviceStatus: ESenseInput.instance.deviceStatus, -            connect: (String name) { -              ESenseInput.instance.connectToESense(name); -            }); +          deviceStatus: ESenseInput.instance.deviceStatus, +          connect: (String name) { +            ESenseInput.instance.connectToESense(name); +          }, +          disconnect: () { +            ESenseInput.instance.eSenseManager.disconnect(); +          }, +        );        },      );    } | 
