Flutter 中 Flex 中的固定(灵活)和拉伸(扩展)元素

Gaz*_*kus 3 layout flutter

在 Flutter 布局系统中,我认为将 andFlexible和放在Expandeda 中Column将使 成为Flexible其子级的大小,并Expanded占据整个剩余空间。但是,Expanded不会填满所有剩余空间,并在其后面留下一些空白空间。

这是我想做的:

+-----------------------------+
| Flexible, decides own size. |
+-----------------------------+
| Expanded, fills up the rest |
|                             |
|                             |
|                             |
|                             |
|                             |
|                             |
|                             |
|                             |
|                             |
+-----------------------------+
Run Code Online (Sandbox Code Playgroud)

然而,结果却是这样的:

+-----------------------------+
| Flexible, decides own size. |
+-----------------------------+
| Expanded, takes up only     |
| some of the remaining space |
| looks like about 50% of     |
| the whole parent            |
|                             |
|                             |
+-----------------------------+
| LOL here's unused space     |
| for no good reason          |
|                             |
+-----------------------------+
Run Code Online (Sandbox Code Playgroud)

我怀疑自己,然后我看到同样的事情被报告为连续的错误: https: //github.com/flutter/flutter/issues/20575

我想我的问题是,如何拥有一个固定大小的小部件(其大小由其子部件决定),然后是一个占据父部件其余部分的小部件?

Gaz*_*kus 6

好吧,答案就是省略Flexible第一个中的 并将其内容放在那里。然后,Expanded就可以很好地填满其余的空间。

所以解决方案是这样的:

+------------------------------+
| Just put your self-sized     |
| widget here without Flexible |
+------------------------------+
| Expanded, fills up the rest  |
|                              |
|                              |
|                              |
|                              |
|                              |
|                              |
|                              |
|                              |
|                              |
+------------------------------+
Run Code Online (Sandbox Code Playgroud)