YmBok
搜索 充值水晶

StatefulBuilder实现Dialog的刷新

在Flutter中使用Dialog时,因为showDialog返回的context与当前页面的context不是同一个,所以通过setState是无法刷新Dialog里面的页面的。

这时我们就可以用StatefulBuilder实现,通过StatefulBuilder包裹后的Widget就变成有状态的Widget了,我们就可以通过StatefulBuilder返回的state进行刷新Dialog内的内容了。

解决方案:使用StatefulBuilder返回的state函数,调用state((){});刷新页面。

showDialog(
  context: context,
  barrierDismissible: true,
  builder: (BuildContext context) {
	return  StatefulBuilder(
	  builder: (context,state){
		return  AlertDialog(
		  title:  Text("Dialog标题"),
		  contentPadding:const EdgeInsets.fromLTRB(20, 20, 0, 0),
		  content: Container(
			height: 300,
			child:ListView.builder(
			  primary: true,
			  shrinkWrap: true,
			  scrollDirection: Axis.vertical,
			  physics: new ClampingScrollPhysics(),
			  itemCount: _items.length,
			  itemBuilder: (context, index) {
				return Container(
				  child: Row(
					mainAxisAlignment: MainAxisAlignment.spaceBetween,
					children: [
					  Text(_items.elementAt(index).text),
					  YmCheckButton(value:_items.elementAt(index).value,
						checked:_currentValue==_items.elementAt(index).value,
						onChanged: (bool checked,dynamic value){
						  if(checked){
							_currentValue = value;
						  }
						  state((){});   //刷新Dialog内的内容
						},
						text: "",
						image: "assets/images/ic_radio.png",
						checkedImage: "assets/images/ic_radio_checked.png",
					  ),
					],
				  ),

				);
			  },
			),
		  ),

		  actions:[
			TextButton(
			  child: Text("取消"),
			  onPressed: () {
				Navigator.of(context).pop();
			  },
			),
			TextButton(
			  child: Text("确认"),
			  onPressed: () {
				Navigator.of(context).pop();

			  },
			),
		  ],
		);
	  } ,
	);
  },
).then((val) {
  print(val);
});


内容来源与作者发布和网络,如有版权相关问题请及时与我们取得联系,我们将立即删除。

关于作者

还如一梦中 点击这里给我发消息

相关推荐

希望你会喜欢本站的内容

《传奇世界》手游修改教程之怪物掉落设置

下面讲解如何修改传世世界手游中的物品掉落,再原始的版本中,掉落的设置无法满足玩家的喜欢,我们需要自己修改,有简单的方法,也有费时的方法,先教大家基础的方法,后面教大家快捷的方法。 首先再客户

2022-07-06 还如一梦中
《传奇世界》手游修改教程之道士BB召唤

道士控制自己技能召唤的宝宝,服务端/data/sbin/resource/script/system/skill 打开SkillScript.lua --新的道士宝宝召唤机制 SkillSc

2022-07-06 还如一梦中
《传奇世界》手游修改教程之攻沙时间修改

客户端和服务端ShaWarDB,关键的字段是时间逗号后面那个数字: --攻沙时间设置 改为3天后 local Items = { {holdTimes = 5,defensePos = '{x

2022-07-06 还如一梦中
《传奇世界》手游修改教程之Luac4加密

Lua是游戏的脚本一般不会直接打包到app里,要先加密为luac4,在传奇世界手游里android可以支持luac4,但苹果不行 我们通过lua编译工具(tools/luaecode)编译l

2022-07-06 还如一梦中
《一梦传世》元神版本纯源码手工编译教程

《一梦传世》 元神 版本纯源码手工编译 全部文件包含服务端与客户端(其中包含AndroidStudio工程,Eclipse工程,IOS工程)目录如下: 分别稍稍下目录内容: ymwe

2022-07-06 还如一梦中
白鹭冰雪源码编译服务端VIP教程

2022-07-02 还如一梦中
白鹭冰雪源码编译客户端VIP教程

2022-07-02 还如一梦中
刺客传奇引擎架设教程

荐服务端系统环境 Win Server 2008 64位 一、将服务端拷贝到服务器,解压YmcqServer.zip。 二、安装64位DBC2000: 安装DBC_2000,安装成功后打开安装目录,

2022-06-07 还如一梦中
刺客引擎编译打包修改免费视频教程(六)

6、delphi引擎服务端编译

2022-06-07 还如一梦中
刺客引擎编译打包修改免费视频教程(五)

5、CocosStudio修改UI

2022-06-07 还如一梦中

友情链接