J'ai créé une page contenant plusieurs champs de texte et boutons dans une colonne contenue dans un conteneur contenant une image d'arrière-plan. Et ce conteneur est lui-même l'enfant d'un widget scrollview. Par conséquent, lorsqu'une personne clique sur l'un des champs, son clavier apparaîtra (en prenant une partie de l'écran), ce qui signifie que certains boutons/champs sont hors écran, ce qui correspond à l'objectif du widget scrollview.Comment limiter la distance de défilement dans une vue déroulante dans Flutter?
Le problème ici est que je veux limiter à quel point la vue de défilement permet à un utilisateur de faire défiler.
Il y a un espace vide sous le bouton le plus bas, et je ne veux pas que l'utilisateur puisse faire défiler tout le chemin. Cela permet également de simplifier l'expérience et de ne pas dépasser les champs qu'il doit saisir.
Mais comme l'image d'arrière-plan fait partie de la vue déroulante, la vue permet à l'utilisateur de faire défiler aussi loin que possible. comme le bas de l'image. Je veux limiter cela.
En guise de suivi, j'essaie de comprendre comment définir une position de défilement initiale. (Ainsi, lorsque vous cliquez sur un champ, la vue déroulante défile jusqu'au premier champ de texte, de sorte que tous les champs sont visibles, sans que l'utilisateur doive les faire défiler, mais je ne souhaite pas que cette position de défilement soit appliquée à nouveau. chaque fois que l'utilisateur clique sur un champ, bien sûr.)
Voici le pertinent (si l'un de mes codes semble vraiment mauvais, veuillez le dire, je suis nouveau à la programmation en général et accepter tous les conseils pour améliorer):
class LoginPageConstructor extends StatelessWidget {
@override
Widget build(BuildContext context) {
AssetImage loginBackgroundAsset =
new AssetImage("assets/loginscreen/backgroundrock.png");
// var _scrollController = new ScrollController(
// initialScrollOffset: 200.0,
// keepScrollOffset: true);
return new Scaffold(
body: new Container(
child: new ListView(key: new PageStorageKey("Divider 1"),
// controller: _scrollController,
children: <Widget>[
new Stack(children: <Widget>[
new Container(
constraints: new BoxConstraints.expand(height: 640.0),
decoration: new BoxDecoration(
image: new DecorationImage(
image: loginBackgroundAsset, fit: BoxFit.cover)),
child: new Column(
children: <Widget>[
new Divider(height: 300.0,),
new Center(child: new UsernameText(),),
new Divider(height: 8.0,),
new Center(child: new PasswordText(),),
new Divider(),
new LoginButton(),
new Divider(),
new SignUpButton(),
],
))
])
],
),
));
}
}
Merci beaucoup. Je fais ça depuis si longtemps ... –