我使用以下代码来获取widget
的大小:
@override
Widget build(BuildContext context) {
RenderBox renderBox = context.findRenderObject();
Size size = renderBox.size;
}
然而,当旋转发生时,它总是返回前一个方向的大小(例如,如果它旋转到横向,它给出了纵向表示的大小,反之亦然)。是否有不同的方法来获取方向更改小部件的大小?
答案 0 :(得分:2)
大小是在布局时确定的,但在构建时之前会调用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,
);
}
),
);
}
}