ウィジェット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ウィジェットのドキュメントを参照してください。