Form
تجميع حقول الإدخال والتحقّق Form
Form يجمع عدّة TextFormField أو حقول أخرى تحت مفتاح واحد، ليتحقّق منها جميعًا ويحفظها بأمر واحد.
يعمل مع GlobalKey<FormState> يمنحك وصولًا لدوال validate() وsave() وreset() على كل حقول النموذج دفعة واحدة، بدل التحقق من كل حقل يدويًا على حدة.
الصياغة
final formKey = GlobalKey<FormState>(); Form( key: formKey, child: Column(children: [ ... ]), )
📄 مثال
final formKey = GlobalKey<FormState>();
Form(
key: formKey,
child: Column(
children: [
TextFormField(
validator: (v) => (v == null || v.isEmpty) ? 'مطلوب' : null,
),
ElevatedButton(
onPressed: () {
if (formKey.currentState!.validate()) {
formKey.currentState!.save();
}
},
child: Text('إرسال'),
),
],
),
)أهم المعاملات
| المعامل | الوظيفة |
|---|---|
| key | GlobalKey<FormState> يربط النموذج بحالة يمكن الوصول لها خارج build() |
| autovalidateMode | يتحكّم بتوقيت التحقّق التلقائي (عند التغيير مثلًا بدل الإرسال فقط) |
| onChanged | يُستدعى عند أي تغيير بأي حقل داخل النموذج |
💡 نصائح عملية
- استخدم autovalidateMode: AutovalidateMode.onUserInteraction لإظهار أخطاء التحقّق فور تفاعل المستخدم بدل انتظار ضغط زر الإرسال
⚠️ أخطاء شائعة
- استخدام TextField عاديًا بدل TextFormField داخل Form — validate() لا يفحص إلا حقول TextFormField المسجَّلة بالنموذج
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار FLUTTER الكامل بالعربي.