web-dev-qa-db-fra.com

Lorsque le clavier apparaît, les widgets Flutter redimensionnent. Comment empêcher cela?

J'ai une colonne de widgets développés comme ceci:

 return new Container(
      child: new Column(
        crossAxisAlignment: CrossAxisAlignment.stretch,
        children: <Widget>[
          new Expanded(
            flex: 1,
            child: convertFrom,
          ),
          new Expanded(
            flex: 1,
            child: convertTo,
          ),
          new Expanded(
            flex: 1,
            child: description,
          ),
        ],
      ),
    );

Cela ressemble à ceci: enter image description here

convertFrom, inclut un TextField. Lorsque je tape sur ce champ de texte, le clavier Android apparaît à l'écran. Ceci modifie la taille de l'écran, ainsi les widgets se redimensionnent comme suit: enter image description here

Existe-t-il un moyen de "superposer" le clavier pour que la colonne ne soit pas redimensionnée? Si je n'utilise pas les widgets Expanded et ne fixe pas une hauteur fixe pour chaque widget, les widgets ne sont pas redimensionnés. espace). Ce n'est pas non plus flexible pour toutes les tailles d'écran.

Je ne sais pas s'il s'agit d'une application spécifique à Android ou à Flutter.

28
Mary

Dans votre Scaffold, définissez la propriété resizeToAvoidBottomInset sur false.

La propriété "resizeToAvoidBottomPadding" est obsolète maintenant .... Dans votre Scaffold, définissez la propriété resizeToAvoidBottomPadding sur false.

97
aziza

Définissez resizeToAvoidBottomInset sur false au lieu de resizeToAvoidBottomPadding qui est obsolète.

    return Scaffold(
      resizeToAvoidBottomInset : false,
      body: YourWidgets(),
    );
4
ArtiomLK

En fonction du cas d'utilisation, vous pouvez également envisager d'utiliser un listview . Cela garantirait que le contenu défile lorsqu'il n'y a pas assez de place. A titre d'exemple, vous pouvez regarder la démo textfield dans l'application de la galerie

2
aptik