use*_*643 2 flutter flutter-layout
我有一个最小高度为 50 和最大高度为 400 的 ConstrainedBox。CB 包含一个将自身着色为黄色的容器。
请注意,这里的 CB 用作抽象。基本上,该 CB 可能是具有最小/最大约束的任何类型的小部件。
现在我有两种情况:
我想让 CB 尽可能大(取 maxHeight)。
我想让 CB 尽可能小(取 minHeight)。
我试过
Widget build(BuildContext _) => Scaffold(
backgroundColor: Colors.transparent,
body: SizedBox.expand(
child: ConstrainedBox(
constraints: BoxConstraints(minHeight: 50, maxHeight: 400),
child: Container(color: Colors.yellow))));
Run Code Online (Sandbox Code Playgroud)
它显示了一个全屏黄色框,但我想要 400 像素!
Widget build(BuildContext _) => Scaffold(
backgroundColor: Colors.transparent,
body: SizedBox.shrink(
child: ConstrainedBox(
constraints: BoxConstraints(minHeight: 50, maxHeight: 400),
child: Container(color: Colors.yellow))));
Run Code Online (Sandbox Code Playgroud)
这导致一个空的脚手架,但我想要 50 像素!
编辑:我解决了这个问题,请看我自己的答案。
玩了一会儿后,我想出了以下几点:
Widget build(BuildContext _) => Scaffold(
backgroundColor: Colors.transparent,
body: IntrinsicHeight(
child: ConstrainedBox(
constraints: BoxConstraints(minHeight: 50, maxHeight: 400),
child: Container(color: Colors.yellow))));
Run Code Online (Sandbox Code Playgroud)
将以 50 像素渲染框,并且
Widget build(BuildContext _) => Scaffold(
backgroundColor: Colors.transparent,
body: Container(
child: ConstrainedBox(
constraints: BoxConstraints(minHeight: 50, maxHeight: 400),
child: Container(color: Colors.yellow))));
Run Code Online (Sandbox Code Playgroud)
将以 400 像素渲染框。
因此,看起来 IntrinsicHeight 会将孩子的大小调整为其minHeight,而将其放入 Container 会产生maxHeight。
| 归档时间: |
|
| 查看次数: |
1805 次 |
| 最近记录: |