Scaffold(
appBar: AppBar(),
body: Column(
children: <Widget>[
Row(
children: <Widget>[
buildExpanded(),
buildFlexible(),
],
),
Row(
children: <Widget>[
buildExpanded(),
buildExpanded(),
],
),
Row(
children: <Widget>[
buildFlexible(),
buildFlexible(),
],
),
],
),
);
flex
fator. Veja a documentação doExpanded
widget para mais informações.Expanded
é apenas uma abreviatura paraFlexible
Usando expandido desta forma:
é estritamente equivalente a:
Você pode querer usar
Flexible
overExpanded
quando quiser um diferentefit
, útil em alguns layouts responsivos.A diferença entre
FlexFit.tight
eFlexFit.loose
é que solto permitirá que seu filho tenha um tamanho máximo, enquanto a força apertada força esse filho a preencher todo o espaço disponível.fonte
Maximum size
eAvailable space
significa a mesma coisa aqui?Flexible.tight
vai forçar as crianças a ocuparem todo o espaço disponível eFlexible.loose
vai deixar as crianças fazerem o que quiserem. Algumas crianças podem ocupar todo o espaço e outras não, dependendo de quais são seus tipos.Widget em Flexível são, por padrão, WRAP_CONTENT, embora você possa alterá-lo usando o parâmetro Fit.
O widget em Expandido é MATCH_PARENT, você pode alterá-lo usando o flex .
fonte
Expanded
- éFlexible
com ajuste definidoclass Expanded extends Flexible { const Expanded({ Key key, int flex = 1, @required Widget child, }) : super( key: key, flex: flex, fit: FlexFit.tight, child: child ); }
fonte
Você pode usar Flexível para redimensionar os widgets em linhas e colunas . É usado principalmente para ajustar o espaço dos diferentes widgets filhos enquanto mantém a relação com seus widgets pais.
Enquanto isso, Expanded altera as restrições enviadas aos filhos de linhas e colunas ; ajuda a preencher os espaços disponíveis. Portanto, quando você envolve seu filho em um widget Expandido, ele preenche os espaços vazios.
Fornecer esses vídeos do canal oficial do Flutter no YouTube apenas para ajudar as pessoas, que podem esperar por isso no futuro ...
Expandido:
Flexível:
fonte
A única diferença se você usar em
Flexible
vez deExpanded
, é queFlexible
permite que seu filho tenha a mesma largura ou menor que oFlexible
próprio, enquantoExpanded
força seu filho a ter exatamente a mesma largura deExpanded
. Mas ambosExpanded
eFlexible
ignoram a largura de seus filhos quando se medem.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!’))), ] )
Observação : isso significa que é impossível expandir os
Row
filhos proporcionalmente aos seus tamanhos. A linha usa a largura exata do filho ou a ignora completamente quando você usaExpanded
ouFlexible
.fonte
Expanded () nada mais é do que flexível () com
Flexible (fit: FlexFit.tight) = Expanded()
mas o flexível usa
fit :FlexFit.loose
por padrão.FlexFit.tight = Quer se ajustar bem aos pais, ocupando o máximo de espaço possível.
FlexFit.loose = Quer se soltar no pai, ocupando o mínimo de espaço possível para si.
fonte