Flutter 弹框数据更新

在Flutter开发中,当封装弹框组件后,发现修改的数据无法触发页面重新渲染。原因是弹框被视为新页面,setState只更新前一个页面。解决方案是使用StatefulBuilder,确保弹框内容随数据变化而更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、提出的问题

我封装一个弹框组件之后发现修改了数据,但是页面并没有重新渲染。

二、问题的原因

在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: [
              ......
            ],
          ),
        ),
      ),
    );
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值