Как получить значение из диалога во флаттере? - PullRequest
0 голосов
/ 16 января 2020

Я создаю приложение и хочу показать диалоговое окно для пользователя, содержащее ползунок для выбора значения.

проблема возникает здесь, я хочу получить значение этого ползунка, который выбрал пользователь и справиться с этим.

Я использую диалоговое окно в качестве виджета с сохранением состояния, и все работает хорошо, кроме возврата значения, как я уже говорил.


Виджет

class Dialog extends StatefulWidget {
  @override
  _DialogState createState() => _DialogState();

  final double val;

  Dialog({this.val,});
}

class _DialogState extends State<Dialog> {
  double value = 0;

  @override
  void initState() {
    super.initState();
    value = widget.val;
  }
  @override
  Widget build(BuildContext context) {
    return AlertDialog(
      title: Slider(
        value: value,
        min: 0,
        max: 100,
        onChanged: (va) {
          setState(() {
            value = va;
          });
        },
      ),
    );
  }
}

показать код диалога

double vale = 0;

-------

() async {
            await showDialog(
              context: context,
              builder: (context) => Dialog(
                val: vale,
              ),
            );
          }

1 Ответ

0 голосов
/ 16 января 2020

Вы можете получить доступ и использовать значение, которое приходит из вашего диалогового окна, например:

showDialog(
  context: context,
  builder: (context) => Dialog(
    val: vale,
  ),
).then((valueFromDialog){
  // use the value as you wish
  print(valueFromDialog);
});

.then() будет запущено после того, как пользователь выберет опцию в вашем диалоге.

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