اعتبارسنجی در فرم ها
ویجت فرم امکانات خوبی جهت کار با مقادیر ثبت شده کاربر در اختیار شما قرار می دهد . یکی از قابلیت های کلیدی این ویجت اعتبارسنجی (validation) می باشد . برای استفاده از قابلیت اعتبارسنجی ویجت فرم ابتدا لازم است یک کلید انحصاری (GlobalKey) ایجاد نماییم و سپس این کلید را به ویجت فرم متصل نماییم و در انتها نیز با استفاده از خصوصیات کلید نسبت به اعتبارسنجی مقادیر داخل فرم اقدام نماییم . برای اعتبارسنجی فرم ، طبق مراحل زیر عمل نمایید :
۱- ابتدا یک کلید انحصاری (GlobalKey) برای فرم خود ایجاد نمایید :
// ویجت فرم سفارشی را تعریف کنید // توجه داشته باشید از نوع استیت فول ویجت است 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 را به کلاس فوق اضافه نمایید :
TextFormField( // اعتبار سنج متنی را که کاربر وارد کرده است دریافت می کند validator: (value) { if (value.isEmpty) { return 'Please enter some text'; } return null; }, );
۳- ویجت RaisedButton را اضافه نمایید
با استفاده از کلیدی که قبلا ایجاد کرده ایم و خصوصیت currentState وضعیت validate را کنترل نمایید :
RaisedButton( onPressed: () { // در صورتی که تمام مقادیر داخل فرم دارای اعتبار باشند مقدار بازگشتی این تابع صحیح است if (_formKey.currentState.validate()) { // اگر اطلاعات معتبر است واکنش مناسب را نشان دهید // اطلاعات را به سرور ارسال نمایید یا در بانک محلی ذخیره نمایید Scaffold .of(context) .showSnackBar(SnackBar(content: Text('پردازش اطلاعات شروع شد ...'))); } }, child: Text('Submit'), );
از دیگر قابلیت های کلید (GlobalKey) ، ریست کردن فرم است . با این عمل کل اطلاعات ثبت شده کاربر پاک شده و فرم آماده ثبت مجدد اطلاعات می گردد .
_formKey.currentState.reset();
جهت کسب اطلاعات بیشتر از این آدرس به سایت اصلی فلاتر مراجعه نمایید .
امیدوارم این مطلب برای شما مفید باشد .