Flutter SnackBar 在 Scaffold 中留下不可见的填充

Posted

技术标签:

【中文标题】Flutter SnackBar 在 Scaffold 中留下不可见的填充【英文标题】:Flutter SnackBar leaves an invisible padding in the Scaffold 【发布时间】:2021-07-24 15:36:02 【问题描述】:

我在页面中显示了一个登录按钮。例如,用户登录后,SnackBar 将显示“Logged In with Google”。虽然SnackBar 仍在显示,但Scaffold 的主体正在构建到一个新页面,登录用户可以访问该页面。但是,在 Snackbar 仍然显示时构建页面会在脚手架中留下一个填充,在 SnackBar 使用的区域中,因此底层 Scaffold body 仍然可见,但您无法与其交互.如果body 的底部有一个按钮,则不会点击该按钮,因为(已经关闭的)SnackBar 留下的不可见填充会阻止下面的内容。

我错过了什么?还有其他方法可以产生预期的结果吗?

【问题讨论】:

我找到了问题的根本原因。如果在一个页面中显示一个 Snackbar,并且在显示它时,用户移动到另一个页面(例如在 bottomNagationBar 中),则新页面是使用我提到的填充问题构建的。但是,如果SnackBar 在移动到另一个页面之前消失,则没有问题。因此,将可见的SnackBar“传输”到另一个页面会产生很多问题。知道可以做什么吗? 【参考方案1】:

我在每一页都用ScaffoldMessenger 包裹了Scaffold,现在似乎可以工作了。我稍后会详细说明答案。

【讨论】:

以上是关于Flutter SnackBar 在 Scaffold 中留下不可见的填充的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Widgets 之 SnackBar

Flutter - 如何在“Future”中显示“snackbar”

flutter SnackBar 底部消息提示

如何在 Flutter 中创建和使用 SnackBar 进行重用(全局)

如何在 Flutter 中延迟 SnackBar

更改 Flutter Snackbar 的位置