首页 > 解决方案 > 如何调整 ShowDialog 子项的大小

问题描述

使用showDialog(...builder: ...),我无法调整SomeWidget.

怎么了

无论我尝试插入什么小部件,builder都无法控制大小

showDialog(context: context, builder: (context) => Container(
  color: Colors.white,
  width: 10.0,
  height: 10.0,
));

无论我在width和中插入哪些值height,对话框总是全屏显示。在Container这种情况下将占用所有可用空间。我在上面发布的代码将导致以下结果:

显示 Android 屏幕的全尺寸屏幕截图,其中除了导航栏、状态栏和调试标签之外的所有内容都用白色填充。SafeArea你可以看到来自这里

填充

做同样的事情,但用 aPadding和 apply将其包围起来padding起到 sizing的作用。应用填充将从Container. 这是我想出的唯一成功的方法。例如SizedBoxConstrainedBox不有所作为。

我想看到什么

CupertinoAlertDialogMaterialAlertDialog都可以作为小部件插入到builderof 中showDialog,并且不会填满整个屏幕

我试图弄清楚这两个小部件的作用与我不同,但对我来说,它们似乎也在使用ContainersizingConstrainedBoxas sizing,这两种方法都不适合我

标签: dartflutter

解决方案


问题是:尺寸本身不足以在屏幕上实际呈现它。

Flutter 需要一种方法来知道如何在屏幕内对齐 10x10 的框。
ACenter应该做的伎俩:

showDialog(
  builder: (context) {
    return Center(
      child: Container(),
    )
  }
)

AlertDialog和类似的隐含地为你做同样的事情。


推荐阅读