小编Eug*_*ene的帖子

在SafeArea中获取小部件高度的正确方法

我正在尝试获取小部件的高度,但它会打印相同的值

I/flutter (19253): full height: 976.0
I/flutter (19253): safe height: 976.0
Run Code Online (Sandbox Code Playgroud)

我猜第二个值应该更小,因为容器位于状态栏下方。我做错了什么?我需要高度,因为在此容器中将是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 …
Run Code Online (Sandbox Code Playgroud)

flutter

9
推荐指数
5
解决办法
1766
查看次数

标签 统计

flutter ×1