حل رفع الصور في Flutter بدون Permissions

x32x01
  • بواسطة x32x01 ||
لو شغال تطوير تطبيقات موبايل باستخدام Flutter، فالموضوع ده مهم جدًا ليك…
زمان كنا بنستخدم طرق تقليدية لرفع الصور زي باكدج image_picker، لكن دلوقتي الموضوع بقى مختلف تمامًا بسبب تحديثات سياسات Google.
📌 الحقيقة ببساطة: طلب صلاحيات الصور بقى خطر ممكن يسبب رفض التطبيق من Google Play.
خليني أوضحلك الصورة كاملة 👇

ليه طلب صلاحيات الصور بقى مشكلة؟ 🤔​

الطريقة القديمة كانت بتعتمد على إنك تطلب صلاحيات زي:
  • READ_EXTERNAL_STORAGE
  • أو الوصول الكامل للملفات
لكن مع السياسات الجديدة من Google:
  • لازم تبرر سبب طلب الصلاحيات
  • لازم يكون عندك Use Case واضح
  • أي استخدام غير مبرر = رفض التطبيق ❌
📉 وده خلّى كتير من التطبيقات تتوقف أو تتأخر في النشر.



المشكلة في الطريقة التقليدية (image_picker) ❌​

باكدج image_picker كانت الحل الأشهر، لكنها دلوقتي فيها مشاكل:
  • بتطلب صلاحيات من المستخدم
  • بتفتح معرض خاص جوه التطبيق
  • ممكن تتعارض مع سياسات Google الحديثة
  • تجربة المستخدم مش الأفضل
📌 وده معناه إنك بتخاطر برفض التطبيق حتى لو الكود شغال تمام!



الحل الجديد: system_asset_picker 🚀​

ظهر حل ذكي جدًا اسمه: 👈 system_asset_picker
الباكدج دي بتعتمد على حاجة اسمها Android Photo Picker (واجهة النظام الرسمية لاختيار الصور).

يعني إيه الكلام ده؟ 👇​

  • المستخدم بيختار الصورة من واجهة الموبايل نفسها
  • انت بتستلم الصورة مباشرة
  • من غير أي Permissions! 🔥



الفرق بين الطريقة القديمة والجديدة ⚖️​

❌ الطريقة التقليدية​

  • تحتاج Permissions
  • مخاطرة رفض التطبيق
  • UI مخصص داخل التطبيق
  • إعدادات أكتر وتعقيد

✅ الطريقة الحديثة​

  • بدون أي صلاحيات
  • استخدام واجهة النظام (Native)
  • متوافقة مع سياسات Google
  • تجربة مستخدم أفضل



ليه تطبيقات كبيرة بقت تستخدم الطريقة دي؟ 😎​

لو لاحظت، تطبيقات زي:
  • ChatGPT
  • Google Gemini
مش بتطلب منك صلاحيات علشان ترفع صورة…
📌 لأنهم ببساطة بيعتمدوا على نفس الفكرة: استخدام واجهة النظام بدل الوصول المباشر للملفات



مثال عملي في Flutter 💻​

بدل ما تستخدم الطريقة القديمة:
Dart:
final pickedFile = await ImagePicker().pickImage(source: ImageSource.gallery);
تقدر تستخدم الطريقة الحديثة (مفهوميًا):
Dart:
final result = await SystemAssetPicker.pick();
📌 النتيجة:
  • كود أبسط
  • أمان أعلى
  • متوافق مع السياسات



ملاحظات مهمة قبل ما تستخدم الباكدج ⚠️​

  • الباكدج حاليًا Android فقط
  • مش مناسبة لو محتاج تبني Custom Gallery بالكامل
  • الأفضل للاستخدامات البسيطة والسريعة



إمتى تستخدم كل طريقة؟ 🤓​

استخدم system_asset_picker لو:​

  • عايز ترفع صور/فيديو بس
  • عايز تتجنب أي مشاكل مع Google
  • عايز تجربة مستخدم بسيطة وسريعة

استخدم image_picker لو:​

  • محتاج تحكم كامل في المعرض
  • بتبني تجربة مخصصة جدًا



الخلاصة 💡​

📌 مستقبل التعامل مع الصور في التطبيقات رايح ناحية: عدم طلب صلاحيات + استخدام واجهة النظام
ولو لسه بتستخدم الطريقة القديمة… ممكن تكون بتغامر فعلًا برفض تطبيقك 😅
 
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
842
x32x01
x32x01
x32x01
الردود
0
المشاهدات
204
x32x01
x32x01
x32x01
الردود
0
المشاهدات
66
x32x01
x32x01
x32x01
الردود
0
المشاهدات
895
x32x01
x32x01
x32x01
الردود
0
المشاهدات
725
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
2,496
المشاركات
2,689
أعضاء أكتب كود
577
أخر عضو
سراب
عودة
أعلى