dart 有可能得到脚手架的身高和宽度吗?

jei2mxaa  于 12个月前  发布在  其他
关注(0)|答案(6)|浏览(119)

我正在尝试为我在应用程序中实现的小部件设置动态大小,我目前正在使用:

MediaQuery.of(context).size.width/height

字符串
这给你的屏幕的大小,但我需要的小部件是基于脚手架机构的大小,而不是全屏

bq9c1y66

bq9c1y661#

您可以为您的Scaffold使用Builder:

return Scaffold(
  appBar: AppBar(),
  body: Builder(
    builder: (context) {
      return Stack(
        children: <Widget>[

字符串
然后:

bodyHeight = MediaQuery.of(context).size.height - Scaffold.of(context).appBarMaxHeight


至少,我找到了这样的解决方案。

xj3cbfub

xj3cbfub3#

这里是如何你可以得到脚手架身高正确
首先获取AppBar高度,需要使用变量。

var appBar = AppBar(
      title: Text('Testing'),
    );

字符串
现在,按照下面的代码[这基本上是=>总高度- AppBar的高度-填充目前在顶部(应用程序状态栏的高度)]

final bodyHeight = MediaQuery.of(context).size.height -
                  -appBar.preferredSize.height -
                  MediaQuery.of(context).padding.top

**如何使用它?**假设您有2个孩子的列

Column(children: [
        Container(
          height: bodyHeight * 0.7,
          child: ...,
        ),
        Container(
          height: bodyHeight * 0.3,
          child: ...,
        ),
      ],
)

eanckbw9

eanckbw94#

还可以从MediaQuery.of(context). size.height中减去appbar的高度

dldeef67

dldeef675#

只是简单地这样做,以获得大小(在这种情况下的高度),你的脚手架机构单独。

final fullHeight = MediaQuery.of(context).size.height;
final appBar = AppBar(); //Need to instantiate this here to get its size
final appBarHeight = appBar.preferredSize.height + MediaQuery.of(context).padding.top;
final scaffoldBodyHeight = fullHeight - appBarHeight;

字符串

**注意:**appBarHeight是appBar的高度和设备状态栏的高度之和。
scaffoldBodyHeight是您的脚手架主体的高度!

flvtvl50

flvtvl506#

像这样使用材质生成器属性

scaffoldMessengerKey: Repository.messengerKey(context),
          scrollBehavior: AppScrollBehavior(PlatformInterface.appPlatform),
          builder: (context, child) {
            return Center(
              child: ConstrainedBox(
                constraints: BoxConstraints(maxWidth: 300, maxHeight: 600),
                child: child!,
              ),
            );
          },

字符串

相关问题