Comment puis-je rejeter le clavier à l'écran?
Je suis la collecte de la saisie de l'utilisateur avec un TextFormField
et lorsque l'utilisateur appuie sur un FloatingActionButton
indiquant qu'ils sont fait, je veux rejeter le clavier à l'écran.
Comment puis-je faire disparaître le clavier automatiquement?
import 'package:flutter/material.dart';
class MyHomePage extends StatefulWidget {
MyHomePageState createState() => new MyHomePageState();
}
class MyHomePageState extends State<MyHomePage> {
TextEditingController _controller = new TextEditingController();
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(),
floatingActionButton: new FloatingActionButton(
child: new Icon(Icons.send),
onPressed: () {
setState(() {
//send message
//dismiss on screen keyboard here
_controller.clear();
});
},
),
body: new Container(
alignment: FractionalOffset.center,
padding: new EdgeInsets.all(20.0),
child: new TextFormField(
controller: _controller,
decoration: new InputDecoration(labelText: 'Example Text'),
),
),
);
}
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new MyHomePage(),
);
}
}
void main() {
runApp(new MyApp());
}
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire disparaître le clavier en enlevant l'accent de la
TextFormField
et de le donner à une enceinteFocusNode
:onChanged:
ou dans l'action de votre bouton personnalisé?Solution avec FocusScope ne fonctionne pas pour moi.
J'ai trouvé un autre:
Il a résolu mon problème.
build
méthode par exemple.Prendre un
GestureDetector
sur le haut niveau de tous les widgets etonTap()
degestureDetector
et appelAucune des solutions ci-dessus ne fonctionne pas pour moi.
Flutter suggère ce -
Mettez votre widget à l'intérieur de nouveau GestureDetector() sur laquelle pression du doigt permet de cacher le clavier et onTap utilisation FocusScope.de(contexte).requestFocus(nouveau FocusNode())
Vous pouvez utiliser
unfocus()
méthode deFocusNode
classe.Comme dans Flutter tout est un widget, j'ai décidé d'envelopper le
SystemChannels.textInput.invokeMethod('TextInput.hide');
et laFocusScope.of(context).requestFocus(FocusNode());
approche dans un court module d'utilitaire avec un widget et un mixin en elle.Avec le widget, vous pouvez placer n'importe quel widget (très pratique lors de l'utilisation d'une bonne IDE de soutien) avec le
KeyboardHider
widget:Avec le mixin, vous pouvez déclencher cacher le clavier de n'importe quel état ou un widget sur l'interaction:
Il suffit de créer un
keyboard_hider.dart
fichier et le widget et mixin sont prêts à l'emploi:Code suivant m'a aidé à cacher le clavier