💥 تصحيح: في إيرور تعمدت ظهوره في الفيديو بتاع مكان استدعاء دالة ال get ولكن الإيرور مكانش بسبب اني استدعيتها في دالة build في الكلاس بدل استدعائها جوا ال builder في BlocConsumer، لا عادي ممكن تستدعيها جوا دالة ال build اللي ف الكلاس ومش هيطلع أي إيرور .. الإيرور اللي طلع كان بسبب اني استدعيت الدالة get بتاعة البلوك قبل ما أعمل create للبلوك أصلا! يعني استدعيت ال get قبل ال BlocProvider فبالتالي ضرب إيرور! ولكن الموضوع ملوش علاقة هل استدعيت ال get داخل ال BlocConsumer أو لأ خالص، بل ممكن تستدعيها ف كلاس مفهوش ال BlocConsumer أساسا وهيشتغل عادي. بس كدا 😁 ------- تعالى هنا رايح فين؟ من أهم الخطوات اللى لازم تعملها لما تتعلم حاجة جديدة خصوصا لو كانت تقيلة شوية هى انك تتدرب كتير درب إيدك على كتابة الكود على المثال اللى شرحته فى الفيديو وبعدين حاول تخترع من دماغك أمثلة وتتدرب عليها باستخدام الBloc لإنك لو شفت الفيديو بدون ما تتدرب يبقى كإنك ما عملتش حاجة! بالتوفيق للجميع 💙
شكرا لك يا أستاذ على هذا الدرس. جربت أستعمل textField ولكن المشكلة التغييير يحدث في Onchange أو Controller، العملية عكسية، يعني النص لا يتغير في Cubit مثل number++ بل يتغير في كود الشاشة. سؤالي: كيف يمكن أن يتغيرState في هذه الحالة؟ أردت عرض النص في Widget Text ولكن لا يظهر. من فضلك يا أستاذ هل يمكن أن تعمل لنا درس يشرح كيف نستعمل TextField بـ Cubit؟
@@HakimHakim-oh4yb خلي ال TextEditibgController في ملف ال cubit ومرره لل textForm من ال cubit ولما تعرضه في ال Text widget هتقوله cubit.emailController.text يعني هتجيب الداتا من الكنترولر بتاع ال TextField اللي عملته في ال cubit
بص يا صديقي، اليل انا شرحته هو ال cubit ال cubit هو جزء من ال Bloc الكيوبيت بيكون فيه ملفين أساسيين، واحد للحالات states وواحد لل state management وده اللي بنكتب فيه اللوجيك بتاعنا وبي emit ال state حسب الحالة بقى إذا كانت success أو failed ..إلخ فاحنا بننفذ فنكشن والفنكشن دي بت emit ال state فبتعمل rebuild عندنا في التطبيق والداتا بتظهر تمام كده؟ ده باختصار طبعا طيب البلوك بقى؟ البلوك بيكون فيه ٣ ملفات أساسية - ال state manamgement - ال states - ال events إيه الملف التالت بتاع الإيفينتس ده بيعمل إيه؟ هقولك .. هنا في البلوك احنا بدل ما بنستدعي الفنكشن مباشرة لأ احنا كإننا بنعمل push لإيفينت معين (وليكن LoginEvent) فلما بنعمله push البلوك نفسه بيعمل عليه listen وأول ما بيعرف ان الإيفنت ده اتعمله push أو call يعني فبيقوم البلوك ينفذ كود معين أو لوجيك معين ويـ emit ل state فال BlocBuilder بي listen على ال state فلما يشوف ال state الجديدة (وليكن LoginSuccessState) فبيقوم يعمل rebuild للمستخدم بناءا على الحالة دي . فالفكرة ان البلوك بيكون فيه اتنين Streams واحد من البلوك بيسمع لأي إيفنت انت بتعمله، والتاني بيكون ستريم من ال BlocBuilder علشان تسمع أي state جديدة وتعمل rebuild للويدجت بتاعتك. لكن في ال cubit بيكون في stream واحدة اللي هي بتاعة ال BlocBuilder .. وكده كده انت بتنفذ الفنكشن علطول من غير ما تضطر تنده event أو حاجة. بس كده ده باختصار .. أتمنى تكون الفكرة وصلت وأتمنى اكون جاوبت على سؤالك. ولو في حاجة واقفة معاك ابعتلي facebook.com/malazhariy2
شكرا لتعليقك ان شاء الله هيكون في سلسلة فيديوهات لشرح البلوك وليس ال cubit وهتكون متقدمة أكتر ان شاء الله بس حاليا شغال على شرح ال Null Safety هخلصها واشتغل في البلوك علطول ان شاء الله.
شكرا جدا ياباشمهندس عاوزينك تعملنا كورس ياباشمهندس بيشرح تطبيق القران الكريم هيبقى فيه شرح التعامل مع ال API والبلوك وطبعا ال Dio دا غير انه هيبقى شغل ديزاين كويس والتعامل مع ملفات الصوت ويكون كلين كود وتنظيم ملفات المشروع وكل حاجة من دول تتشرح لشخص كانه اول مرة ياخدها يعنى هيبقى فيه شغل كويس جدا وهيكون شغل على تطبيق مش مجرد كتابة كود وخلاص ياريت تهتم بالفكرة دى و تعملنا بلاى ليست للتطبيق لان مفيش فى المحتوى العربى حد بيشرحه خالص ويبقى جزاك الله كل خير
Error: Could not find the correct Provider above this BlocConsumer Widget This happens because you used a `BuildContext` that does not include the provider of your choice. There are a few common scenarios: can any one help me to solve this error ?
Thanx for this great tutorial , I implemented the code but the I had this annoying error : Error: Method invocation is not a constant expression. onPressed: cubit.decreaseNumber(),
سؤال جميل أول حاجة الـ setState أو الـstateful widget بتستخدمه لإدارة الـclass الحالى (اللى هو طبعا stateful widget)، بينما البلوك بيدير المشروع كله وتقدر من class انك تحدث بيانات class تانى أو تمرر بيانات من class لكلاس تانى بسهولة وتتحكم فى أى كلاس من أى مكان فى التطبيق بتاعك كمان من ناحية تنظيم الكود فالبلوك بينظملك الدنيا والكود بيكون نضيف وسهل تعديله فى المستقبل المثال اللى شرحته بسيط وممكن يتنفذ بأى حاجة فيهم مش هتلاحظ الفرق، لكن لو اشتغلت على مشروع كبير شوية هتلاحظ الفرق وأحيانا ممكن متعرفش تشتغل بالsetState + فى عندك builder & listener ودول بيتعمل بيهم شغل حلو زى مثلا إنى أقوله يبعت بيانات للسيرفر وف أثناء ما البيانات بتتبعت أخليه يعمل علامة التحميل .. دى بتتعمل عن طريق الlistener والstate اللى ببقى مسميها loading مثلا بحيث أول ما يدخل فى الstate دى ال listener ياخد باله علطول يقوم يعرض علامة التحميل لحد ما البيانات تكمل تحميل وبعدين يظهر البيانات فحاجة زى كدا هتعقدر تعملها بالبلوك بسهولة .. لو فكرت تعمل حاجة زى كده بالstateful هتعملها ازاى؟! باختصار الـsetState ممكن أستخدمها فى حالات بسيطة لكن لو هبنى مشروع كبير شوية يبقى استخدم BloC أو حتى GetX أو provider وتقريبا كلهم شبه بعض - شوف الموقع دا فيه إجابات عن سؤالك: stackoverflow.com/questions/59562655/what-is-the-difference-between-setstate-and-bloc-pattern-in-dart
شكرا لدعمك وان شاء الله الفترة الحاية يبقى في فيديوهات أكتر 😁💙 + أنا مش دكتور يا غالي 😁 انا راجل عندي معلومة بقدمها للناس بشكل بسيط مش أكتر وأتمنى أكون قدرت افيدك.
💥 تصحيح: في إيرور تعمدت ظهوره في الفيديو بتاع مكان استدعاء دالة ال get ولكن الإيرور مكانش بسبب اني استدعيتها في دالة build في الكلاس بدل استدعائها جوا ال builder في BlocConsumer، لا عادي ممكن تستدعيها جوا دالة ال build اللي ف الكلاس ومش هيطلع أي إيرور .. الإيرور اللي طلع كان بسبب اني استدعيت الدالة get بتاعة البلوك قبل ما أعمل create للبلوك أصلا!
يعني استدعيت ال get قبل ال BlocProvider فبالتالي ضرب إيرور!
ولكن الموضوع ملوش علاقة هل استدعيت ال get داخل ال BlocConsumer أو لأ خالص، بل ممكن تستدعيها ف كلاس مفهوش ال BlocConsumer أساسا وهيشتغل عادي.
بس كدا 😁
-------
تعالى هنا رايح فين؟
من أهم الخطوات اللى لازم تعملها لما تتعلم حاجة جديدة خصوصا لو كانت تقيلة شوية هى انك تتدرب كتير
درب إيدك على كتابة الكود على المثال اللى شرحته فى الفيديو وبعدين حاول تخترع من دماغك أمثلة وتتدرب عليها باستخدام الBloc لإنك لو شفت الفيديو بدون ما تتدرب يبقى كإنك ما عملتش حاجة!
بالتوفيق للجميع 💙
صح جدا
شكرا لك يا أستاذ على هذا الدرس. جربت أستعمل textField ولكن المشكلة التغييير يحدث في Onchange أو Controller، العملية عكسية، يعني النص لا يتغير في Cubit مثل number++ بل يتغير في كود الشاشة. سؤالي: كيف يمكن أن يتغيرState في هذه الحالة؟ أردت عرض النص في Widget Text ولكن لا يظهر. من فضلك يا أستاذ هل يمكن أن تعمل لنا درس يشرح كيف نستعمل TextField بـ Cubit؟
@@HakimHakim-oh4yb
خلي ال TextEditibgController في ملف ال cubit ومرره لل textForm من ال cubit
ولما تعرضه في ال Text widget هتقوله cubit.emailController.text يعني هتجيب الداتا من الكنترولر بتاع ال TextField اللي عملته في ال cubit
لو لييك قناة ع الفيسبوك ممكن رابط القناة .
ممتاز
حضرتك انت لو شرحت كورس كامل بنفس الطريقه والله هتبق رقم 1 بدون مبالغه واتمني دا ❤❤
شكراً على تعليقك الجميل يا سيد 💙
ان شاء الله هعمل كدا أول ما اكون مستعد لده ومجهزله كويس لأنها مسؤولية كبيرة
شرح حضرتك اكثر من رائع بجد
شكرًا على تعليقك الجميل يا بشمهندس 💙
حضرتك بتعمل عظمه هنا في الكورس ده❤❤
أفضل شخص شرح البلوك على اليوتوب و اليوديمي شكرا جزيييييييلا أخوك من المغرب ❤️
شكراً ليك 💙
انا داخل كورس بس صراحة مافهمت البلوك الا من حضرتك اسلوب رائع جدا تحياتي
شكرا على تعليقك الجميل وبتمنالك التوفيق 💙
يعطيك العافية أستفدت جداً من شرحك، وياريت تستمر في طرح العديد من المواضيع المتعلقة بفلاتر
فعلا اروع شرح للبلوك ..اول مره افهمه
شكرا لتعليقك 💙
شخص راقي أسلوب راقي تستحق أكثر من مليون متابع
thank you so much engineer Mostafa
أفضل شخص شرح البلوك على اليوتوب ❤❤❤
شرح رائع شكرا لك في انتظار باقي الدروس
جزاك الله خيرا
وجزاكم بالمثل وزيادة، شكرا ليك
اسلوب شرح لكثر من رائع جزاك اللة كل خير يابشمهندس
وجزاكم الله خيراً بمثله وزيادة
شكراً لتعليقك 💙
عاااااش بجد ي هندسه شرح فوق الممتاز
شكرا يا محمد 💙
جميل جدا ماشاء الله ياباشمهندس استمر 👏❤
شكراً لتعليقك 💙
ماشاء الله شرح سهل وممتع ونتمى لك النجاح والاستمرار
شكرا لتعليقك
آمين يارب وإياك 💙
افضل شخص شرح الbloc
شكرا ليك، وان شاء الله هيكون في سلسلة فيديوهات جديدة أشرح فيها ال BloC نفسه مش ال Cubit
شكراً لتعليقك 💙
ووووو أين المقطع الثالث
بصراحه شرحك مبسط ورائع
ماشاء الله شرح سلس وبسيط أشكرك من كل قلبي،، لكن سيكون هناك اكمال لهذه السلسه
شكراً ليك يا حمزة 💙
ان شاء الله هيكون في سلسلة (فلاتر عالسريع) هنزل فيها شروحات خفيفة، وفي فيديو جديد هينزل النهاردة ان شاء الله
شرح جميل جدا استمر 🔥
جميل جدا يا بشمهندس ماشاء الله
الله ينور
شرح جميل جدا استمر ربنا يبارك فيك
حبيبي وفيك بارك الله تسلم على تعليقك 💙
بتمنالك التوفيق
بارك الله فيك يا بشمهندس شرح فوق الممتاز
ممكن تشرح api flutter
ربنا يبارك فيك شرح جميل و سلس
جزاك الله خيرا يا درش
وجزاكم الله خيراً بمثله وزيادة
شكراً لتعليقك يا هندسة 💙
رااااائع
ي ريت حضرتك تشرحلنا database ونستخدمه ازاي ب flutter بنفس الشرح الجميل ده عملي ونظري ❤❤
استمر يا مصطفي ❤️ ❤️
شرح أكتر من رائع فين شرح ال bloc observer؟
شرحك راائع لماذا توقفت عن النشر في القناة 😔
شكراً ليك 💙
كان في شوية مشاكل كدا، ان شاء الله هرجع انزل فيديوهات الفترة الجاية.
شكرا لتعليقك الجميل 💙
❤
عاش يا برو
في الbloc
ماالفرق بين
cubit وال event
لن في بعض الشروحات بيستخدمو ال event بدون ال cubit
بص يا صديقي، اليل انا شرحته هو ال cubit
ال cubit هو جزء من ال Bloc
الكيوبيت بيكون فيه ملفين أساسيين، واحد للحالات states وواحد لل state management وده اللي بنكتب فيه اللوجيك بتاعنا وبي emit ال state حسب الحالة بقى إذا كانت success أو failed ..إلخ
فاحنا بننفذ فنكشن والفنكشن دي بت emit ال state فبتعمل rebuild عندنا في التطبيق والداتا بتظهر
تمام كده؟
ده باختصار طبعا
طيب البلوك بقى؟
البلوك بيكون فيه ٣ ملفات أساسية
- ال state manamgement
- ال states
- ال events
إيه الملف التالت بتاع الإيفينتس ده بيعمل إيه؟
هقولك .. هنا في البلوك احنا بدل ما بنستدعي الفنكشن مباشرة لأ احنا كإننا بنعمل push لإيفينت معين (وليكن LoginEvent) فلما بنعمله push البلوك نفسه بيعمل عليه listen وأول ما بيعرف ان الإيفنت ده اتعمله push أو call يعني فبيقوم البلوك ينفذ كود معين أو لوجيك معين ويـ emit ل state
فال BlocBuilder بي listen على ال state فلما يشوف ال state الجديدة (وليكن LoginSuccessState) فبيقوم يعمل rebuild للمستخدم بناءا على الحالة دي
.
فالفكرة ان البلوك بيكون فيه اتنين Streams واحد من البلوك بيسمع لأي إيفنت انت بتعمله، والتاني بيكون ستريم من ال BlocBuilder علشان تسمع أي state جديدة وتعمل rebuild للويدجت بتاعتك.
لكن في ال cubit بيكون في stream واحدة اللي هي بتاعة ال BlocBuilder .. وكده كده انت بتنفذ الفنكشن علطول من غير ما تضطر تنده event أو حاجة.
بس كده ده باختصار .. أتمنى تكون الفكرة وصلت وأتمنى اكون جاوبت على سؤالك.
ولو في حاجة واقفة معاك ابعتلي
facebook.com/malazhariy2
جميل اووي فين الbloc observer
ياريت شرح provider
فضلا ممكن فيديو تاني متقدم اكتر
شكرا لتعليقك
ان شاء الله هيكون في سلسلة فيديوهات لشرح البلوك وليس ال cubit وهتكون متقدمة أكتر ان شاء الله
بس حاليا شغال على شرح ال Null Safety هخلصها واشتغل في البلوك علطول ان شاء الله.
❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤
شرح ممتاز جدا ممكن لينك الكود كله لو سمحت ؟؟؟؟؟؟؟؟؟
شكرا لتعليقك 💙
يفضل تكتب الكود بنفسك وتمارس بإيدك
شكرا جدا ياباشمهندس عاوزينك تعملنا كورس ياباشمهندس بيشرح تطبيق القران الكريم هيبقى فيه شرح التعامل مع ال API والبلوك وطبعا ال Dio دا غير انه هيبقى شغل ديزاين كويس والتعامل مع ملفات الصوت ويكون كلين كود وتنظيم ملفات المشروع وكل حاجة من دول تتشرح لشخص كانه اول مرة ياخدها يعنى هيبقى فيه شغل كويس جدا وهيكون شغل على تطبيق مش مجرد كتابة كود وخلاص ياريت تهتم بالفكرة دى و تعملنا بلاى ليست للتطبيق لان مفيش فى المحتوى العربى حد بيشرحه خالص ويبقى جزاك الله كل خير
أنا شفت رسالتك في جروب sec it علفكرة 😅
والله هي فكرة حلوة جدا يا صديقي ولكن حالياً صعب بالنسبالي، ان شاء الله أول فرصة قدامي هستغلها واعمل بنصيحتك 💙
@@MAlazhariy انا فعلا نشرت الفكرة فى اكتر من جروب بس محدش عاملها خالص 😂 تسلم يا هندسة المهم ماتنساش وياريت لو تستخدم البروفايدر مش البلوك بقى 😂
Error: Could not find the correct Provider above this BlocConsumer Widget
This happens because you used a `BuildContext` that does not include the provider
of your choice. There are a few common scenarios:
can any one help me to solve this error ?
عرضت المشكلة وحليتها ف الفيديو.
هتلاقيني كاتب تفاصيل أكتر في التعليق المثبت شوفه.
بالتوفيق 💙
عايزين الblocObserve
Thanx for this great tutorial , I implemented the code but the I had this annoying error :
Error: Method invocation is not a constant expression.
onPressed: cubit.decreaseNumber(),
محتاج اتواصل معاك يا هندسة ضرورى اقدر اتواصل ازاى
معذرة لسه شايف التعليق حالا
ممكن تتواصل من خلال الفيسبوك: facebook.com/MAlazhariy
ممكن بس اعرف هل الsetState غلط نستعملها؟ او شو مشكلتها؟! وشو إلي بميز البلوك السبب إلي بخلينا نشتغل بلوك ونبعد عن setState
سؤال جميل
أول حاجة الـ setState أو الـstateful widget بتستخدمه لإدارة الـclass الحالى (اللى هو طبعا stateful widget)، بينما البلوك بيدير المشروع كله وتقدر من class انك تحدث بيانات class تانى أو تمرر بيانات من class لكلاس تانى بسهولة وتتحكم فى أى كلاس من أى مكان فى التطبيق بتاعك
كمان من ناحية تنظيم الكود فالبلوك بينظملك الدنيا والكود بيكون نضيف وسهل تعديله فى المستقبل
المثال اللى شرحته بسيط وممكن يتنفذ بأى حاجة فيهم مش هتلاحظ الفرق، لكن لو اشتغلت على مشروع كبير شوية هتلاحظ الفرق وأحيانا ممكن متعرفش تشتغل بالsetState + فى عندك builder & listener ودول بيتعمل بيهم شغل حلو زى مثلا إنى أقوله يبعت بيانات للسيرفر وف أثناء ما البيانات بتتبعت أخليه يعمل علامة التحميل .. دى بتتعمل عن طريق الlistener والstate اللى ببقى مسميها loading مثلا بحيث أول ما يدخل فى الstate دى ال listener ياخد باله علطول يقوم يعرض علامة التحميل لحد ما البيانات تكمل تحميل وبعدين يظهر البيانات
فحاجة زى كدا هتعقدر تعملها بالبلوك بسهولة .. لو فكرت تعمل حاجة زى كده بالstateful هتعملها ازاى؟!
باختصار الـsetState ممكن أستخدمها فى حالات بسيطة لكن لو هبنى مشروع كبير شوية يبقى استخدم BloC أو حتى GetX أو provider وتقريبا كلهم شبه بعض
- شوف الموقع دا فيه إجابات عن سؤالك:
stackoverflow.com/questions/59562655/what-is-the-difference-between-setstate-and-bloc-pattern-in-dart
أتمنى اكون قدرت افيدك
اعمل كورس وخد كل فلوسي
لماذا أوقفت الnull safety أليست مفيدة ؟!!!!!
هي فعلاً مفيدة جداً وحالياً بحضر لقايمة تشغيل بشرح فيها النل سيفتي بطريقة مميزة ان شاء الله.
أوقفت النل سيفتي لإني كنت شغال على مشروع قديم
نحتاج المزيد من الفيديوهات يا دكتور @@MAlazhariy
في فيديوهات شغال عليها حاليا بشرح فيها النل سيفتي بشكل احترافي ان شاء الله.
شكرا لدعمك وان شاء الله الفترة الحاية يبقى في فيديوهات أكتر 😁💙
+ أنا مش دكتور يا غالي 😁 انا راجل عندي معلومة بقدمها للناس بشكل بسيط مش أكتر وأتمنى أكون قدرت افيدك.
فين باقي الدروس؟
❤