ウィジェットExpanded
とFlexible
ウィジェットの両方を使用しましたが、同じように機能しているようです。
ExpandedとFlexibleの違いは何ですか?
回答:
Expanded
の省略形です Flexible
このように拡張を使用する:
Expanded(
child: Foo(),
);
厳密に同等です:
Flexible(
fit: FlexFit.tight,
child: Foo(),
);
レスポンシブレイアウトによっては、別の、便利なものが必要な場合に使用Flexible
するExpanded
ことをお勧めしfit
ます。
違いFlexFit.tight
とはFlexFit.loose
緩いが、その子供は子供がすべての利用可能なスペースを埋めるためというタイトな力ながら、最大サイズを持つことができるようになるということです。
Maximum size
をAvailable space
意味するのではありませんか?
Flexible.tight
子供たちに利用可能なスペース全体を占有Flexible.loose
させ、子供たちにやりたいことをさせます。タイプによっては、スペース全体を占める子供もいれば、そうでない子供もいます。
フレキシブルの下のウィジェットはデフォルトでWRAP_CONTENTですが、パラメーターFitを使用して変更できます。
Expandedの下のウィジェットはMATCH_PARENTであり、flexを使用して変更できます。
Expanded
-Flexible
セットフィットです
class Expanded extends Flexible {
const Expanded({
Key key,
int flex = 1,
@required Widget child,
}) : super(
key: key,
flex: flex,
fit: FlexFit.tight,
child: child
);
}
のFlexible
代わりにを使用する場合の唯一の違いExpanded
はFlexible
、子の幅をFlexible
それ自体と同じかそれより小さくする一方でExpanded
、子の幅をまったく同じにすることExpanded
です。しかし、両方ともExpanded
、Flexible
自分のサイズを決めるときは子供の幅を無視します。
Row(children:[
Flexible(
child: Container(color: Colors.red, child: Text('This is a very long text that won’t fit the line.'))),
Flexible(
child: Container(color: Colors.green, child: Text(‘Goodbye!’))),
]
)
注:これは、Row
子供をサイズに比例して拡大することは不可能であることを意味します。行は、正確な子の幅を使用するExpanded
か、またはを使用するときにそれを完全に無視しますFlexible
。
flex
要素を尊重して使用可能なすべてのスペースを使用します。詳細については、Expanded
ウィジェットのドキュメントを参照してください。