如何使用StatefulBuilder中AlertDialog上的OK按钮设置全局变量?String stringMain = "My String";
Future<String?> dialogChangeMainContent(BuildContext context) {
return showDialog<String>(
context: context,
builder: (BuildContext context) {
return StatefulBuilder(builder: (context, setState) {
return AlertDialog(
title: const Text('AlertDialog Title'),
content: const Text('AlertDialog description'),
actions: <Widget>[
TextButton(
onPressed: () {
Navigator.pop(context, 'OK');
setState(() {
// setState2();
stringMain = "New String";
});
},
child: const Text('OK'),
),
],
);
});
});
}
我把StatefulWidget从StatelessWidget改成了StatefulWidget,但是什么都没有改变。我知道的是问题是因为按钮在StatefulBuilder中。如果使用BLoC等,对于小的应用程序来说太浪费了。
1条答案
按热度按时间yyyllmsg1#
我找到了一个解决问题的方法,从StatefulBuilder的AlertDialog中重新绘制(刷新)Stateless Widget中的文本(或其他小部件)。通过创建一个setState,使用一个不同的名称,例如 setStateTarget。无需重建整个页面,也无需像BLoC那样进行状态管理。我的代码:
String stringMain = "My String";