一、提出的问题
我封装一个弹框组件之后发现修改了数据,但是页面并没有重新渲染。
二、问题的原因
在flutter中弹框其实是一个新的页面,所以调用setState时,其实重新渲染的是弹框前的页面,弹框本身的页面并不会进行重新渲染,需要调用弹框中的setState才行。
三、解决问题
使用StatefulBuilder包裹要展示的内容,代码如下:
Future<bool?> dialog(BuildContext context, List list) async {
return showModalBottomSheet<bool>(
context: context,
builder: (BuildContext context) => StatefulBuilder(
builder: (context, setState) => Container(
child: Flex(
direction: Axis.vertical,
children: [
......
],
),
),
),
);
}