Flutter 方向错误的尺寸错误

Wrong size for wrong orientation in Flutter

我正在使用以下代码获取 widget 的大小:

 @override
 Widget build(BuildContext context) {
    RenderBox renderBox = context.findRenderObject();
    Size size = renderBox.size;
 }

但是,当发生旋转时,它总是 returns 先前方向的大小(例如,如果它旋转到横向,它会给我纵向表示的大小,反之亦然)。是否有不同的方法来获取方向更改时小部件的大小?

大小在布局时确定,但您的 build 方法在此之前在构建时调用。但是,您的小部件的约束条件在构建时可用,并且大多数时候您只需要猜测您的尺寸将是多少。使用 LayoutBuilder 读取约束。

import 'package:flutter/material.dart';

void main() {
  runApp(new MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: new LayoutBuilder(
        builder: (BuildContext context, BoxConstraints constraints) {
          return new Text(
            '${constraints.maxWidth}x${constraints.maxHeight}',
            style: Theme.of(context).textTheme.display3,
          );
        }
      ),
    );
  }
}