如何解决'已关闭的可关闭小部件仍是树的一部分。'颤抖中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决'已关闭的可关闭小部件仍是树的一部分。'颤抖中相关的知识,希望对你有一定的参考价值。
我显示CupertinoPopupSurface
并使用Dismissible
小部件以手势关闭对话框。向下滑动时,我叫Navigator.of(context).pop();
以关闭对话框并返回上一屏幕,但我却收到错误消息,提示Dismissible
仍是树的一部分。
我尝试提供唯一键Dismissible(key: UniqueKey(), ...)
,但仍然无法正常工作。
CupertinoPopupSurface(
isSurfacePainted: false,
child: Container(
padding: const EdgeInsets.only(top: 100),
child: Dismissible(
key: UniqueKey(),
direction: DismissDirection.down,
onDismissed: (direction) {
Navigator.of(context).pop();
},
child: Container(
decoration: BoxDecoration(
borderRadius:
BorderRadius.vertical(top: Radius.circular(40)),
),
child: ZoneFilter(
visit: visit, accountsViewModel: accountsViewModel)),
),
),
);
我想打电话给Navigator.of(context).pop();
并摆脱Dismissible小部件。
答案
您的可删除小部件位于您的弹出窗口内,而不是应该位于其周围。您可以通过将其更改为以下代码来使其工作。不过,如果有一个合理的警告,它会感觉很慢,因为对话框的深色背景只会在关闭动画结束后消失。
return Dismissible(
key: UniqueKey(),
direction: DismissDirection.down,
onDismissed: (direction) => Navigator.of(context).pop();,
child: CupertinoPopupSurface(
isSurfacePainted: false,
child: Container(
padding: const EdgeInsets.only(top: 100),
child: Container(
decoration: BoxDecoration(
borderRadius:
BorderRadius.vertical(top: Radius.circular(40)),
),
child: ZoneFilter(
visit: visit, accountsViewModel: accountsViewModel)),
),
),
),
);
以上是关于如何解决'已关闭的可关闭小部件仍是树的一部分。'颤抖中的主要内容,如果未能解决你的问题,请参考以下文章