Mein Textfeld Text für onChanged:
Ich versuche, eine Variable, die ich in der gleichen Klasse deklariert habe, zu ändern und es in einer ungültigen Funktion drucken zu lassen. Bitte erläutern Sie, wie Sie meinen Textfeldtext drucken.Flattern TextField Text nicht auf Variable drucken?
Antwort
Nun, ich bin mir nicht sicher, was Sie hier versuchen möchten. Aber von dem, was ich verstehe, versuchen Sie Benutzereingaben in TextField
zu speichern.
Ich habe dies ohne die Notwendigkeit von setState()
Wenn Sie die Eingabe des Benutzers wie E-Mail zu erhalten, müssen erreicht, können Sie die Daten abrufen soll, nachdem der Benutzer es abgegeben hat, so dass ich bin mir nicht sicher, warum würden Sie wollen, in Ihrem Fall onChanged
zu verwenden.
Grundsätzlich müssen Sie dem Benutzer eine Schaltfläche bereitstellen, die nach dem Ausfüllen der Daten gedrückt werden soll. Verwenden Sie dann TextEditingController
, um zu erhalten, was der Benutzer eingegeben hat und was Sie tun möchten Dort.
Dies ist der Code, der zeigt, wie dies zu tun, ich denke, Sie versuchen, etwas ähnlich einem Sign Up-Funktionalität innerhalb der App zu tun:
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(
home: new MyApp(),
));
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => new _MyAppState();
}
class _MyAppState extends State<MyApp> {
var _email;
var _password;
var _username;
final TextEditingController _nameController = new TextEditingController();
final TextEditingController _emailController = new TextEditingController();
final TextEditingController _passController = new TextEditingController();
void _loginButton({String name, String pass, String email}) {
print("Login from Page");
this._username = name;
this._email = email;
this._password = pass;
print(_username);
print(_email);
print(_password);
}
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Column (
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new TextField(controller: this._nameController, decoration: new InputDecoration(hintText: "Type your user name"),),
new TextField(controller: this._emailController,decoration: new InputDecoration(hintText: "Type your email")),
new TextField(controller: this._passController,decoration: new InputDecoration(hintText: "Type your password")),
new RaisedButton(child: new Text ("Sign In"),
onPressed:() {
_loginButton(name: this._nameController.text,
email: this._emailController.text,
pass: this._passController.text
);
})
],
));
}
}
Wenn Sie eine Taste verwenden möchten nicht, Verwenden Sie dann die Eigenschaft onSubmitted
, um Benutzereingaben zu speichern, wenn die Zurück-Taste auf der Tastatur gedrückt wird, während onChanged
den Wert aktualisiert, wenn die TextField
gerade bearbeitet wird.
new TextField(controller: this._nameController,
decoration: new InputDecoration(hintText: "Type your user name"),
onSubmitted: (String s) { //when the user press the return button do this
_loginButton(name: this._nameController.text);
},
onChanged: (String s) { //when the user is editing the text do this
_loginButton(name: this._nameController.text);
},),
Aber wahrscheinlich wäre es besser, für Sie auf eine Schaltfläche verwenden, da Sie mehrere TextField
haben, die auf einmal gespeichert werden muss.
Dies ist, wie ich es geschafft, diese zu vervollständigen mit onChanged:
...
new TextField(
controller: _emailController,
decoration:
new InputDecoration(labelText: "E M A I L A D D R E S S"),
onChanged: (str) {
setState(() {
str = _emailController.text;
});
},
),
Future<Null> _loginButton() async {
try {
FirebaseAuth.instance.signOut();
print("Login from Page");
_email = _emailController.text.toString();
_password = _passController.text.toString();
_username = _nameController.text.toString();
print(_email);
print(_username);
print(_password);
await FirebaseAuth.instance
.signInWithEmailAndPassword(email: _email, password: _password);
var userid = FirebaseAuth.instance.currentUser.uid;
if (FirebaseAuth.instance.currentUser.photoUrl == null) {
fb.child("users/${userid}/image").onValue.listen((Event event) {
print('Child added: ${event.snapshot.value}');
});
}
print(FirebaseAuth.instance.currentUser);
} catch (error) {
print(error);
}
}
Warum möchten Sie den Benutzer jedes Mal ausloggen, wenn er sich anmeldet? – aziza
Auch OnChanged wird den Text vom Benutzer bearbeitet, ist nicht onSubmitted besser hier verwendet werden? – aziza
@aziza Ich rufe ab, um sicherzustellen, dass der FirebaseUser.currentUser immer null ist, bevor ich versuche, einen anderen einzuloggen. Außerdem denke ich, dass du mit der Verwendung von onSubmitted richtig bist ... Auf diese Weise sollte ich '.whenComplete verwenden können 'Anruf und automatische Route zu meinem Menü. Ist das richtig? –
- 1. Flattern TextField Autocomplete Overlay
- 2. TextField controller.clear() löscht das TextField nicht wirklich
- 3. Text in TextField formatieren
- 4. Text auswählen in Vaadin TextField auf IE
- 5. Flattern: Focus Tastatur auf der Rückseite Navigation
- 6. JavaFX TextField wird nicht aktualisiert Text
- 7. JavaFX TextField-: verwandeln automatisch Text
- 8. Nativescript TextField Text/Anzahl Grenze
- 9. Text in Textfield beginnt in Mitte von TextField IOS
- 10. Flattern - Top align Text in Container
- 11. Nicht verwendete Variable verbietet Drucken?
- 12. Mehrzeiliges Textfeld im Flattern
- 13. flattern Pakete bekommen nicht
- 14. Flattern - Der Bildschirm scrollt nicht
- 15. Drucken, ändern, erneut drucken Bash Variable
- 16. Flattern - SingleChildScrollView Interferenz in Spalten
- 17. Farbe ändern auf mdl-textfield
- 18. Wie setze ich Text in Carbon Textfield auf OSX?
- 19. Flattern - Die Tastatur wird auf dem Bildschirm der FloatingActionButton
- 20. Textfield: Einige Text editierbar einige Text statische in swift
- 21. Benutzerdefinierten Text einstellen, wenn TextField leer ist
- 22. Flattern - Radio-Animation wird nicht auf ShowDialog angezeigt
- 23. JSON auf Swift: Array zu String/TextField Text
- 24. Ändern Schrift auf Textfield
- 25. QML TextField: Bindungsschleife für Eigenschaft "Text" erkannt
- 26. TextField in einem Container - Tastatur versteckt Text
- 27. javafx mit Scene Builder kann nicht Text aus TextField
- 28. mein Text Abenteuer wird nicht drucken [Python]
- 29. Zeige Text in Label wenn Text in TextField eingegeben wird
- 30. Editables auf Variable speichern und dann drucken
Sie nennen könnte '_loginButton()' entweder vor dem 'return' in' build' oder als das letzte, was in der 'setState 'Funktion. Aber ich bin mir nicht sicher, ob ich Ihre Frage wirklich verstanden habe ... –