اعتبارسنجی در فرم ها

تعداد بازدید ها : 803 بازدید
 اعتبارسنجی در فرم ها

ویجت فرم امکانات خوبی جهت کار با مقادیر ثبت شده کاربر در اختیار شما قرار می دهد . یکی از قابلیت های کلیدی این ویجت اعتبارسنجی (validation) می باشد . برای استفاده از قابلیت اعتبارسنجی ویجت فرم ابتدا لازم است یک کلید انحصاری (GlobalKey) ایجاد نماییم و سپس این کلید را به ویجت فرم متصل نماییم و در انتها نیز با استفاده از خصوصیات کلید نسبت به اعتبارسنجی مقادیر داخل فرم اقدام نماییم . برای اعتبارسنجی فرم ، طبق مراحل زیر عمل نمایید :

۱- ابتدا یک کلید انحصاری (GlobalKey) برای فرم خود ایجاد نمایید :

  1. // ویجت فرم سفارشی را تعریف کنید
  2. // توجه داشته باشید از نوع استیت فول ویجت است
  3. class MyCustomForm extends StatefulWidget {
  4. @override
  5. MyCustomFormState createState() {
  6. return MyCustomFormState();
  7. }
  8. }
  9. // این کلاس داده های مربوط به فرم را در خود نگه می دارد
  10. class MyCustomFormState extends State<MyCustomForm> {
  11. // ایجاد یک کلید انحصاری که ویجت فرم را بطور خاص مشخص کند
  12. // و اعتبار سنجی فرم را مجاز می کند
  13. final _formKey = GlobalKey<FormState>();
  14. @override
  15. Widget build(BuildContext context) {
  16. // با استفاده از _formKey ایجاد شده در بالا ، ویجت فرم بسازید
  17. return Form(
  18. key: _formKey,
  19. child: Column(
  20. children: <Widget>[
  21. // در ادامه ویجت متن و دکمه را در اینجا اضافه خواهیم کرد
  22. ]
  23. )
  24. );
  25. }
  26. }
// ویجت فرم سفارشی را تعریف کنید
// توجه داشته باشید از نوع استیت فول ویجت است
class MyCustomForm extends StatefulWidget {
  @override
  MyCustomFormState createState() {
    return MyCustomFormState();
  }
}

// این کلاس داده های مربوط به فرم را در خود نگه می دارد
class MyCustomFormState extends State<MyCustomForm> {
  // ایجاد یک کلید انحصاری که ویجت فرم را بطور خاص مشخص کند
  // و اعتبار سنجی فرم را مجاز می کند
  final _formKey = GlobalKey<FormState>();

  @override
  Widget build(BuildContext context) {
    // با استفاده از _formKey ایجاد شده در بالا ، ویجت فرم بسازید
    return Form(
      key: _formKey,
      child: Column(
        children: <Widget>[
              // در ادامه ویجت متن و دکمه را در اینجا اضافه خواهیم کرد
        ]
     )
    );
  }
}

۲- ویجت TextFormField با قابلیت validation را به کلاس فوق اضافه نمایید :

  1. TextFormField(
  2. // اعتبار سنج متنی را که کاربر وارد کرده است دریافت می کند
  3. validator: (value) {
  4. if (value.isEmpty) {
  5. return 'Please enter some text';
  6. }
  7. return null;
  8. },
  9. );
TextFormField(
  // اعتبار سنج متنی را که کاربر وارد کرده است دریافت می کند
  validator: (value) {
    if (value.isEmpty) {
      return 'Please enter some text';
    }
    return null;
  },
);

۳- ویجت RaisedButton را اضافه نمایید

با استفاده از کلیدی که قبلا ایجاد کرده ایم و خصوصیت currentState وضعیت validate را کنترل نمایید :

  1. RaisedButton(
  2. onPressed: () {
  3. // در صورتی که تمام مقادیر داخل فرم دارای اعتبار باشند مقدار بازگشتی این تابع صحیح است
  4. if (_formKey.currentState.validate()) {
  5. // اگر اطلاعات معتبر است واکنش مناسب را نشان دهید
  6. // اطلاعات را به سرور ارسال نمایید یا در بانک محلی ذخیره نمایید
  7. Scaffold
  8. .of(context)
  9. .showSnackBar(SnackBar(content: Text('پردازش اطلاعات شروع شد ...')));
  10. }
  11. },
  12. child: Text('Submit'),
  13. );
RaisedButton(
  onPressed: () {
    // در صورتی که تمام مقادیر داخل فرم دارای اعتبار باشند مقدار بازگشتی این تابع صحیح است
    if (_formKey.currentState.validate()) {
      // اگر اطلاعات معتبر است واکنش مناسب را نشان دهید
      // اطلاعات را به سرور ارسال نمایید یا در بانک محلی ذخیره نمایید
      Scaffold
          .of(context)
          .showSnackBar(SnackBar(content: Text('پردازش اطلاعات شروع شد ...')));
    }
  },
  child: Text('Submit'),
);

از دیگر قابلیت های کلید (GlobalKey) ، ریست کردن فرم است . با این عمل کل اطلاعات ثبت شده کاربر پاک شده و فرم آماده ثبت مجدد اطلاعات می گردد .

  1. _formKey.currentState.reset();
_formKey.currentState.reset();

جهت کسب اطلاعات بیشتر از این آدرس به سایت اصلی فلاتر مراجعه نمایید .

می خوانم   آشنایی با کتابخانه lodash

امیدوارم این مطلب برای شما مفید باشد .

1+
محمدمجتبی جوارشکیان

محمدمجتبی جوارشکیان

من محمدمجتبی جوارشکیان ، کارشناس IT و فعال اجتماعی هستم و در حوزه معماری ، طراحی ، تحلیل گری ، مدلسازی و توسعه ی محیط های نرم افزاری فعالیت دارم. همانند سایر کارشناسان IT در تلاشم تا دنیا جای زیباتری برای زندگی باشد. بسیار خوشحال می شوم من را از انتقادات ، پیشنهادات و نظرات خود مطلع فرمایید. آدرس ایمیل : mjfakhr@yahoo.com

ارسال یک پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دوازده + دو =