J'essaie de définir une image d'arrière-plan pour la page d'accueil. J'obtiens la place de l'image depuis le début de l'écran et remplis la largeur mais pas la hauteur. Est-ce que je manque quelque chose dans mon code? Existe-t-il des normes d'image pour le scintillement? Les images sont-elles mises à l'échelle en fonction de la résolution d'écran de chaque téléphone?
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")
]
)
)
);
}
}
Réponses:
Je ne suis pas sûr de comprendre votre question, mais si vous voulez que l'image remplisse tout l'écran, vous pouvez utiliser un
DecorationImage
avec un ajustement deBoxFit.cover
.Pour votre deuxième question, voici un lien vers la documentation sur la façon d'intégrer des images d'actifs dépendant de la résolution dans votre application.
la source
constraints: BoxConstraints.expand()
DecorationImage(image: Image.network("http://example.com/image.jpg").image, ...)
width: double.infinity
au conteneur avec l'image.Si vous utilisez a
Container
comme corps deScaffold
, sa taille sera en conséquence la taille de son enfant, et ce n'est généralement pas ce que vous voulez lorsque vous essayez d'ajouter une image d'arrière-plan à votre application.En regardant cette autre question, @ collin-jackson suggérait également d'utiliser à la
Stack
place deContainer
comme corps duScaffold
et il fait certainement ce que vous voulez réaliser.Voici à quoi ressemble mon code
la source
Vous pouvez utiliser
DecoratedBox
.Production:
la source
Vous pouvez utiliser
Stack
pour étirer l'image en plein écran.Remarque: En option, si vous utilisez a
Scaffold
, vous pouvez placer l'Stack
intérieurScaffold
avec ou sansAppBar
selon vos besoins.la source
ShaderMask
, donc ça ne marcherait pas de mettre unimage:
nom.J'ai pu appliquer un arrière-plan sous le
Scaffold
(et même c'estAppBar
) en mettant leScaffold
sous aStack
et en définissant unContainer
dans le premier "calque" avec le jeu d'image d'arrière-plan et lafit: BoxFit.cover
propriété.Le
Scaffold
etAppBar
doit avoir la valeurbackgroundColor
définie commeColor.transparent
et leelevation
deAppBar
doit être 0 (zéro).Voilà! Vous avez maintenant un joli fond sous l'ensemble de l'échafaudage et de l'AppBar! :)
la source
Nous pouvons utiliser Container et marquer sa hauteur comme infini
Production:
la source
cela fonctionne également à l'intérieur d'un conteneur.
la source
Pour définir une image d'arrière-plan sans réduire après l'ajout de l'enfant, utilisez ce code.
la source
la source