我正在尝试获取小部件的高度,但它会打印相同的值
I/flutter (19253): full height: 976.0 I/flutter (19253): safe height: 976.0
我猜第二个值应该更小,因为容器位于状态栏下方。我做错了什么?我需要高度,因为在此容器中将是Wrap小部件(实际上是ReorderableWrap https://pub.dartlang.org/packages/reorderables#-readme-tab-),其中包含36张卡片,3行乘12张卡片,并且卡片高度必须为1 / 3个容器。
我找不到好的可重排序网格。但是无论如何,我的问题是,为什么安全区域中的容器与填充整个屏幕的容器具有相同的高度?
import 'package:flutter/material.dart'; void main() { runApp(_MyApp()); } class _MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, home: Scaffold(body: _Body()), ); } } class _Body extends StatelessWidget { @override Widget build(BuildContext context) { print('full height: ${MediaQuery.of(context).size.height}'); return Container( constraints: BoxConstraints.expand(), decoration: BoxDecoration(color: Colors.red), child: SafeArea( child: _SafeHeightWidget(), ), ); } } class _SafeHeightWidget extends StatelessWidget { @override Widget build(BuildContext context) { print('safe height: ${MediaQuery.of(context).size.height}'); return Container( color: Colors.lightBlue, ); } }
Doc.. 13
您总是可以LayoutBuilder
在这种情况下使用。
child: SafeArea( child: new LayoutBuilder( builder: (BuildContext context, BoxConstraints constraints) { // constraints variable has the size info return Container(); } ), ),
有关更多信息:https : //www.youtube.com/watch?v=IYDVcriKjsw
您总是可以LayoutBuilder
在这种情况下使用。
child: SafeArea( child: new LayoutBuilder( builder: (BuildContext context, BoxConstraints constraints) { // constraints variable has the size info return Container(); } ), ),
有关更多信息:https : //www.youtube.com/watch?v=IYDVcriKjsw