IconButton

ما هي IconButton؟

هي ويدجت تعرض أيقونة (من نوع Icon) لكنها قابلة للنقر (Clickable)، وتنفذ أكشن عند الضغط عليها.

الصيغة الأساسية
IconButton(
  icon: Icon(Icons.home),
  onPressed: () {
    print("تم الضغط على الأيقونة");
  },
)
Dart
أهم الخصائص في IconButton
الخاصيةالنوعالوصف
iconWidgetالأيقونة التي ستُعرض (عادةً Icon).
onPressedVoidCallback?الدالة التي تُنفذ عند الضغط (إذا كانت null تكون الأيقونة معطلة).
iconSizedoubleحجم الأيقونة (افتراضي 24).
colorColorلون الأيقونة.
highlightColorColorلون اللمعة عند النقر.
splashColorColorلون الموجة عند النقر (Ripple).
tooltipStringنص يظهر كبالون صغير عند وضع المؤشر (في الويب/الديسكتوب).
paddingEdgeInsetsGeometryالمسافة حول الأيقونة داخل الزر.
alignmentAlignmentمحاذاة الأيقونة داخل الزر.
constraintsBoxConstraintsلتعديل القياسات الافتراضية للزر.
enableFeedbackboolتفعيل/تعطيل صوت أو اهتزاز عند النقر (حسب الجهاز).
disabledColorColorلون الأيقونة إذا كانت onPressed = null.
style (من Flutter 3.7+)ButtonStyleتخصيص مظهر الزر بالكامل.
مثال بسيط
IconButton(
  icon: Icon(Icons.search),
  color: Colors.blue,
  iconSize: 30,
  onPressed: () {
    print("بحث");
  },
)
Dart
مثال مع ألوان الـ Splash و Highlight
IconButton(
  icon: Icon(Icons.favorite),
  color: Colors.red,
  splashColor: Colors.pink.withOpacity(0.3),
  highlightColor: Colors.pink.withOpacity(0.1),
  onPressed: () {
    print("تم الإعجاب");
  },
)
Dart
مثال مع Tooltip
IconButton(
  icon: Icon(Icons.settings),
  tooltip: "الإعدادات",
  onPressed: () {
    print("فتح الإعدادات");
  },
)
Dart
تعطيل الزر
IconButton(
  icon: Icon(Icons.delete),
  onPressed: null, // معطّل
)
Dart

في هذه الحالة الأيقونة تظهر بلون disabledColor الافتراضي.

ملاحظات ونصائح
  • إذا تريد زر دائري بخلفية ملونة، استخدم FloatingActionButton بدل IconButton.
  • إذا تريد زر نص مع أيقونة، استخدم TextButton.icon أو ElevatedButton.icon.
  • IconButton ممتازة للتولبار، القوائم، وأي مكان تحتاج فيه أيقونة صغيرة قابلة للنقر.


هنا جدول المقارنة بين Icon و IconButton مع الشرح الكامل ومتى تختار كل واحد:

المعيارIconIconButton
الوظيفةعرض أيقونة ثابتة (غير تفاعلية).عرض أيقونة قابلة للنقر مع حدث عند الضغط.
التفاعللا يمكن النقر عليها.يمكن النقر عليها وتشغيل دالة عبر onPressed.
الخصائص الأساسيةicon (IconData)، size، color، shadows.كل خصائص Icon تقريباً + خصائص تفاعل مثل onPressed, tooltip, splashColor.
الاستخدام داخل أزرارتحتاج لفّها بـ Widget آخر مثل GestureDetector أو InkWell لجعلها قابلة للنقر.جاهزة للتفاعل مباشرة بدون لفها بأي ويدجت إضافية.
متى تستخدمها؟– لعرض أيقونات للتزيين أو كمؤشر.
– في النصوص أو القوائم الثابتة.
– للأيقونات التي تمثل أوامر (بحث، حذف، إعدادات).
– في AppBar، Toolbars، شريط القوائم.
الأداءأخف من ناحية الأداء لأنها عنصر رسومي فقط.أثقل قليلاً لأنها تتعامل مع التفاعل وتأثيرات اللمس.
الألوان والظلالتعيين مباشر للون والظل.تعيين مباشر للألوان + تحكم في تأثيرات الضغط (splash, highlight).
التعطيللا يوجد تعطيل، تظل دائماً بنفس الشكل.يمكن تعطيلها بجعل onPressed = null.
مثال عملي سريع للفارق

Icon (ثابتة)

Icon(
  Icons.star,
  size: 40,
  color: Colors.amber,
)
Dart
IconButton (تفاعلية)
IconButton(
  icon: Icon(Icons.star),
  color: Colors.amber,
  iconSize: 40,
  onPressed: () {
    print("ضغطت على النجمة");
  },
)
Dart