Flutter | Mahmoud Azab
10.5K subscribers
1.82K photos
135 videos
10 files
299 links
اسألني في اي مشكله ان شاء الله أقدر اساعدك
🎃 @mahmoud_azab99 🎃
Download Telegram
#منقول
ازاي تعلم اي حد OOP كويس ؟
بسيطه. اشرحله Class, Encapsulation, Abstraction, Polymorphism و خلافه.
لا مش دا احسن بدايه.
امال ايه ؟
اشرحله ال Procedural Code و اخليه ينفذ المطلوب في مساله بهذا الطريق. و اطلب منه بعدها يعدل الكود او يضيف اليه.
ساعتها بقي هيشوف عيوب Procedural Code و من هنا بقي تقدر تقوله ازاي ال OOP بيحلها.
البوست دا بيلخص طريقه انا شايفها ناجحه جدا لشرح ال OOP و كمان توجه عام لشرح اي موضوع. ابدا من المشكله و بعدين قدم الحل.
بكده الناس تفهم الحل و تستوعب الياته.
لو محدش شرحلك ال OOP كده (غالبا يعني) جرب انت بقي تقرا عن Procedural Code و تفهم عيوبه و بعيدن شوف ال OOP ازاي بيحلها.
لو عملت كده هتعرف تستخدم ال OOP كويس جدا و هتشوف مثلا ازاي ال Encapsulation بيحمي ال Object و ازاي ال Polymorphism بيخلي الكود مفيهوش Conditions تربك اللي بيقرا الكود و تخبي المعني في قلب اللي كتب الكود و يدوخ اللي وراه.
ابدا من المشاكل علشان تشرح الحلول.
ابدا من المشاكل علشان تشرح الحلول.
ابدا من المشاكل علشان تشرح الحلول.
يا ريت اساتذتنا القائمين علي تدريس Software Engineering يعملوا كده. هيفرق في فهم الطلبه كتير.
❤‍🔥10🔥2
لو شغال Flutter 🚀، وهترفع App علي الـ Store او عندك Apps بالفعل، خلي بالك ان Google هتصنف برنامجك انه ليه bad behavior لو الـ ANR عدي %0.47. اعرف ايه هو الـ ANR و 4 من ضمن الطرق عشان تتجنبه

الـ ANR (Android Not Responding) بيحصل لما الـ App بتاعك يحصله Freeze لمدة 5 ثواني، و بيطلع dialog للـ user يختار اذا كان يقفل الـ app او ينتظر، و طبعا دي من المواقف السيئة اللي ممكن تحصل في الـ app خاصة لو متكررة و دائما بتؤدي لخسارة جزء كبير من الـ user base بتاعتك من خلال انهم بيعملوا uninstall للـ app لو تكرر الـ freeze.

و Google في الـ documentation بتاعها بتقول:
Overall bad behavior: At least 0.47% of daily active users experience a user-perceived ANR across all device models.
و ده معناه انهم بيصنفوا الـ app انه ليه bad behavior لو الـ ANR Rate عدي الـ %0.47، يعني لو عندك 10,000 users استخدموا الـ App النهاردة، و 47 منهم طلعلهم ANR، يبقي الـ app ليه bad behavior.

💡 طبعا اسباب الـ ANR كتير وحلولهم اكتر، بس من اكثر الاسباب انتشارًا هو ان الـ UI بيكون complex ومحتاج يعمل render لـ widgets كتير في الـ screen و بيعملهم build كتير كل شوية وبسبب كده بيعمل block للـ Main Thread لفترة طويلة وبيحصل الـ ANR، لذلك دي 4 Tips هتساعدك تحسن الـ UI Performance في الـ app و تقلل الـ ANRs بدرجة كبيرة جدا لو طبقتها:

