在使用Flutter过程中,出现showDialog更新不了UI的问题,现在要实现的是一个下载进度条的功能 ,所以需要实时刷新进度条,然后遇到的问题就是使用setState没有生效,看了一下网上的资料,就是说Dialog不是类似Android里一个弹窗而已,在Flutter里它和页面,也就是StatefulWidget/StatelessWidget是平级的,也就是使用的是不同的setState,那么当前使用setState指向的还是当前页面,当然不生效了,知道了这个问题,那么我们只需要使用showDialog的setState来更新进度条的数值即可。
showDialog(
barrierDismissible: false,
context: context,
builder: (context) {
return StatefulBuilder(
builder: (context, state) {
mState = state;
......
我们只需要在builder中获取到这个showDialog的state,就可以全局使用了。
网友评论