InputField
Einleitung
Das InputField-Widget ist Nylo Websites erweitertes Textfeld mit integrierter Unterstützung für:
- Validierung mit anpassbaren Fehlermeldungen
- Passwort-Sichtbarkeitsumschalter
- Eingabe-Maskierung (Telefonnummern, Kreditkarten usw.)
- Header- und Footer-Widgets
- Löschbare Eingabe
- State-Management-Integration
- Dummy-Daten für die Entwicklung
Grundlegende Verwendung
final TextEditingController _controller = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Padding(
padding: EdgeInsets.all(16),
child: InputField(
controller: _controller,
labelText: "Username",
hintText: "Enter your username",
),
),
),
);
}
Validierung
Verwenden Sie den Parameter formValidator, um Validierungsregeln hinzuzufügen:
InputField(
controller: _controller,
labelText: "Email",
formValidator: FormValidator.rule("email|not_empty"),
validateOnFocusChange: true,
)
Das Feld wird validiert, wenn der Benutzer den Fokus vom Feld weg bewegt.
Benutzerdefinierter Validierungs-Handler
Behandeln Sie Validierungsfehler programmatisch:
InputField(
controller: _controller,
labelText: "Username",
formValidator: FormValidator.rule("not_empty|min:3"),
handleValidationError: (FormValidationResult result) {
if (!result.isValid) {
print("Error: ${result.getFirstErrorMessage()}");
}
},
)
Alle verfügbaren Validierungsregeln finden Sie in der Validierung-Dokumentation.
InputField.password
Ein vorkonfiguriertes Passwortfeld mit verdecktem Text und Sichtbarkeitsumschalter:
final TextEditingController _passwordController = TextEditingController();
InputField.password(
controller: _passwordController,
labelText: "Password",
formValidator: FormValidator.rule("not_empty|min:8"),
)
Passwortsichtbarkeit anpassen
InputField.password(
controller: _passwordController,
passwordVisible: true, // Show/hide toggle icon
passwordViewable: true, // Allow user to toggle visibility
)
InputField.emailAddress
Ein vorkonfiguriertes E-Mail-Feld mit E-Mail-Tastatur und Autofokus:
final TextEditingController _emailController = TextEditingController();
InputField.emailAddress(
controller: _emailController,
formValidator: FormValidator.rule("email|not_empty"),
)
InputField.capitalizeWords
Schreibt automatisch den ersten Buchstaben jedes Wortes groß:
final TextEditingController _nameController = TextEditingController();
InputField.capitalizeWords(
controller: _nameController,
labelText: "Full Name",
)
Eingabe-Maskierung
Wenden Sie Eingabemasken für formatierte Daten wie Telefonnummern oder Kreditkarten an:
// Phone number mask
InputField(
controller: _phoneController,
labelText: "Phone Number",
mask: "(###) ###-####",
maskMatch: r'[0-9]',
maskedReturnValue: false, // Returns unmasked value: 1234567890
)
// Credit card mask
InputField(
controller: _cardController,
labelText: "Card Number",
mask: "#### #### #### ####",
maskMatch: r'[0-9]',
maskedReturnValue: true, // Returns masked value: 1234 5678 9012 3456
)
| Parameter | Beschreibung |
|---|---|
mask |
Das Maskenmuster mit # als Platzhalter |
maskMatch |
Regex-Muster für gültige Eingabezeichen |
maskedReturnValue |
Bei true wird der formatierte Wert zurückgegeben; bei false die Roheingabe |
Header und Footer
Fügen Sie Widgets über oder unter dem Eingabefeld hinzu:
InputField(
controller: _controller,
labelText: "Bio",
header: Text(
"Tell us about yourself",
style: TextStyle(fontWeight: FontWeight.bold),
),
footer: Text(
"Max 200 characters",
style: TextStyle(color: Colors.grey, fontSize: 12),
),
maxLength: 200,
)
Löschbare Eingabe
Fügen Sie einen Lösch-Button hinzu, um das Feld schnell zu leeren:
InputField(
controller: _searchController,
labelText: "Search",
clearable: true,
clearIcon: Icon(Icons.close, size: 20), // Custom clear icon
onChanged: (value) {
// Handle search
},
)
State-Management
Geben Sie Ihrem Eingabefeld einen State-Namen, um es programmatisch zu steuern:
InputField(
controller: _controller,
labelText: "Username",
stateName: "username_field",
)
State-Aktionen
// Clear the field
InputField.stateActions("username_field").clear();
// Set a value
updateState("username_field", data: {
"action": "setValue",
"value": "new_value"
});
Parameter
Allgemeine Parameter
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
controller |
TextEditingController |
erforderlich | Steuert den bearbeiteten Text |
labelText |
String? |
- | Beschriftung über dem Feld |
hintText |
String? |
- | Platzhaltertext |
formValidator |
FormValidator? |
- | Validierungsregeln |
validateOnFocusChange |
bool |
true |
Validieren bei Fokuswechsel |
obscureText |
bool |
false |
Eingabe verbergen (für Passwörter) |
keyboardType |
TextInputType |
text |
Tastaturtyp |
autoFocus |
bool |
false |
Autofokus beim Aufbau |
readOnly |
bool |
false |
Feld schreibgeschützt machen |
enabled |
bool? |
- | Feld aktivieren/deaktivieren |
maxLines |
int? |
1 |
Maximale Zeilen |
maxLength |
int? |
- | Maximale Zeichen |
Styling-Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
backgroundColor |
Color? |
Hintergrundfarbe des Feldes |
borderRadius |
BorderRadius? |
Rahmenradius |
border |
InputBorder? |
Standard-Rahmen |
focusedBorder |
InputBorder? |
Rahmen bei Fokus |
enabledBorder |
InputBorder? |
Rahmen bei Aktivierung |
contentPadding |
EdgeInsetsGeometry? |
Innerer Abstand |
style |
TextStyle? |
Textstil |
labelStyle |
TextStyle? |
Beschriftungs-Textstil |
hintStyle |
TextStyle? |
Hinweis-Textstil |
prefixIcon |
Widget? |
Symbol vor der Eingabe |
Maskierungs-Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
mask |
String? |
Maskenmuster (z.B. "###-####") |
maskMatch |
String? |
Regex für gültige Zeichen |
maskedReturnValue |
bool? |
Maskierten oder Rohwert zurückgeben |
Funktions-Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
header |
Widget? |
Widget über dem Feld |
footer |
Widget? |
Widget unter dem Feld |
clearable |
bool? |
Lösch-Button anzeigen |
clearIcon |
Widget? |
Benutzerdefiniertes Lösch-Symbol |
passwordVisible |
bool? |
Passwort-Umschalter anzeigen |
passwordViewable |
bool? |
Passwort-Sichtbarkeitsumschalter erlauben |
dummyData |
String? |
Testdaten für die Entwicklung |
stateName |
String? |
Name für State-Management |
onChanged |
Function(String)? |
Wird bei Wertänderung aufgerufen |