【发布时间】:2026-02-18 04:35:01
【问题描述】:
我正在使用OpenContainer animation 打开一个屏幕,该屏幕可以在打开屏幕时显示警报对话框 - 屏幕尝试显示的项目的情况不再有效或被删除。
因为OpenContainer在动画过程中渲染屏幕,所以警告对话框显示了好几次。
我的尝试来解决这个问题是修改 OpenContainer buildPage 方法以将动画状态返回到 openBuilder 回调。不修改OpenContainer代码有没有更好的办法?
child: AnimatedBuilder(
animation: animation,
builder: (BuildContext context, Widget child) {
if (animation.isCompleted) {
return SizedBox.expand(
child: Material(
color: openColor,
elevation: openElevation,
shape: openShape,
child: Builder(
key: _openBuilderKey,
builder: (BuildContext context) {
return openBuilder(context, closeContainer, false); // added false
},
),
),
);
}
重现问题的代码 - https://gist.github.com/MartinJLee/0992a986ad641ef5b4f477fb1ce69249
【问题讨论】:
-
考虑改用AlertDialog。
-
@dev-aentgs 我正在使用 AlertDialog
-
对不起,我的意思是如果
OpenContainer只显示AlertDialog的新屏幕,那么直接使用AlertDialog,因为它默认隐藏原始屏幕。你能添加你想要达到的效果的图像吗? -
是的,我不只是显示
AlertDialog,该对话框将显示在可能被发布者删除的原始内容的顶部。截图是OpenContainer动画后会显示的内容。 -
我想我应该使用类似*.com/questions/49466556/…