InputField
Giriş
InputField widget'ı, Nylo Website'nun aşağıdaki özelliklere yerleşik destekli geliştirilmiş metin alanıdır:
- Özelleştirilebilir hata mesajlarıyla doğrulama
- Şifre görünürlük geçişi
- Giriş maskeleme (telefon numaraları, kredi kartları vb.)
- Başlık ve alt bilgi widget'ları
- Temizlenebilir giriş
- Durum yönetimi entegrasyonu
- Geliştirme için sahte veriler
Temel Kullanım
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",
),
),
),
);
}
Doğrulama
Doğrulama kuralları eklemek için formValidator parametresini kullanın:
InputField(
controller: _controller,
labelText: "Email",
formValidator: FormValidator.rule("email|not_empty"),
validateOnFocusChange: true,
)
Kullanıcı odağı alandan çektiğinde alan doğrulanacaktır.
Özel Doğrulama İşleyicisi
Doğrulama hatalarını programatik olarak yönetin:
InputField(
controller: _controller,
labelText: "Username",
formValidator: FormValidator.rule("not_empty|min:3"),
handleValidationError: (FormValidationResult result) {
if (!result.isValid) {
print("Error: ${result.getFirstErrorMessage()}");
}
},
)
Tüm kullanılabilir doğrulama kurallarını Doğrulama dokümantasyonunda bulabilirsiniz.
InputField.password
Gizli metin ve görünürlük geçişi ile önceden yapılandırılmış şifre alanı:
final TextEditingController _passwordController = TextEditingController();
InputField.password(
controller: _passwordController,
labelText: "Password",
formValidator: FormValidator.rule("not_empty|min:8"),
)
Şifre Görünürlüğünü Özelleştirme
InputField.password(
controller: _passwordController,
passwordVisible: true, // Show/hide toggle icon
passwordViewable: true, // Allow user to toggle visibility
)
InputField.emailAddress
E-posta klavyesi ve otomatik odaklanma ile önceden yapılandırılmış e-posta alanı:
final TextEditingController _emailController = TextEditingController();
InputField.emailAddress(
controller: _emailController,
formValidator: FormValidator.rule("email|not_empty"),
)
InputField.capitalizeWords
Her kelimenin ilk harfini otomatik olarak büyük yapar:
final TextEditingController _nameController = TextEditingController();
InputField.capitalizeWords(
controller: _nameController,
labelText: "Full Name",
)
Giriş Maskeleme
Telefon numaraları veya kredi kartları gibi biçimlendirilmiş veriler için giriş maskeleri uygulayın:
// 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
)
| Parametre | Açıklama |
|---|---|
mask |
# yer tutucu olarak kullanılan maske deseni |
maskMatch |
Geçerli giriş karakterleri için regex deseni |
maskedReturnValue |
Doğruysa biçimlendirilmiş değeri döndürür; yanlışsa ham girişi döndürür |
Başlık ve Alt Bilgi
Giriş alanının üstüne veya altına widget'lar ekleyin:
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,
)
Temizlenebilir Giriş
Alanı hızlıca boşaltmak için bir temizleme düğmesi ekleyin:
InputField(
controller: _searchController,
labelText: "Search",
clearable: true,
clearIcon: Icon(Icons.close, size: 20), // Custom clear icon
onChanged: (value) {
// Handle search
},
)
Durum Yönetimi
Programatik olarak kontrol etmek için giriş alanınıza bir durum adı verin:
InputField(
controller: _controller,
labelText: "Username",
stateName: "username_field",
)
Durum Eylemleri
// Clear the field
InputField.stateActions("username_field").clear();
// Set a value
updateState("username_field", data: {
"action": "setValue",
"value": "new_value"
});
Parametreler
Ortak Parametreler
| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
controller |
TextEditingController |
zorunlu | Düzenlenen metni kontrol eder |
labelText |
String? |
- | Alanın üstünde görüntülenen etiket |
hintText |
String? |
- | Yer tutucu metin |
formValidator |
FormValidator? |
- | Doğrulama kuralları |
validateOnFocusChange |
bool |
true |
Odak değiştiğinde doğrula |
obscureText |
bool |
false |
Girişi gizle (şifreler için) |
keyboardType |
TextInputType |
text |
Klavye türü |
autoFocus |
bool |
false |
Oluşturulduğunda otomatik odaklan |
readOnly |
bool |
false |
Alanı salt okunur yap |
enabled |
bool? |
- | Alanı etkinleştir/devre dışı bırak |
maxLines |
int? |
1 |
Maksimum satır sayısı |
maxLength |
int? |
- | Maksimum karakter sayısı |
Stil Parametreleri
| Parametre | Tür | Açıklama |
|---|---|---|
backgroundColor |
Color? |
Alan arka plan rengi |
borderRadius |
BorderRadius? |
Kenarlık yarıçapı |
border |
InputBorder? |
Varsayılan kenarlık |
focusedBorder |
InputBorder? |
Odaklandığında kenarlık |
enabledBorder |
InputBorder? |
Etkinleştirildiğinde kenarlık |
contentPadding |
EdgeInsetsGeometry? |
İç dolgu |
style |
TextStyle? |
Metin stili |
labelStyle |
TextStyle? |
Etiket metin stili |
hintStyle |
TextStyle? |
İpucu metin stili |
prefixIcon |
Widget? |
Girişten önceki simge |
Maskeleme Parametreleri
| Parametre | Tür | Açıklama |
|---|---|---|
mask |
String? |
Maske deseni (örn. "###-####") |
maskMatch |
String? |
Geçerli karakterler için regex |
maskedReturnValue |
bool? |
Maskeli veya ham değer döndür |
Özellik Parametreleri
| Parametre | Tür | Açıklama |
|---|---|---|
header |
Widget? |
Alanın üstündeki widget |
footer |
Widget? |
Alanın altındaki widget |
clearable |
bool? |
Temizleme düğmesini göster |
clearIcon |
Widget? |
Özel temizleme simgesi |
passwordVisible |
bool? |
Şifre geçiş düğmesini göster |
passwordViewable |
bool? |
Şifre görünürlük geçişine izin ver |
dummyData |
String? |
Geliştirme için sahte veri |
stateName |
String? |
Durum yönetimi için ad |
onChanged |
Function(String)? |
Değer değiştiğinde çağrılır |