مقدمة : 

تعتبر الصور والأيقونات من أكثر العناصر استخداماً في التطبيقات , حيث يعتبر العنصر البصري عنصراً أساسياً في تجربة المستخدم وتصميم الواجهات ,
تتيح لك فلاتر إضافة الصور والأيقونات بأسلوب سهل وبسيط سنتعرف عليه من خلال المقال التالي : 

الأيقونات : 
توفر لك فلاتر من خلال Material  مكتبة كبيرة من الأيقونات الجاهزة ضمن عدة أنواع ( العادي , والمفرّغ outlined و الحاد sharp   ) 

تضمين الأيقونات : 

تعتبر الأيقونات عنصراً  Widget كأي عنصر من عناصر فلاتر ( يمكنك تضمينها في أي مكان ضمن شجرة العناصر ) و أشهر الأماكن التي تستخدم فيها الأيقونات هي ضمن 
( البار العلوي AppBar , البار السفلي BottomNavigationBar , القائمة الجانبية Drawer

خصائص الأيقونات : 


Icon(
      Icons.audiotrack,
      color: Colors.green,
      size: 30.0,
    ),


color : لون الأيقونة و تأخذ قيمة لون Color مثال (Colors.red)
size : قياس الأيقونة وتأخذ قيمة double 


 



تضمين الصور Image Widget : 

للصور عدة انواع منها : 
النوع asset لاستخدام صورة محلية من ملفات التطبيق تعرف مسبقاً في ملف pubspec.yaml
و النوع network لاستخدام صورة من الانترنت ( رابط صورة ) 
والنوع file وهو ملف موجود في الهاتف ليس من ملفات التطبيق 

يتم استخدام الصور كأي Widget باستخدام كلاس Image أو ضمن خصائص الستايل decoration  الخاص بال container ضمن كلاس (ImageProvider )


1 - الصور المحلية asset ( ملفات التطبيق ) : 

يتم تعريفها أولاً ضمن ملف pubspec.yaml بالشكل التالي : 

  
flutter:
  assets:
    - assets/background.png

 

ومن ثم تضمينها مع استدعاء المسار : 

 

 

  
Image.asset('assets/background.png')
//أو بالشكل التالي
Image(image: AssetImage('assets/background.png'))

 

2 - الصور الخارجية network : 

 

يتم استدعاؤها بشكل مباشر عبر وضع رابط الصورة ضمن خصائصها 

 

 

  
Image.network('https://husam-hammad.com/images/husam-logo-white.png')
//أو بالشكل التالي
Image(image: NetworkImage('https://husam-hammad.com/images/husam-logo-white.png'))

 

 

3 - الصور المستدعاة من ملف داخل الهاتف ( ليس من ملفات التطبيق ) file 

خصائص الصور : 
سنتناول أبرز خصائص الصور ويمكنك الإطلاع على كامل الخصائص عبر الرابط  أسفل المقال : 

• width : قياس عرض الصورة ويأخذ قيمة double 
• height : قياس ارتفاع الصورة ويأخذ قيمة double 
• fit : ملائمة الصورة ضمن الحاوية وتأخذ قيمة BoxFit وهو من نوع enum وله العديد من الأنواع , وأهمها : 

 BoxFit.fill تعديل قياس الصورة طولاً وعرضاً  لملئ المساحة الموضوعة بداخلها 
 BoxFit.cover تغطية الصورة للمساحة الموضوعة داخلها دون أي تعديل على المقاس 
BoxFit.contain تعديل قياس الصورة بشكل نسبي بالطول والعرض معاً .
BoxFit.none عدم التعديل على  المقاس .

•alignment : محاذاة الصورة ضمن الحاوية وتأخذ قيمة كلاس AlignmentGeometry  كمثال ( Alignment.center ) 
filterQuality : دقة الصورة وتأخذ قيمة FilterQuality وهو من نوع enum  , كمثال  (FilterQuality.low)





المراجع : 

Icons class - material library - Dart API (flutter.dev)

Image class - widgets library - Dart API (flutter.dev)

Adding assets and images | Flutter