summaryrefslogtreecommitdiff
path: root/lib/widgets/esense_connect_dialog.dart
blob: 2853ffe1866b3e2daafda6d922ae5dc7759f80da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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,
      required this.disconnect});

  @override
  State<ESenseConnectDialog> createState() => _ESenseConnectDialogState();
}

class _ESenseConnectDialogState extends State<ESenseConnectDialog> {
  String _eSenseDeviceName = '';

  @override
  Widget build(BuildContext context) {
    // rerender whenever the deviceStatus changes
    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'),
                    ),
            ],
          );
        });
  }
}