InputField
परिचय
InputField विजेट Nylo Website का एन्हांस्ड टेक्स्ट फ़ील्ड है जिसमें निम्नलिखित के लिए बिल्ट-इन सपोर्ट है:
- कस्टमाइज़ेबल एरर मैसेज के साथ वैलिडेशन
- पासवर्ड विज़िबिलिटी टॉगल
- इनपुट मास्किंग (फ़ोन नंबर, क्रेडिट कार्ड, आदि)
- हेडर और फुटर विजेट्स
- क्लियरेबल इनपुट
- स्टेट मैनेजमेंट इंटीग्रेशन
- डेवलपमेंट के लिए डमी डेटा
बेसिक उपयोग
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",
),
),
),
);
}
वैलिडेशन
वैलिडेशन नियम जोड़ने के लिए formValidator पैरामीटर का उपयोग करें:
InputField(
controller: _controller,
labelText: "Email",
formValidator: FormValidator.rule("email|not_empty"),
validateOnFocusChange: true,
)
जब यूज़र फ़ोकस को फ़ील्ड से हटाता है तो यह वैलिडेट करेगा।
कस्टम वैलिडेशन हैंडलर
वैलिडेशन एरर्स को प्रोग्रामैटिक रूप से हैंडल करें:
InputField(
controller: _controller,
labelText: "Username",
formValidator: FormValidator.rule("not_empty|min:3"),
handleValidationError: (FormValidationResult result) {
if (!result.isValid) {
print("Error: ${result.getFirstErrorMessage()}");
}
},
)
सभी उपलब्ध वैलिडेशन नियमों के लिए Validation डॉक्यूमेंटेशन देखें।
InputField.password
ऑब्स्क्योर्ड टेक्स्ट और विज़िबिलिटी टॉगल के साथ पहले से कॉन्फ़िगर्ड पासवर्ड फ़ील्ड:
final TextEditingController _passwordController = TextEditingController();
InputField.password(
controller: _passwordController,
labelText: "Password",
formValidator: FormValidator.rule("not_empty|min:8"),
)
पासवर्ड विज़िबिलिटी कस्टमाइज़ करना
InputField.password(
controller: _passwordController,
passwordVisible: true, // Show/hide toggle icon
passwordViewable: true, // Allow user to toggle visibility
)
InputField.emailAddress
ईमेल कीबोर्ड और ऑटोफोकस के साथ पहले से कॉन्फ़िगर्ड ईमेल फ़ील्ड:
final TextEditingController _emailController = TextEditingController();
InputField.emailAddress(
controller: _emailController,
formValidator: FormValidator.rule("email|not_empty"),
)
InputField.capitalizeWords
हर शब्द के पहले अक्षर को ऑटो-कैपिटलाइज़ करता है:
final TextEditingController _nameController = TextEditingController();
InputField.capitalizeWords(
controller: _nameController,
labelText: "Full Name",
)
इनपुट मास्किंग
फ़ॉर्मेटेड डेटा जैसे फ़ोन नंबर या क्रेडिट कार्ड के लिए इनपुट मास्क लागू करें:
// 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
)
| पैरामीटर | विवरण |
|---|---|
mask |
# को प्लेसहोल्डर के रूप में उपयोग करने वाला मास्क पैटर्न |
maskMatch |
मान्य इनपुट कैरेक्टर्स के लिए रीजेक्स पैटर्न |
maskedReturnValue |
यदि true है, तो फ़ॉर्मेटेड वैल्यू लौटाता है; यदि false है, तो रॉ इनपुट लौटाता है |
हेडर और फुटर
इनपुट फ़ील्ड के ऊपर या नीचे विजेट्स जोड़ें:
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,
)
क्लियरेबल इनपुट
फ़ील्ड को जल्दी खाली करने के लिए एक क्लियर बटन जोड़ें:
InputField(
controller: _searchController,
labelText: "Search",
clearable: true,
clearIcon: Icon(Icons.close, size: 20), // Custom clear icon
onChanged: (value) {
// Handle search
},
)
स्टेट मैनेजमेंट
अपने इनपुट फ़ील्ड को प्रोग्रामैटिक रूप से नियंत्रित करने के लिए एक स्टेट नाम दें:
InputField(
controller: _controller,
labelText: "Username",
stateName: "username_field",
)
स्टेट एक्शन्स
// Clear the field
InputField.stateActions("username_field").clear();
// Set a value
updateState("username_field", data: {
"action": "setValue",
"value": "new_value"
});
पैरामीटर्स
सामान्य पैरामीटर्स
| पैरामीटर | टाइप | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
controller |
TextEditingController |
आवश्यक | एडिट किए जा रहे टेक्स्ट को नियंत्रित करता है |
labelText |
String? |
- | फ़ील्ड के ऊपर दिखाया जाने वाला लेबल |
hintText |
String? |
- | प्लेसहोल्डर टेक्स्ट |
formValidator |
FormValidator? |
- | वैलिडेशन नियम |
validateOnFocusChange |
bool |
true |
फोकस बदलने पर वैलिडेट करें |
obscureText |
bool |
false |
इनपुट छिपाएँ (पासवर्ड के लिए) |
keyboardType |
TextInputType |
text |
कीबोर्ड प्रकार |
autoFocus |
bool |
false |
बिल्ड पर ऑटो-फोकस |
readOnly |
bool |
false |
फ़ील्ड को रीड-ओनली बनाएँ |
enabled |
bool? |
- | फ़ील्ड सक्षम/अक्षम करें |
maxLines |
int? |
1 |
अधिकतम लाइनें |
maxLength |
int? |
- | अधिकतम कैरेक्टर्स |
स्टाइलिंग पैरामीटर्स
| पैरामीटर | टाइप | विवरण |
|---|---|---|
backgroundColor |
Color? |
फ़ील्ड बैकग्राउंड रंग |
borderRadius |
BorderRadius? |
बॉर्डर रेडियस |
border |
InputBorder? |
डिफ़ॉल्ट बॉर्डर |
focusedBorder |
InputBorder? |
फोकस होने पर बॉर्डर |
enabledBorder |
InputBorder? |
सक्षम होने पर बॉर्डर |
contentPadding |
EdgeInsetsGeometry? |
आंतरिक पैडिंग |
style |
TextStyle? |
टेक्स्ट स्टाइल |
labelStyle |
TextStyle? |
लेबल टेक्स्ट स्टाइल |
hintStyle |
TextStyle? |
हिंट टेक्स्ट स्टाइल |
prefixIcon |
Widget? |
इनपुट से पहले आइकन |
मास्किंग पैरामीटर्स
| पैरामीटर | टाइप | विवरण |
|---|---|---|
mask |
String? |
मास्क पैटर्न (जैसे "###-####") |
maskMatch |
String? |
मान्य कैरेक्टर्स के लिए रीजेक्स |
maskedReturnValue |
bool? |
मास्क्ड या रॉ वैल्यू लौटाएँ |
फ़ीचर पैरामीटर्स
| पैरामीटर | टाइप | विवरण |
|---|---|---|
header |
Widget? |
फ़ील्ड के ऊपर विजेट |
footer |
Widget? |
फ़ील्ड के नीचे विजेट |
clearable |
bool? |
क्लियर बटन दिखाएँ |
clearIcon |
Widget? |
कस्टम क्लियर आइकन |
passwordVisible |
bool? |
पासवर्ड टॉगल दिखाएँ |
passwordViewable |
bool? |
पासवर्ड विज़िबिलिटी टॉगल की अनुमति दें |
dummyData |
String? |
डेवलपमेंट के लिए फ़ेक डेटा |
stateName |
String? |
स्टेट मैनेजमेंट के लिए नाम |
onChanged |
Function(String)? |
वैल्यू बदलने पर कॉल होता है |