Flutter 如何更新Dialog中的状态

在Flutter中,当需要在Dialog中根据用户交互动态显示数据时,传统的setState方法无法更新Dialog内容。原因是Dialog的context不同于原页面。解决方法是使用StatefulBuilder,它提供了一个新的setState函数用于Dialog的UI更新。通过StatefulBuilder的builder方法,可以创建一个拥有独立setState功能的Dialog,从而实现在Dialog内的动态更新。
摘要由CSDN通过智能技术生成

❓问题描述

在Flutter中使用showDialog弹出的Dialog,需要根据用户的交互,在Dialog中动态的显示数据,如何实现?

🛣固有思路

用户在dialog中交互后,使用setState()方法进行UI的更新,可是在实际的过程中,使用setState并不能进行dialog页面的更新,使用这种思路不能解决问题。

🍡为什么

在showDialog的注释中,有这样一段话,如下所示,简单翻译一下就是“ builder”返回的context与调用showDialog时的context不同。使用StatefulBuilder或者StatefulWidget来动态的更新UI,那么接下来就使用StatefulBuilder来动态的更新UI吧

/// This function takes a `builder` which typically builds a [Dialog] widget. 
/// Content below the dialog is dimmed with a [ModalBarrier]. The widget 
/// returned by the `builder` does not share a context with the location that 
/// `showDialog` is originally called from. Use a [StatefulBuilder] or a
/// custom [StatefulWidget] if the dialog needs to update dynamically.

🎋实现

StatefulBuilder的bu

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值