1. افصل كود الـ UI عن كود الـ Business Logic
بمعني انك مكتكبش الاكواد اللي بتعمل heavy work في الـ build() methods، لأن الـ build() بيتعملها call كل شوية عشان تعرض التغيرات اللي حصلت في الـ UI، الافضل انك تكتب كود الـ Business Logic في method لوحده و مش مربوطة مباشرة بالـ build() او انك تستخدم احد حلول الـ state management.

2. تجنب انك تعمل Single Widget و يكون كبير جدا و بيضم كذا جزء من الـ screen
عشان تتجنب انك تعمل build لجزء كبير من الـ widget tree، الافضل انك تقسم الـ screen ل sections او widgets صغيرة كل واحد فيهم مسؤول عن حاجة، بحيث انه لما يحصله update يتعمله build لوحده بدون اهدار للوقت والـ resources في عمل build للـ widgets التانية بدون حاجة.

3. استخدم const قبل كل constructor لأي widget مش هيتغير في الـ screen
و كل ما يكون متاح انك تستخدم الـ const، لأن const كأنك بتقول لـ Flutter و هو بيعمل rebuild للـ widget tree انه ميعملش build تاني للـ widget ده و هيسيبه زي ما هو بنفس حالته، و بكده هتوفر وقت و resources كتير جدا اثناء الـ build خاصة في الـ complex screens اللي فيها widgets كتير وبتفاصيل كتير.

4. استخدم StatelessWidget بدل الـ Function عشان تعمل Reusable Widget
لو عندك widget هتستخدمه كذا مرة في كذا مكان و هتخليه reusable، الأفضل انك تعمله StatelessWidget في Class بدل ما تعمله Function بيعمل return للـ widget، لأن الـ StatelessWidget اتصمم انه يعمل seamless integration مع الـ rendering pipeline، وغير كده انه بيكون فيه built-in caching techniques و ده بيحسن الـ performance. طبعًا الفرق مش هيبان في الـ widgets البسيطة والصغيرة، لكنه بيفرق جدا في الـ apps الكبيرة والـ complex screens.
❤‍🔥20🔥9
السلام عليكم ورحمة الله وبركاته 🌟

الحمد لله بفضل ربنا، قربنا نوصل لـ 10 آلاف شخص في القناة! 🎉

أتمني االي يقدر ينضم لجروب القناه ينضم عشان لو حد واقف في مشكله يلاقي حد يرد عليه ويساعده


وبرضو حابب اسمع رأيكم في فكرتين ممكن تساعدنا نتعلم ونطور من نفسنا:

1️⃣ مسألة يومية (Problem Solving)

- هننزل كل يوم الصبح مسألة تفكروا فيها وتحاولوا تحلوها بنفسكم.

- بالليل ننزل الحل بحيث تتعرفوا على طرق حل مختلفة وتتعلموا تكنيكات جديدة، ولو عندكم أفكار تانية للحل ياريت تشاركوها.


2️⃣ تحدي تصميم (UI Task):

- هنطرح تصميم لشاشة واحدة تشتغلوا عليه مع نفسكم، بحيث تتدربوا على التصميم وتطوير الـUI.

- مش مطلوب إنكم تنشروا الكود، بس لو حد واجه مشكلة في تصميم حاجة معينة، يبعتلنا، والكل يساعده.

إيه رأيكم؟ شايفين إن الأفكار دي ممكن تفيدكم وتساعدكم تتطوروا؟


وجزاكم الله خيرا 🌹
🔥65❤‍🔥124
Dart tip to filter nullable list using

1️⃣ .whereType<T>()
2️⃣ .nonNulls
❤‍🔥21🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Create a Cartoon App UI with Flutter

DM for : Business Inquiries & App Development Projects
📩 mahmoud.azab.codes@gmail.com
🔥13❤‍🔥3🆒1
This media is not supported in your browser
VIEW IN TELEGRAM
🎥 Video Walkthrough: Pokemon Explorer in Flutter

💼Looking for an app developer or have a business idea? I’d love to help bring your project to life!

📩 mahmoud.azab.codes@gmail.com

