Flutter中错误方向的错误尺寸

时间:2017-10-02 01:38:55

标签: widget dart flutter

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

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

然而,当旋转发生时,它总是返回前一个方向的大小(例如,如果它旋转到横向,它给出了纵向表示的大小,反之亦然)。是否有不同的方法来获取方向更改小部件的大小?

1 个答案:

答案 0 :(得分:2)

大小是在布局时确定的,但在构建时之前会调用build方法。但是,您的小部件的约束在构建时可用,并且大多数情况下您需要猜测您的大小将是什么。使用LayoutBuilder来阅读约束。

screenshot1 screenshot2

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,
          );
        }
      ),
    );
  }
}