showInputDialog function

Future<SearchModel?> showInputDialog(
  1. BuildContext context
)

Implementation

Future<SearchModel?> showInputDialog(BuildContext context) async {
  TextEditingController _urlTextFieldController = TextEditingController();
  TextEditingController _statusTextFieldController = TextEditingController();
  TextEditingController _duration1TextFieldController = TextEditingController();
  TextEditingController _durationTextFieldController = TextEditingController();
  ValueNotifier<bool> valueListenable = ValueNotifier(false);
  return await showDialog(
    context: context,
    builder: (context1) {
      return AlertDialog(
        title: Text('Search Key'),
        content: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            TextField(
              controller: _urlTextFieldController,
              decoration: InputDecoration(hintText: "url:"),
            ),
            TextField(
              controller: _statusTextFieldController,
              decoration: InputDecoration(hintText: "status:"),
            ),
            TextField(
              controller: _duration1TextFieldController,
              decoration: InputDecoration(hintText: ">duration(ms):"),
            ),
            Row(
              children: [
                Expanded(
                  child: TextField(
                    controller: _durationTextFieldController,
                    decoration: InputDecoration(hintText: "<duration(ms):"),
                  ),
                ),
              ],
            ),
            Row(
              children: [
                Text('isError', style: TextStyle(color: Colors.red)),
                ValueListenableBuilder(
                  valueListenable: valueListenable,
                  builder: (BuildContext context, bool value, Widget? child) {
                    return Checkbox(
                      value: valueListenable.value,
                      onChanged: (v) {
                        valueListenable.value = v??false;
                      },
                    );
                  },
                ),
              ],
            )
          ],
        ),
        actions: <Widget>[
          TextButton(
            child: Text('CANCEL'),
            onPressed: () {
              Navigator.of(context).pop(null);
            },
          ),
          TextButton(
            child: Text('OK'),
            onPressed: () {
              var duration1 = _duration1TextFieldController.text;
              var duration = _durationTextFieldController.text;
              var du = 0;
              var duType = 0;
              if (duration.isNotEmpty && duration1.isNotEmpty) {
                return snackBar(context, 'duration> and duration< not both exist');
              }
              if (duration1.isNotEmpty) {
                du = int.tryParse(duration1) ?? 0;
                duType = 0;
              }
              if (duration.isNotEmpty) {
                du = int.parse(duration) ?? 0;
                duType = 1;
              }
              var sm = SearchModel(
                _urlTextFieldController.text,
                int.tryParse(_statusTextFieldController.text) ?? 0,
                du,
                duType,
                valueListenable.value,
              );
              Navigator.of(context).pop(sm);
            },
          ),
        ],
      );
    },
  );
}