# راهنمای جامع کار با Form و Inputها در فلاتر
## مقدمه
فرمها یکی از بخشهای اصلی برنامههای کاربردی هستند. اگر شما یک برنامهنویس فلاتر هستید، حتماً با چالشهایی مثل اعتبارسنجی دادهها، مدیریت وضعیت فرم و استفاده از انواع Input مانند TextField، Checkbox و Radio مواجه شدهاید. در این مقاله قصد داریم به شما کمک کنیم تا فرمهای قدرتمند و حرفهای بسازید.
---
## ایجاد یک فرم ساده با Form ویجت
فلاتر برای مدیریت فرمها یک ویجت به نام `Form` ارائه میدهد. این ویجت یک ظرف (Container) برای گروهبندی چندین Input است.
### مثال کد:
```dart
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 {
final _formKey = GlobalKey();
@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:** تعیین نوع کیبورد (مثل اعداد یا متن).
### مثال کد:
```dart
TextField(
decoration: InputDecoration(
border: OutlineInputBorder(), labelText: 'ایمیل'),),
```
---
## Checkbox
برای ورودیهایی که نیاز به انتخاب دو حالت (true/false) دارند، از `Checkbox` استفاده میشود.
### مثال کد:
```dart
bool isChecked = false;
Checkbox(
value: isChecked,
onChanged: (bool? value) {
etState(() {
isChecked = value!;
});},),
```
---
## Radio Button
برای انتخاب یک گزینه از بین چندین گزینه، از ویجت `Radio` استفاده کنید.
### مثال کد:
```dart
int selectedValue = 1;Radio(
value: 1,
groupValue:selectedValue,
onChanged:(int? value){setState(()=>selectedValue=value!);},),
```
---
## اعتبارسنجی فرمها
برای اعتبارسنجی دادههای ورودی کاربران، میتوانید از ویژگی `validator` در `TextFormField` استفاده کنید. این روش امکان بررسی شرایط مختلف مثل خالی بودن یا فرمت ایمیل را فراهم میکند.
## نتیجه گیری
فلاتر امکانات بسیار قدرتمندی برای ساخت فرمهای حرفهای ارائه داده است. با استفاده از ترکیب ویجتهایی مثل `TextField`, `Checkbox`, و `Radio` همراه با قابلیت اعتبارسنجی دادهها، میتوانید تجربه کاربری عالی خلق کنید.