Flutter: кнопка включения, когда установлено значение RatingBar - PullRequest
0 голосов
/ 24 июня 2019

Я новичок во Flutter и пытаюсь выяснить, как включить мою кнопку действия, только когда в AlertDialog было выбрано значение рейтинга. Когда кнопка «отправить» была выбрана, но ничего не выбрано, она все равно меняет значение, например, на 6.0 по какой-то странной причине, поэтому оператор «если» может не сработать, сравнивая его с нулем, как я пытался ранее в методе onPressed ().

Это мой код метода для отображения AlertDialog:

void _showDialog() {
    showDialog(
    context: context,
    barrierDismissible: false,
    builder: (context) {
        return AlertDialog(
        title: Text("Pain Rating"),
        content: RatingBar(
        onRatingChanged: (rating) { 
          setState(() { 
            _rating = rating;
            print("rating changed: rating = $_rating");
          });
        },
    maxRating: 10,
    filledIcon: Icons.radio_button_checked,
    emptyIcon: Icons.radio_button_unchecked,
    isHalfAllowed: false,
    filledColor: Colors.green,
    emptyColor: Colors.green,
    size: 28,
  ),
    actions: <Widget>[
      FlatButton(
        child: const Text('SUBMIT'),
        onPressed: () {
          print("submit pressed: rating = $_rating");
          Navigator.of(context).pop();
        },
      )
    ],
    );
  });

В настоящее время, когда какой-либо рейтинг не выбран или нажата кнопка «Отправить», он закроет диалоговое окно. Я ожидаю, что кнопка «Отправить» будет отключена, пока не будет выбран рейтинг

1 Ответ

0 голосов
/ 24 июня 2019

Это один из предложенных способов сделать это:

var _rating = 0.0

FlatButton(
    child: const Text('SUBMIT'),
    onPressed: _rating > 0.0 
        ? () {
          print("submit pressed: rating = $_rating");
          Navigator.of(context).pop();
        } : null,
)

Если ваш _rating становится больше 0, это означает, что использованный изменил значение (при условии, что ваш рейтинг не может быть 0). Если это так, вы включаете кнопку, передавая VoidCallback ... если нет, то вызывается значение null, и кнопка отключается.

Если по какой-либо причине вам нужно значение 0.0, используйте переменную bool и измените значение на true, как только вы достигнете обратного вызова onRatingChanged, а затем измените мою логику с _rating > 0.0 на просто вашу переменную bool.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...