تخطَّ إلى المحتوى

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('إرسال'),
      ),
    ],
  ),
)

أهم المعاملات

المعاملالوظيفة
keyGlobalKey<FormState> يربط النموذج بحالة يمكن الوصول لها خارج build()
autovalidateModeيتحكّم بتوقيت التحقّق التلقائي (عند التغيير مثلًا بدل الإرسال فقط)
onChangedيُستدعى عند أي تغيير بأي حقل داخل النموذج

💡 نصائح عملية

  • استخدم autovalidateMode: AutovalidateMode.onUserInteraction لإظهار أخطاء التحقّق فور تفاعل المستخدم بدل انتظار ضغط زر الإرسال

⚠️ أخطاء شائعة

  • استخدام TextField عاديًا بدل TextFormField داخل Form — validate() لا يفحص إلا حقول TextFormField المسجَّلة بالنموذج

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار FLUTTER الكامل بالعربي.