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

Radio

زر اختيار واحد من مجموعة Radio

Radio يتيح اختيار قيمة واحدة فقط من مجموعة خيارات متبادلة الاستبعاد — بالنمط الحديث يُستخدم دائمًا داخل RadioGroup أب يدير الحالة مركزيًا.

بعد إعادة تصميم واجهة Radio، لم يعد كل Radio يحمل groupValue وonChanged بنفسه (أُوقِفا/deprecated) — بدل ذلك تُغلَّف مجموعة الأزرار كاملة بـ RadioGroup واحد يحمل القيمة الحالية ودالة التغيير، وكل Radio بداخله يحمل value فقط.

الصياغة

RadioGroup<T>(
  groupValue: T?,
  onChanged: (T? value) { },
  child: Column(children: [Radio<T>(value: ...), ...]),
)

📄 مثال

int selected = 0;

RadioGroup<int>(
  groupValue: selected,
  onChanged: (value) => setState(() => selected = value!),
  child: Column(
    children: [
      Row(children: [Radio<int>(value: 0), Text('صغير')]),
      Row(children: [Radio<int>(value: 1), Text('كبير')]),
    ],
  ),
)

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

المعاملالوظيفة
RadioGroup.groupValueالقيمة المختارة حاليًا بالمجموعة كلّها
RadioGroup.onChangedيُستدعى بالقيمة الجديدة عند اختيار أي Radio بداخله
Radio.valueالقيمة التي يمثّلها هذا الزر تحديدًا
Radio.enabledتعطيل زر واحد بعينه (بدل تمرير onChanged: null بالنمط القديم)

💡 نصائح عملية

  • استخدم RadioListTile إذا أردت نصًا واضحًا بجانب كل زر بسطر جاهز — نفس فكرة CheckboxListTile

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

  • تمرير groupValue وonChanged مباشرة لكل Radio على الطريقة القديمة — أُوقِفا (deprecated)؛ الطريقة الحالية تلفّ المجموعة بـ RadioGroup واحد

خصائص ذات صلة

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