https://www.linkedin.com/in/azabcodes/
❤‍🔥4🔥2
ممكن حد يفهمني اي هو ال
Profile mode in flutter ؟

الاجابه ⬅️

Profile mode
هو mode الخاص بتتبع وتحليل الأداء بتاع الابلكيشن زي مساحته و استهلاكه لل network او battery او storage وغيرهم ، مش بيشتغل علي emulator او simulator ،
لازم جهاز حقيقي زي ال release mode كده عشان يقدر يديلك الأداء الحقيقي
flutter run --profile
#منقول
❤‍🔥15🔥9
This media is not supported in your browser
VIEW IN TELEGRAM
ارسال الاشعارات بدون فتح
Firebase console

السلام عليكم ورحمة الله وبركاته،
الحمد لله، عملت سكربت بقدر من خلاله أبعث إشعارات من Firebase باستخدام التوكن (token)، أو أبعث إشعارات لأكتر من توكن في نفس الوقت. وكمان ممكن أختار إذا كان الإشعار هيتبعت من خلال التوكن أو من خلال الـ topic.

للتواصل
📩mahmoud.azab.codes@gmail.com
❤‍🔥11🔥42
#منقول

خلونا نتكلم النهاردة شوية عن ال state management واية مفهوما وبعدها هنتكلم عنها بالخصوص مع flutter وكل نوع مبني علي اية وبيشتغل ازاي
البوست دة هيكون طويل شوية عشان التفاصيل اللي فية كتير شوية

مبدئيا كدة هو اية ال
core
بتاع ال
state management ؟


بص يا صديقي هي اي
state managment
شغاله علي حاجتين وهما

1- Data Flow:
هو الطريقة اللي الdata
بتتحرك بيها جوه التطبيق عشان تتأكد إن الupdates
بتحصل في مكان واحد وتتوزع بشكل منظم لكل الأجزاء اللي محتاجاها وهقولك بالتفصيل الموضوع دة بيحصل جوه
flutter
ازاى.

2-Reactivity:
هي إن التطبيق يكون مراقب أو منتبه للتغييراتupdates
اللي بتحصل في الdata،
وده عشان يعمل update لل ui فورًا من غير تدخل يدوي ودة اكتر حاجة مستخدمة في flutter عموما وبرضو هنشرحها بالتفصيل وكل State management بتستخدم المبدأ دة ازاي.


تمام كدة ؟ فهمنا اي state management شغاله علي اية ؟ يلا بينا بقي نشرح الموضوع بالتفصيل في flutter

طيب اية هي انواع ال state في flutter ؟


في Flutter، عندنا نوعين رئيسيين من الstates:

1- Ephemeral State :

ودي state بسيطة زي state زرار معين، أو قيمة text موجودة في وwidget معينة الحالة دي ممكن نتحكم فيها باستخدام setState، ودي بتكون مفيدة في الحاجات الصغيرة.

2- App-wide or Global State :

ودي state بتأثر على أكتر من widget في التطبيق زي login state أو user data state أو app settings الstate دي محتاجة حلول أكتر تعقيدًا من setState لأنها بتأثر على التطبيق كله.


طيب حلو كلام جميل, اية هي بقي المبادئ اللي بيتبني عليها الكلام دة ؟
بص يا صديقي كل حلول ال
state management
مبنية على شوية مبادئ أساسية وهما:

1- Single Source of Truth:

بمعنى إننا بنخلي فيه مكان واحد بيحتفظ بكل الdata الأساسية عشان نبقى عارفين إن دايمًا الdata جايه من نفس المكان. ده ممكن يكون model، controller، أو class

بيحافظ على الdata.

2- Unidirectional Data Flow:
بنخلي الdata تمشي في اتجاه واحد عشان يبقى سهل متابعة الupdates. يعني الdata بتروح من:
source → state → ui
أي تعديل الuser يعمله بيعمل update للsource اللي بعد كده بي
update الstate
وده بينعكس

في الui.

3-Immutability:

