计数器内部 AlertDialog - Flutter
Counter Inside AlertDialog - Flutter
我正在为我的应用程序使用 AlertDialog,我在里面构建了一个计数器。计数器的值不会自动更新。我使用了 "setState({})",但它没有帮助,因为它只重建 build() 函数而不是 Dialog 中的 int _value。
有熟悉这个问题的人帮我解决一下吗?
谢谢
用户 StatefulBuilder
到 return 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"),
),
],
);
},
);
},
);
下面的代码示例解决了我的问题。正如 @anmol.majhail 很好地提到的那样,我在一个新的 class 中写了我的 AlertDialog,然后由 build() 函数调用它。调用 class 并显示 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
在我看来,最干净的方法是使用 Stream
和 StreamBuilder
。
我正在为我的应用程序使用 AlertDialog,我在里面构建了一个计数器。计数器的值不会自动更新。我使用了 "setState({})",但它没有帮助,因为它只重建 build() 函数而不是 Dialog 中的 int _value。
有熟悉这个问题的人帮我解决一下吗? 谢谢
用户 StatefulBuilder
到 return 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"),
),
],
);
},
);
},
);
下面的代码示例解决了我的问题。正如 @anmol.majhail 很好地提到的那样,我在一个新的 class 中写了我的 AlertDialog,然后由 build() 函数调用它。调用 class 并显示 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
在我看来,最干净的方法是使用 Stream
和 StreamBuilder
。