Eu usei os dois Expanded
e Flexible
os widgets e eles parecem funcionar mesmo.
Qual é a diferença entre Expandido e Flexível?
Eu usei os dois Expanded
e Flexible
os widgets e eles parecem funcionar mesmo.
Qual é a diferença entre Expandido e Flexível?
Respostas:
Expanded
é apenas uma abreviatura para Flexible
Usando expandido desta forma:
Expanded(
child: Foo(),
);
é estritamente equivalente a:
Flexible(
fit: FlexFit.tight,
child: Foo(),
);
Você pode querer usar Flexible
over Expanded
quando quiser um diferente fit
, útil em alguns layouts responsivos.
A diferença entre FlexFit.tight
e FlexFit.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.
Maximum size
e Available space
significa a mesma coisa aqui?
Flexible.tight
vai forçar as crianças a ocuparem todo o espaço disponível e Flexible.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 .
Expanded
- é Flexible
com ajuste definido
class Expanded extends Flexible {
const Expanded({
Key key,
int flex = 1,
@required Widget child,
}) : super(
key: key,
flex: flex,
fit: FlexFit.tight,
child: child
);
}
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 ...
A única diferença se você usar em Flexible
vez de Expanded
, é que Flexible
permite que seu filho tenha a mesma largura ou menor que o Flexible
próprio, enquanto Expanded
força seu filho a ter exatamente a mesma largura de Expanded
. Mas ambos Expanded
e Flexible
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ê usa Expanded
ou Flexible
.
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.
flex
fator. Veja a documentação doExpanded
widget para mais informações.