J'ai besoin de centrer en bas un bouton contenu dans un fichier ListView
. Par bas, je veux dire en bas de l'écran, ou si le contenu de l'écran est plus long que la hauteur de l'écran, à la fin du contenu.
Je peux le faire en utilisant un Column
avec un Spacer
widget car la hauteur est définie, mais mon écran comporte une saisie de texte. Si j'utilise a Column
au lieu de a ListView
, l'écran déborde lorsque je tape.
Comment puis-je non plus
Column
mais empêchez l'écran de se redimensionner ou de déborder lors de la saisie; Je voudrais qu'il puisse faire défiler l'éther ou simplement que le clavier recouvre le contenu de l'écran lors de la frappe.Exemple de code de base:
return Scaffold(
body: Center(
child: Container(
width: workingWidth,
child: Center(
child: ListView(children: <Widget>[
ScreenHeader("Tell Us a Little About Yourself"),
TextFormField(
maxLines: 16,
controller: bioController,
autocorrect: true,
textCapitalization: TextCapitalization.sentences,
maxLength: 500,
decoration: InputDecoration(
contentPadding: EdgeInsets.all(paddingH5),
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: colorPrimary)),
border: UnderlineInputBorder(
borderSide: BorderSide(color: colorMuted)),
hintText: "Enter your bio here...",
hintStyle: textMuted,
),
),
Spacer(), //This doesn't work because I am using a ListView instead of a Column
RoundedButton(
buttonText: 'Continue',
buttonStyle: buttonPrimary,
onPressed: () {}
),
],)
),
),
),
);
Pour utiliser une Column
erreur sans bandes jaunes / noires lors de l'ouverture du clavier, vous devez l'envelopper dans un SingleChildScrollView
, mais Spacer
ne fonctionnera pas dans ce cas si vous ne déclarez pas la hauteur de son RenderFlex
parent.
Vous pouvez utiliser MediaQuery.of(context).size.height
pour obtenir la taille de l'écran sur son contexte et la définir sur votre Container
.
À la fin, vous pouvez obtenir la mise en page souhaitée avec ceci:
return Scaffold(
body: SingleChildScrollView(
child: Container(
width: workingWidth,
height: MediaQuery.of(context).size.height,
child: Column(
children: <Widget>[
ScreenHeader("Tell Us a Little About Yourself"),
TextFormField(
maxLines: 16,
controller: bioController,
autocorrect: true,
textCapitalization: TextCapitalization.sentences,
maxLength: 500,
decoration: InputDecoration(
contentPadding: EdgeInsets.all(paddingH5),
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: colorPrimary)),
border: UnderlineInputBorder(
borderSide: BorderSide(color: colorMuted)),
hintText: "Enter your bio here...",
hintStyle: textMuted,
),
),
Spacer(),
RoundedButton(
buttonText: 'Continue',
buttonStyle: buttonPrimary,
onPressed: () {}
),
],
),
),
),
);
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots