راهنمای جامع کار با Form و Inputها در فلاتر
مقدمه
فرمها یکی از بخشهای اصلی برنامههای کاربردی هستند. اگر شما یک برنامهنویس فلاتر هستید، حتماً با چالشهایی مثل اعتبارسنجی دادهها، مدیریت وضعیت فرم و استفاده از انواع Input مانند TextField، Checkbox و Radio مواجه شدهاید. در این مقاله قصد داریم به شما کمک کنیم تا فرمهای قدرتمند و حرفهای بسازید.
ایجاد یک فرم ساده با Form ویجت
فلاتر برای مدیریت فرمها یک ویجت به نام Form
ارائه میدهد. این ویجت یک ظرف (Container) برای گروهبندی چندین Input است.
مثال کد:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Form Example')),
body: MyForm(),
),
);
}
}
class MyForm extends StatefulWidget {
@override
_MyFormState createState() => _MyFormState();
}
class _MyFormState extends State<MyForm> {
final _formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.all(16.0),
child: Form(
key: _formKey,
child: Column(
children: [
TextFormField(
decoration: InputDecoration(labelText: 'نام'),
validator: (value) {
if (value == null || value.isEmpty) {
return 'لطفاً نام خود را وارد کنید';
}
return null;
},
),
SizedBox(height: 16),
ElevatedButton(
onPressed: () {
if (_formKey.currentState!.validate()) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('اطلاعات معتبر است')),
);
}
},
child: Text('ارسال'),
),
],
),
),
);
}
}
کار با TextField
ویجت TextField
یکی از پرکاربردترین ورودیها در فلاتر است که به کاربران امکان وارد کردن متن را میدهد.
ویژگیهای مهم:
- controller: کنترل مقدار داخل
TextField
. - decoration: تنظیم ظاهر ورودی با استفاده از
InputDecoration
. - keyboardType: تعیین نوع کیبورد (مثل اعداد یا متن).
مثال کد:
TextField(
decoration: InputDecoration(
border: OutlineInputBorder(), labelText: 'ایمیل'),),
Checkbox
برای ورودیهایی که نیاز به انتخاب دو حالت (true/false) دارند، از Checkbox
استفاده میشود.
مثال کد:
bool isChecked = false;
Checkbox(
value: isChecked,
onChanged: (bool? value) {
etState(() {
isChecked = value!;
});},),
Radio Button
برای انتخاب یک گزینه از بین چندین گزینه، از ویجت Radio
استفاده کنید.
مثال کد:
int selectedValue = 1;Radio(
value: 1,
groupValue:selectedValue,
onChanged:(int? value){setState(()=>selectedValue=value!);},),
اعتبارسنجی فرمها
برای اعتبارسنجی دادههای ورودی کاربران، میتوانید از ویژگی validator
در TextFormField
استفاده کنید. این روش امکان بررسی شرایط مختلف مثل خالی بودن یا فرمت ایمیل را فراهم میکند.
نتیجه گیری
فلاتر امکانات بسیار قدرتمندی برای ساخت فرمهای حرفهای ارائه داده است. با استفاده از ترکیب ویجتهایی مثل TextField
, Checkbox
, و Radio
همراه با قابلیت اعتبارسنجی دادهها، میتوانید تجربه کاربری عالی خلق کنید.