بعض الحلول بتشجع على استخدام data ثابتة، بمعنى بدل ما نعدل الdata اللي موجودة، بنعمل data جديدة تمثل الstate الجديدة. ده بيسهل علينا متابعة الchanges.

4-Reactive Updates:

بمعنى إن الui يحصلها update تلقائيًا لما الstate تتغير بمعنى إن الui تبقى مراقبة للstate وبتupdate نفسها بمجرد ما يحصل اي state changes.


طيب خلصنا المبادئ ؟ اية هي بقي الاساسيات ؟

فية شوية اساسيات كدة هلاقيهم في ال state managements اللي موجودة وهما :

1- الـ InheritedWidget:

هي built in widget في Flutter، وبتسمح للdata إنها تتنقل لأخر ال widget tree. بنستخدمها لما نحتاج وwidgets فرعية تشوف نفس الdata زي ما بنشوف مع الـ Theme وMediaQuery اللي جايين مع Flutter

2- الـ Streams و الـ Sinks:

هي data channels، تقدر تستقبل data جديدة وتتفاعل معاها فورًا. زي مثلا Stream ممكن يبعت data أو يستقبل updates جديدة
نستخدمهم في حاجة زي BLoC اللي بيفصل business logic بتاع التطبيق عن الui

3- State Notifiers and Observables:

بتكون variables بتتغير وبمجرد ما تتغير، الwidgets اللي بتراقبها بتتغير زي ما موجود في provider و Riverpod و GetX
❤‍🔥18
السلام عليكم ورحمة الله وبركاته

نزلت اكتر من بوست مهم علي
LinkedIn
ان شاء الله تستفيدوا منهم

https://www.linkedin.com/in/azabcodes
❤‍🔥3🆒3🔥1
Mahmoud Azab.pdf
121.8 KB
السلام عليكم ورحمه الله وبركاته
بدور فرصه جديده ك Flutter developer فى السعوديه .فلو حد قدامه فرصه ممكن يتواصل معايا وجزاكم الله خيرا

📩 mahmoud.azab.codes@gmail.com
❤‍🔥9
السلام عليكم ورحمة الله وبركاته

اللي عايز يرفع تطبيق على
App Store
مفيش افضل من الشرح ده
موجود في الشرح حتي ازاي تعمل اكونت على آبل
وكمان ترفع التطبيق بكل الخطوات




https://codewithandrea.com/articles/how-to-release-flutter-ios-app-store/
❤‍🔥14🔥3
السلام عليكم ورحمة الله وبركاته

سؤال يا شباب لو حد بيعمل
Shimmer
هل حد عنده معلومه عن طريقه اضافتها للويدجت بحيث تاخد شكل الويدجت تلقائي من غير ما اعمله بنفسي
يا شباب انا عارف ال Skeletonizer
بس برضو لازم تعمل
Fake data

عشان لما تكون لسه بتحمل تديها ال fake items

هل في حل تاني ؟
4
السلام عليكم ورحمة الله وبركاته
بوست مهم عن ال
Responsive
وحل مشكله ارتفاع عناصر ال
GridView
وبرضو عدد العناصر سواء فى ال
GridView || ListView

حاليا هتقدر تحدد عدد العناصر على كل شاشه
سواء موبايل او ويب او تابلت وغيرهم

لينك البوست

https://www.linkedin.com/posts/azabcodes_%D8%A7%D9%84%D8%B3%D9%84%D8%A7%D9%85-%D8%B9%D9%84%D9%8A%D9%83%D9%85-%D9%88%D8%B1%D8%AD%D9%85%D9%87-%D8%A7%D9%84%D9%84%D9%87-%D9%88%D8%A8%D8%B1%D9%83%D8%A7%D8%AA%D9%87-%D9%84%D9%88-%D8%A8%D8%AA%D9%88%D8%A7%D8%AC%D9%87-activity-7276329999266123778-Cm1O?utm_source=share&utm_medium=member_desktop
❤‍🔥64🔥2🤯1