Estou tentando definir uma imagem de plano de fundo para a página inicial. Estou obtendo o lugar da imagem no início da tela e preenchendo a largura, mas não a altura. Estou faltando alguma coisa no meu código? Existem padrões de imagem para vibração? As imagens são dimensionadas com base na resolução de tela de cada telefone?
class BaseLayout extends StatelessWidget{
@override
Widget build(BuildContext context){
return new Scaffold(
body: new Container(
child: new Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
new Image.asset("assets/images/bulb.jpg")
]
)
)
);
}
}
Respostas:
Não tenho certeza se entendi sua pergunta, mas se você quiser que a imagem ocupe a tela inteira, você pode usar um
DecorationImage
com um ajuste deBoxFit.cover
.Para sua segunda pergunta, aqui está um link para a documentação sobre como incorporar imagens de ativos dependentes de resolução em seu aplicativo.
fonte
constraints: BoxConstraints.expand()
DecorationImage(image: Image.network("http://example.com/image.jpg").image, ...)
width: double.infinity
ao Container com a imagem.Se você usar um
Container
como o corpo deScaffold
, seu tamanho será de acordo com o tamanho de seu filho e, geralmente, não é isso que você deseja quando tenta adicionar uma imagem de plano de fundo ao seu aplicativo.Olhando para esta outra questão, @colin-jackson também sugeriu usar em
Stack
vez deContainer
como o corpo doScaffold
e definitivamente faz o que você deseja alcançar.É assim que meu código se parece
fonte
Você pode usar
DecoratedBox
.Resultado:
fonte
Você pode usar
Stack
para esticar a imagem para a tela inteira.Nota: Opcionalmente se estiver usando um
Scaffold
, você pode colocar oStack
interiorScaffold
com ou sem deAppBar
acordo com suas necessidades.fonte
ShaderMask
, portanto não daria certo colocar umimage:
nome.Consegui aplicar um fundo abaixo do
Scaffold
(e até mesmo eleAppBar
) colocando oScaffold
sob aStack
e definindo aContainer
na primeira "camada" com o conjunto efit: BoxFit.cover
propriedade da imagem de fundo .Tanto o
Scaffold
quantoAppBar
deve ter obackgroundColor
conjunto comoColor.transparent
e oelevation
deAppBar
deve ser 0 (zero).Voilà! Agora você tem um bom fundo abaixo de todo o Scaffold e AppBar! :)
fonte
Podemos usar Container e marcar sua altura como infinito
Resultado:
fonte
isso também funciona dentro de um contêiner.
fonte
Para definir uma imagem de plano de fundo sem encolher após adicionar o filho, use este código.
fonte
fonte