لغة الدارت وتقنية الفلاتر – Telegram
لغة الدارت وتقنية الفلاتر
1.26K subscribers
750 photos
103 videos
18 files
214 links
تحتوي القناة على مصادر مفيدة لتعلم لغة الدارت وتقينة الفلاتر :

- سلاسل تعليمية مدفوعة تم اضافتها في استضافات مجانية.
- فيديوهات تعليمية و مقتطفات مفيدة في فيديوهات احادية.
- واجهات جاهزة .
Download Telegram
هذه مكتبة اخرى.. اليوم سربنا عمل اشهر.

يمكنك الاطلاع على مثال حي عن المكتبة على الرابط:
https://geniussystems24.github.io/smart_pagination/

🚀 إذا عندك قوائم بيانات كبيرة في Flutter وتريد Pagination نظيف وسريع بدون وجع رأس…
جرّب مكتبة smart_pagination — حل جاهز للإنتاج ويختصر عليك وقت كثير.

Zero Boilerplate: شغّل الـ Pagination بأقل كود.
🧩 7 Widget Classes جاهزة: ListView / GridView / PageView / StaggeredGrid / ReorderableList / Column / Row.
⚡️ Smart Preloading: تحميل تلقائي قبل ما المستخدم يوصل لآخر القائمة.
🔴 تدعم Futures + Streams + دمج Streams للـ Real-time.
⚠️ Error Handling متقدم: 6 ستايلات جاهزة للأخطاء مع فصل حالة أول صفحة عن “Load More”.
🎛 Built-in BLoC/Cubit + عمليات بيانات برمجية (add/remove/update/clear) بسهولة.
Data Age & Expiration: تحديث تلقائي للبيانات (مفيد للـ Global Cubits).
🔍 SmartSearchBox: Overlay ذكي + تموضع تلقائي + تنقّل بالكيبورد.
تخصيص كامل للتصميم + Type-safe Generics + ThemeExtension للـ Light/Dark.
🔗 https://pub.dev/packages/smart_pagination
👍2
هذه مكتبة اخرى..

يمكنك الاطلاع على مثال حي عن المكتبة على الرابط:
https://geniussystems24.github.io/super_dialog

مكتبة super_dialog لـ Flutter — لو تبغى Dialogs “فخمة” بحركات سلسة وجاهزة للاستخدام.
🎬 توفر 6 أنماط أنيميشن جاهزة: Slide من كل الاتجاهات + Scale + Fade (مع دعم RTL).
📍 تدعم Positioned Dialogs: تفتح الديالوج في 9 مواقع بالشاشة (شبكة 3×3) مع تحكم ببداية/نهاية الحركة.
🧩 فيها 7 أنواع انتقالات (Slide / Fade / Scale / Mix) لنتائج شكلها احترافي.
⚙️ إعدادات مرنة: مدة الحركة، Curves، لون الـ Barrier، Blur، قيود الحجم، SafeArea… إلخ.
🧠 API بسيط ومريح للمطور + Generics + Callbacks لدورة حياة الديالوج + بدون Dependencies إضافية.
📱 فيها Dialog تكيفي حسب المنصة (مثل iOS ستايل Bottom Sheet).
🧪 مرفق Demo و Example لتجربة السيناريوهات المختلفة مباشرة.
🌍 شغالة على Android / iOS / Web / Windows / macOS / Linux.
🔗 جرّبها من هنا: https://pub.dev/packages/super_dialog
👍1
🚀 مكتبة Flutter رهيبة اسمها super_interactive_text 👇
تخلي أي نص في تطبيقك “ذكي” ويتحوّل تلقائيًا لعناصر قابلة للنقر
🔗 روابط (URL)
📧 إيميلات
📞 أرقام هاتف
#️⃣ هاشتاقات
@️⃣ منشن (username)
🌐 وحتى روابط منصّات التواصل + دعم روابط داخلية للتنقّل داخل التطبيق
مفيدة جدًا لتطبيقات الدردشة، التعليقات، الوصف، أو أي مكان فيه نصوص كثيرة 💬
🌐 رابط المثال التجريبي: https://geniussystems24.github.io/super_interactive_text/
📦 رابط المكتبة: https://pub.dev/packages/super_interactive_text
#Flutter #Dart #OpenSource #MobileDev #UI #DeveloperTools
https://geniussystems24.github.io/tooltip_card/#/animations

