0
votes

TextFormfield disparaît le clic

J'ai formé pour saisir des informations de l'utilisateur. Mais lorsque je tapote sur TeintFormfield et le clavier, cela disparaît.

https://youtu.be/uhvl2hqwolq

Voici mon code: xxx


1 commentaires

Pourriez-vous ajouter une capture d'écran de son apparence avant et après la disparition, cela facilitera la tâche de vous aider si nous savons ce qui se passe également visuellement.


3 Réponses :


0
votes

envelopper le conteneur code> code> qui a le TextFormfield code> dans un SIZEBOX CODE>:

                new Form(
                autovalidate: false,
                key: _formKey,
                child: new Container(
                  height: orientation == Orientation.portrait ?  MediaQuery.of(context).size.height :  MediaQuery.of(context).size.width/1.2 ,
                  padding: EdgeInsets.only(left: 10.0, right: 10.0),
                  child:  new Column(
                    //mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                    children: <Widget>[
                       Container(
                        padding: EdgeInsets.only(top: 20.0),
                        child: Row(
                          mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                          children: <Widget>[
                            new SizedBox(
                            width: MediaQuery.of(context).size.width,
                            height: 100.0,
                            child: new Container(
                            padding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 0.0),
                             child:new TextFormField(
                             style: styleTextField,
                             keyboardType: TextInputType.text,
                             autofocus: true,
                             maxLength: 45,
                             decoration: InputDecoration(
                             hintText: 'Enter Title',
                             prefixIcon: Icon(
                             Icons.title,
                             size: 30.0,
                             color: blueColor,
                           )
                         ),
                         validator: validateTitle,
                         onSaved: (String val) {
                           strTitle = val;
                         },
                       ),
                     ),          
                   )

                           ]
                         )
                       )
                     ]
                   )
                 )
               )


3 commentaires

J'ai utilisé un SIZEBOX avec une colonne enfant , puis je mettez le TextFormfield à l'intérieur et cela fonctionne pour moi. Essayez de l'ajouter et dites-moi si cela fonctionnait pour vous.


Ok, laissez-moi vous dire plus de détails comme je comprends que votre solution est la meilleure pour un autre scénario. J'ai un contrôleur de barre d'onglets et pour cela, j'ai créé une classe distincte. Dans cette classe, j'ai ajouté un formulaire. Cela ne fonctionne pas comme dont j'ai besoin. Pour plus d'informations, j'ai aussi ajouté une vidéo.


@Codehunter Je vais vous montrer la hiérarchie complète de ma forme, je ne pense pas la mettre dans une barre d'onglets causant le problème.



1
votes

Par mon compréhension de la vidéo, car vous avez utilisé un listview code> à l'intérieur de votre formulaire, la liste défile vers le haut une fois que le clavier apparaît donc qu'il disparaît.

Essayez de régler resizetoavoidebottompadding : faux code> dans votre échafaudage. Cela fera apparaître le clavier comme une superposition et ne poussera pas le contenu vers le haut. P>

Exemple: P>

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      resizeToAvoidBottomPadding: false,
      body:new Container(
        child: new Form(
          key: _key,
          autovalidate: _validate,
          child: formUI(),
        ),
      ),
    );
  }


2 commentaires

Flutter: ══╡ Exception capturée par la bibliothèque de rendu ╞═══════════════════════════════════════ ══════════════════ Flutter: Le message suivant a été lancé pendant la mise en page: Flutter: un renduflex débordé de 295 pixels sur le fond. Flutter: Flutter: Le Renderflex débordant a une orientation d'axis.vertical. flotter: le bord du rendu qui déborde a été marqué dans le rendu avec un jaune et


Si j'exécute le code que vous avez publié ci-dessus, je ne reçois pas l'exception, mais l'exception est probablement parce que le conteneur principal a été donné une hauteur infinie. Essayez de définir une hauteur finie comme hauteur: 200.0 pour le conteneur et laissez-moi savoir si vous avez toujours l'exception.



0
votes

Définir le resizetoavoidbottompadding: false puis modifiez la colonne vers un listview


0 commentaires