Счетчик внутри AlertDialog - флаттер - PullRequest
2 голосов
/ 07 ноября 2019

Я использую AlertDialog для своего приложения, и внутри я строю счетчик. Значение счетчика не обновляется автоматически. я использовал "setState ({})", но это не помогает, потому что он только перестраивает функцию build (), а не int _value внутри Dialog.

Кто-нибудь знаком с этой проблемой и поможет мне? Спасибо

Ответы [ 3 ]

0 голосов
/ 08 ноября 2019

Пример кода ниже решил мою проблему. Как хорошо заметил @ anmol.majhail, a записал мой AlertDialog внутри нового класса, который затем вызывался функцией build (). Чтобы вызвать класс и показать AlertDialog, я делал это.

Widget createItem() {
    return new FloatingActionButton(
      elevation: 4.0,
      child: const Icon(Icons.create),
      onPressed: () {
        showDialog(
          context: context,
          child: new ItemAlertView()
        );
      },
    );
  }

Этот пример помог мне (сравните со строкой 59). https://gist.github.com/harshapulikollu/5461844368e95c6d3a38fffe72f03eee

0 голосов
/ 08 ноября 2019

Самым чистым способом, на мой взгляд, было бы использование Stream с StreamBuilder.

0 голосов
/ 08 ноября 2019

Пользователь StatefulBuilder для возврата AlertDialog.

showDialog(
  context: context,
  builder: (context) {
    String contentText = "Initial Content";
    return StatefulBuilder(
      builder: (context, setState) {
        return AlertDialog(
          title: Text("Title Here"),
          content: Text(contentText),
          actions: <Widget>[
            FlatButton(
              onPressed: () => Navigator.pop(context),
              child: Text("Cancel"),
            ),
            FlatButton(
              onPressed: () {
                setState(() {
                  contentText = "Changed!";
                });
              },
              child: Text("Change Now"),
            ),
          ],
        );
      },
    );
  },
);
...