احدى مكاتب الـ Flutter التي استغرق بناءه وتطويرها وقت ليس بالقليل.. وكان سبب بناءها تسهيل واجهات المستخدم في نظام شركتنا #GeniusLink.

🔥 مكتبة tooltip_card لـ Flutter: Tooltip/Popover احترافية مستوحاة من Fluent TeachingTip وتدعم Material 3 و RTL.
مناسبة لشرح العناصر داخل التطبيق بشكل جميل وواضح.
🧠 تموضع ذكي حول العنصر (12 اتجاه) لتفادي خروجها من الشاشة.
➡️ تدعم سهم/Beak قابل للتخصيص لتحديد الهدف بدقة.
👆 تريجرات متعددة: Tap / Hover / Double-tap حسب تجربة المستخدم.
🎛 تحكم كامل عبر Controller (فتح/إغلاق برمجياً بسهولة).
تخصيص عالي للشكل: ألوان، حواف، ظل، ومسافات.
📦 جرّبها : <https://pub.dev/packages/tooltip_card>
هل صادفت شاشة منتجات “تفلاش” بيانات ناقصة… ثم تبدأ الطلبات تتكرر على الـ API بدون سبب؟

في MyApp واجهنا سيناريو شائع في Local-First داخل الـ SDK:
عند عرض Product List، كل منتج يحتاج Reference Data: Section / Unit / Manufacturer.
لكن عند انتهاء TTL تصبح البيانات Stale.

⚠️ المشكلة (The Blind Spot)
بدون سياق مزامنة مثل since أو lastSentAt، الـ SDK لا يعرف ما تغيّر فعلاً → يلجأ إلى Blind Full Fetch (Get All).

🔥 النتيجة
Redundant API Calls + High Server Load + Poor UX + نفس الداتا تُرسل مراراً.

الحل
Delta/Incremental Sync + إرسال since = lastSentAt عند إعادة الطلب،
مع نافذة منع تكرار (10 دقائق) + (اختياري) Stale-While-Revalidate،
ومع ضغط UI العالي: Single-Flight / In-Flight Deduplication.

هل تستخدمون updatedSince / ETag / lastSyncAt في مشاريعكم؟

شرح الحل في المنشورات القادمة

#API #MobileArchitecture #DistributedSystems
حل مشكلة “الطلبات المكررة” في Reference Data بطريقة أبسط وأذكى داخل MyApp

بدل ما الـ SDK يعيد جلب كل شيء عند انتهاء TTL أو عند تكرار فتح الشاشة، طبقنا 3 أفكار مع بعض:

1) Delta Sync (Incremental Updates)
كل مرة نطلب فقط التغييرات عبر:
?since=lastSentAt
يعني: “أعطني ما تغيّر منذ آخر مزامنة ناجحة” بدل Full Fetch.

2) Throttle Window (مثلاً 10 دقائق)
لو المستخدم أعاد فتح الشاشة أو كرر نفس الطلب خلال 10 دقائق:
لا نرسل API Call جديد → نكتفي بالمحلي.
وبعد انتهاء النافذة نسمح بطلب Delta جديد.

3) Stale-While-Revalidate (SWR)
نعرض البيانات المحلية فوراً (حتى لو قديمة قليلاً) ونحدّث بصمت في الخلفية.
النتيجة: تجربة أسرع بدون “فلاش” بيانات ناقصة.

📌 النتيجة النهائية:
Optimized Network
Low Server Load
Fast & Fluid UX
Tiny Delta Payload بدل Massive Payload

هل تستخدمون lastSyncAt / lastSentAt أو Delta Sync في مشاريعكم؟

#API #MobileArchitecture #DistributedSystems
مشكلة شائعة في Local-First: “Race Condition” تسبّب رحلات API مكررة 🚨
مشكلة شائعة في Local-First: “Race Condition” تسبّب رحلات API مكررة 🚨

تخيّل شاشة Product List تُرندر عدة عناصر في نفس اللحظة (Product A / B / C…).
كل منتج يحتاج نفس الـ Reference Data مثل: Section #4.
الـ SDK يعمل Local-First → يفحص Local DB (Cache) أولاً.

⚠️ أين المشكلة؟
لأن الطلبات متزامنة، الجميع يصلون للكاش قبل أن يكتب أول طلب النتيجة:
Local DB = MISS (Not Found Yet)
فيقوم كل منتج بإطلاق طلب شبكة مستقل لنفس البيانات…
فتتحول العملية إلى 20+ طلب متطابق قبل أن يكتمل الأول.

🔥 الأثر على الخلفية (Backend)
- High Concurrency Load
- Wasted Bandwidth
- Risk of Rate Limiting
- UX أبطأ بسبب ازدحام الشبكة

🧠 المصطلحات الشائعة
- Cache Stampede / Thundering Herd
- Race Condition (In Local-First Cache)
- Redundant API Calls (وأحياناً تُرى كـ N+1 / Over-fetching حسب السياق)

كيف نعالجها عادة؟
- Single-Flight / In-Flight Deduplication: “طلب واحد لكل مفتاح” والبقية تنتظر نفس الـ Future/Promise
- Request Coalescing: تجميع الطلبات المتطابقة
- (اختياري) Prefetch/Batch للـ Reference Data عند تحميل المنتجات

هل واجهت هذا السيناريو في تطبيقك؟ وكيف تعاملت معه؟

الحل في المنشورات القادمة

#API #MobileArchitecture #DistributedSystems
حل “الطلبات المتزامنة المكررة” في Local-First: Request Coalescing (Single-flight)

المشهد معروف:
شاشة Product List تُرندر عدة منتجات في نفس اللحظة (Product A / B / C…)
وكلهم يحتاجون نفس الـ Reference Data مثل: Get Section #4.
بدون حل، كلهم يطلقون API Calls متطابقة قبل ما يكتمل أول طلب ويكتب للكاش.
حل “الطلبات المتزامنة المكررة” في Local-First: Request Coalescing (Single-flight)

المشهد معروف:
شاشة Product List تُرندر عدة منتجات في نفس اللحظة (Product A / B / C…)
وكلهم يحتاجون نفس الـ Reference Data مثل: Get Section #4.
بدون حل، كلهم يطلقون API Calls متطابقة قبل ما يكتمل أول طلب ويكتب للكاش.

🧠 الحل: SDK Request Coordinator (In-flight Map)
نضيف طبقة داخل الـ SDK تعمل كـ “مُنسّق طلبات”:
- تحتفظ بخريطة: Map<Key, Future>
- المفتاح = (Section#4)
- القيمة = Shared Future (طلب جاري)

كيف يعمل؟
1) أول طلب (Product A):
- لا يجد المفتاح في الـ In-flight Map
- ينشئ Shared Future
- ويرسل 1x API Request فقط

2) الطلبات التالية (Product B / C…):
- تجد Shared Future موجودة
- لا تُنشئ طلبات جديدة
- فقط “تنتظر” نفس الطلب الجاري (Await existing in-flight request)

📦 عند وصول النتيجة
- يتم كتابة البيانات إلى Local DB (Cache) ✔️
- يتم توزيع نفس النتيجة فوراً لكل عناصر UI المنتظرة (Fan-out) ✔️

📌 النتيجة
- 1x Optimized API Request بدل 20x Duplicate Requests
- Minimal Backend Load
- Fast & Consistent UX
- Cache يُملأ مرة واحدة ويُستخدم للجميع

🔎 مصطلحات مرتبطة
- Request Coalescing
- Single-flight Mechanism
- In-flight Deduplication
- Shared Future / Promise
- (وأحياناً يُستخدم كـ Lock per Key)

هل تطبّقون Single-flight في الـ SDK أو على مستوى Repository Layer؟
#API #MobileArchitecture #DistributedSystems
👍1