Flutter dev مطورين فلاتر
前往频道在 Telegram
كل ما تحتاجة للتطويرك بمجال تطوير تطبيقات الاندرويد و iOS بأستخدام لغة Dart واداة Flutter رابط القناة الرسمي https://t.me/joinchat /AAAAAEwOEsRGudZ0A2HPyw لتواصل والاستفسار @Omar_Root لدعم القناة https://www.paypal.me/womnacss
显示更多伊拉克109 784未指定类别
1 361
订阅者
无数据24 小时
无数据7 天
无数据30 天
帖子存档
اختيار اللغة البرمجية التي سوف تبدأ بتعلمها كمبتديء يجب ان يكون اختيارا غير مرتبط فقط بالتخصص الذي تريد ان تصله مثل الويب او تطبيقات الهواتف، ولكن ايضا بالمصادر المتوفرة والمجتمع الذي يدعم هذه اللغة، وبتطبيقات الخوارزميات وهياكل البيانات وحل المشاكل، وايضا بشمولية اللغة مثلا تدعم ال OOP... الخ... باختصار لغة اذا تعلمتها تستطيع بعد ذلك تعلم اي لغة بسهولة لانها تشمل كل او اغلب المفاهيم في لغات البرمجة..... لهذا افظل لغات للتعلم كبداية هي واحدة من هذه اللغات :
1- جافا \ Java.
2 - سي ++ \ C++.
========
ولغة جافاسكربت ايضا من اللغات المهمة جدا لتعلم مفاهيم البرمجة الحديثة وبسهولة مثل ال Asynchronous programming و functional Programming ... الخ.
@Omar_Root
اي فكره تحبون تحولها تطبيق ان شاء الله نوفرلك هل شي وبأسعار رمزية
هذا العرض للعراق فقط بسبب بوابات الدفع
السلام عليكم ورحمة الله ، كان فيه مشكلة قابلتني في مكتبة image picker وحليتها وحبيت اشارك الحل معاكم
المشكلة بتحصل لما تعوز تعمل release apk وانت بتستخدم الإصدار
الأحدث من المكتبة حاليا وهو image_picker: ^0.6.7+12
فبيروح قايلك build failed مع رسالة الخطأ دي:
C:\flutter.pub-cache\hosted\pub.dartlang.org\flutter_plugin_android_lifecycle-1.0.7\android\src\main\java\io\flutter\embedding\engine\plugins\lifecycle\FlutterLifecycleAdapter.java:8: error: package androidx.lifecycle does not exist import androidx.lifecycle.Lifecycle;
والحل بيكون انك تروح لفولدر فلاتر عندك وتروح للمسار الأتي
flutter\.pub-cache\hosted\pub.dartlang.org\image_picker-0.6.7+12
وتدخل على ملف ال pubspec.yaml
وتغير الإصدار بتاع flutter_plugin_android_lifecycle للإصدار الأتي:
flutter_plugin_android_lifecycle: ^1.0.11
البوست ده هحاول اجمع فيه اكتر الحاجات اللي ممكن تستعملها او تكون مفيده ليك في ابلكيشن او انا عن نفسي تقريبا مفيش ابلكيشن ببتديه من غير ما استعمل الحاجات اللي هتكون في البوست ده
1- Shared Preferences
https://pub.dev/packages/shared_preferences
ايه الباكيدج دي ؟
الباكيدج دي وظيفتها انها تحفظ ليك بيانات في الجهاز الخاص باليوزر بحيث تقدر ترجع ليها في اي وقت زي local database بس خفيفه لحاجات خفيفه بمعنى انت حاليا عايز تسيڤ اسم اليوزر عندك في الابلكيشن عشان هو يكتبه مره واحده وتقدر تعرضه بعد كده من غير ما يكتبه تاني
2- Firebase Dynamic Links
https://pub.dev/packages/firebase_dynamic_links
مهمه جدا ومش كتير يعرفها فكرتها ببساطة بتعمل deep linking بمعنى انك عايز تفتح الابلكيشن عن طريق لينك وليكن مثلا في فيسبوك حد بعتلك لينك لبوست بتيجي تفتحه بتلاحظ انه فتحلك البوست داخل الابلكيشن نفسه مش في الويب الحركه دي اسمها deep linking مجربتش جميع الطرق اللي تقدر تعملها بيها لكن بالنسبالي Firebase Dynamic Links ممتاز
3- Get
https://pub.dev/packages/get
انا شايفها الحقيقه من احسن الاضافات لفلاتر بس ايه هي ؟
Get
في الاول ابتدت عشان كانت شايفه ان الـnavigation في flutter محتاج يتعدل ف عملت طريقة عشان تعمل navigation من غير ما تستعمل context وعملت pull request لفلاتر لكنه اترفض ف قرروا انهم يعملوا الكلام ده في باكيدج وابتدت تنتشر وعملوا حاجات تانيه كتير مميزه بعد كده ف
Get
حاليا تقدر تستعمله في
State Management
Localization
Dependency Management
Navigation
وكل حاجه منهم فعلا مهمه وهما عاملينها ب اسلوب عظيم واي حد تقريبا يقدر يفهمها
4- Notifications
https://pub.dev/packages/onesignal_flutter
https://pub.dev/packages/firebase_messaging
لو حد ملاحظ هنا انا ضايف 2 packages للنوتيفكشنز وهشرح هنا ليه ضايف الاتنين دول مضيفتش واحده
طبعا اغلب الناس تعرف النوتيفكشنز بتاعت firebase هي بكل بساطة باكيدج بتتيحلك تستقبل نوتيفكشنز عن طريق integration بسيط لكن فيه شوية حاجات لو هتعملها بنفسك في flutter قد تاخد وقت زي الـsound مثلا بتاع النوتيفكشن لو عايز تفتح النوتيفكشن وتوديك على لينك معين الحاجات دي صعبه حبه ف جيه منقذي الحقيقه هو
One Signal
شايفه عظيم وبيسهل عليك امور كتير وسواء firebase او one signal ف الاتنين free
https://www.youtube.com/playlist?list=PL93xoMrxRJIsoHL8gG1UBfVoXKi7OxbLU
قناة تحتوي دورة متكامله لعمل مشروع كامل
@Omar_Root
واحد من اكتر الاوامرالمهمة واللي محدش يعرف عنده كتير
flutter pub deps
الأمر ده مفيد جداً ،، لما تضيف dependency جديدة للمشروع ويطلع resolve conflict
المشكلة بتكون انك انتا بتعمد علي نسخة معينة وال library الجديدة بتعتمد علي نسخة تانية وبالنسبة ل flutter المفروض يستخدم نسخة واحدة بس في المشروع
المشكلة بتبقى اكبر لو كنت مش انتا اللي بتعتمد علي ال library اصلا ،، بمعني ان library زي url_launcher ممكن تكود انتا مش مستخدمها بنفسك خالص لكنك بتستخدم حاجات تاينة بستخدمها داخلياً فهتلاقيه مطلعك خطأ انتا مش عارف تبدأ منين لأنك اصلا مش مستخدمurl_launcher ومش عارف مين اللي مستخدمها وفيين
وهنا يجي الاختراع بقى بتاع النهردة ،، الفكرة انك لازم ترجع المشروع لمرحلة ما قبل ال conflict وبعدين تكتب الامر
flutter pub deps
بعدها هيظهرلك كل الشجرة دي الي فيها بوضوح كل library بتعتمد علي ايه تاني وبعدها تقدر تاخدها كوبي ونحطها في ملف text وتعمل بحث فيها وتشوف مين الي library عامله قافله مع الجديدة اللي انتا عاوز تحطها
بعد كده لازم تحدد المشكلة ،، هل هي مشكلة تحديث ولا مشكلة انك محتاج ترجع لنسخة قديمة
1- لو كانت الجديدة اللي ان
ة مختصرة تشرح ببساطة المشكلة والحل اللى بنقدمهولكو
نخش عالمصادر اللى تخليكو تتعمقو أكتر
وتشوفو أمثلة وتطبيقات على GetX
مقالة بتشرح بتطبيق عملى عبارة عن صفحة تسجيل دخول بإستخدام
GetX and free API
https://www.appwithflutter.com/flutter-state-management-with-getx/
ودة شرح لل animation routes with GetX
https://www.appwithflutter.com/flutter-routing-using-get-package/
ودة مثال تانى بيشرح تطبيق بإستخدام firebase Auth على موقع ميديام
واللى الموقع مبيفتحش عنده
يقدر يستخدم متصفح opera ويفعل الvpn المدمج معاه
أو تشغلو مباشرة على متصفح tor
https://medium.com/@jeffmcmorris/getx-flutter-firebase-auth-example-b383c1dd1de2
تطبيق notepad بإستخدام GetX and sqlflite
https://www.appwithflutter.com/flutter-database-note-app-sqflite/
ودة source code جميل جدا جدا بيشرح كل مفاهيم GetX
من خلال تطبيق متجر لبيع الخضروات والفاكهة
https://github.com/andreciornavei/flutter-getx-concept
ولهواة الفيديوهات منقدرش ننساهم بسلسلة فيها شرح GetX
https://www.youtube.com/playlist?list=PLJftqVZ-OFLhCf6wM_fjAnqzu4ewwbK9J
وأخيرا وليس آخرا بإذن الله واحد من أفضل من شرحو GetX
وللعلم هو recommended من تيم GetX
قناة Amateur Coder
دى سلسلة بيشرح فيها المفاهيم
على تطبيقات بسيطة ولكن شرح ممتاز بصراحة وغطى جوانب كتيرة
https://www.youtube.com/watch?v=XDWT1RXwQQQ&list=PL26uY6-lIzqkmvpNr9gMCrIvl8k5Mqrhs
ودة رابط ال source code الخاص بالسلسلة دى
https://github.com/tadaspetra/getx_examples
-------------
ودى سلسلة بيشرح فيها تطبيق todo app
https://www.youtube.com/playlist?list=PL26uY6-lIzqm0CUxPt6Pj1iEQtONT-Lxv
https://www.youtube.com/watch?v=-H-T_BSgfOE&list=PL26uY6-lIzqm-P1_Hi072D9FzwltjhAGG
ودة ال source Code
https://github.com/tadaspetra/getx_examples/tree/master/todo_app
---------------
أنا عارف المنشور كبير بس الموضوع يستحق المجهود والإهتمام
ونتمنى بإذن الله الفايدة تعم على الجميع
وأى مصادر جديدة هيتم التأكد من جودتها هيتم إضافتها فى المنشور
وتقدرو ترجعو للمنشور فى المجموعة من خلال الإعلامات أو الهاشتاج
بالتوفيق للجميع
#flutterCamp_flutter_getx
ال state-management مشكلة بتقلق كتير من اللى بدئو فى فلاتر
ومش بس الناس اللى بتبدأ كمان الناس اللى إشتغلت ب solution معين
ومقتنع أن دة الأفضل
طب أيه هو الأفضل؟
الأفضل مسألة نسبية ودايما المعيار
ان إختيار الأفضل على حسب كل مهمة
وكل مشكلة معينه أنت عايز تحلها فى التطبيق اللى بتبنيه
واللى تعمق أو اللى تعامل
مع أكتر من state-management solution عارفين أن تصنيف الأفضل فى كل شىء غير موجود
لكن فى حاجة بتتميز فى جزئية معينه عن غيرها والعكس
وهكذا تسير الأمور
لكن لقب الأفضل على الإطلاق لا يمكن إطلاقه على أى شىء
حتى لغات البرمجة وإطارات العمل
ودائما سنرى التنافسية والتطوير لا يقفان عند حد معين
بدون إطالة فى المقدمة لازم كنا نقول كل دة
عشان محدش يقول إن الكاتب منحاز لحاجة على حساب غيرها
النهاردة هنتكلم عن package مهمة جدا
ومينفعش أطلق عليها مصطلح state-management solution فقط
لأن أدوارها متعددة الإستخدام وميزاتها كتير
GetX package
انا بقول علي ال pack دى انها مميزة فعلا وتستحق الإهتمام لأسباب كتير
منها على سبيل المثال وليس الحصر
أنك مش محتاج تستخدم context methods
ليها صيغة مختصرة خاصة بيها للتعامل مع routes
غير الإفتراضية الموجودة فى إطار العمل
تقدر من خلالها تعمل dynamic theme management
تقدر تتعامل مع ال localization
بتسهل عليك كتير فى التعامل مع dialog, bottom sheet, snack-bar
وبسهولة تقدر تعمل Data sharing between screens
ودايما وانت بتقرأ عنها فى المقالات الأجنبية
هتشوف وصف واحد أجمع عليه الجميع
GetX packages is extra-light, stable, fast, and powerful
وطبعا لازم نحيي jonataslaw هو وكل من ساهم فى تطوير هذه الحزمة ونشكرهم على ال documentation الرائعة اللى لو قريتها هتتعلم كل ما يلزمك للتعامل مع ال pack
pub link
https://pub.dev/packages/get
Github link
https://github.com/jonataslaw/getx
ودى بعض ال methods بإستخدام getX مقارنه بال vanilla flutter
MediaQuery
MediaQuery.of(context).width (vanilla)
Get.width (getX)
routes
Navigator.push(context,NextScreen()) (vanilla)
Get.to(NextScreen()) (getX)
dialog
showDialog(context: context,
child: AlertDialog(
title: Text("title"),
content: Text("Hello World"),
)
);
(vanilla)
Get.dialog(DialogWidget()); (getX)
كل ما عليك هتستبدل ال MaterialApp class ب GetMaterialApp
وكدة بيتوفر ليك كتير من الميزات المختصرة فى الroutes وغيرها
والنقطة دى لو أنت هتستخدم getx لحل مشكلة الstate بس
فالموضوع دة إختيارى
بالنسبة للجزء الخاص بالstate
بيتم التعامل معاه بنفس السهولة وال pack بتوفر أكتر من أسلوب
ودة عشان تضمن أن كل واحد يتعامل بالطريقة اللى تريحه
مع الحفاظ برده على أنك تكتب clean code
وتفصل ال ui عن business logic
بمجرد إنشائك لل class ويكون extended من GetxController class
كدة كل المتغيرات وال methods تقدر تأكسس عليها بسهولة من الui
ومن ضمن الميزات فى getX ودة اللى بيعبر عنه الصورة اللى تحت أنها محبوبة جدا من ال devices resources
لأن GetxController class بيكون extended من DisposableInterface
ودة معناه أن عملية ال garbage collection
من ضمن أولويات getX للحفاظ على الأداء
وعدم إستهلاك موارد الجهاز بدون داعى
غير طبعا أنها بتحتوى على ال methods
onInit() , onClose
واللى بيحلو محل
initState() , dispose() in StatefulWidget
يعنى بكل سهولة تقدر تستغنى عن StatefulWidget
طب إدارة الحالة بتتم ازاى فى ال ui
لو انت اشتغلت مع بروفايدر يبقى هتفهم GetBuilder
بكل سهولة وتقدر تعمل wrapped على أى widget
وساعتها هتقدر توصل بسهولة لأى متغير أو method من ال controller
كل اللى عليك هتحط update() method
فى أى method فى ال controller
وال widget هتقدر ت listen لأى تغييرات تحصل فى method
نفس إستخدام () notifyListeners
وفى ال ui هتعمل wrap للويدجيت ب GetBuilder
طب ولنفرض يا سيدي أنا مش عايز أشتغل بنمط ال inherited
وبميل أكتر لل reactive وجاي من حاجة زى بلوك
وبحب أشتغل بال streams
يبقى انت كدة محتاج تشتغل بأسلوبين
GetX Class أو Obx simplest syntax
وللعلم دة مش تشتيت كل ما فى الموضوع أنه تعدد في الإختيارات
وأنت بتشوف اللي تحب تشتغل بيه
GetX
الفرق بينها وبين GetBuilder أنك معاها بتتعامل
مع ال streams approach
وعشان كدة لازم أى متغير في controller
هنتعامل معاه بالنهج دة يكون بعده .obs
ودى إختصار لأنه المتغير يكون observable
وبيكون شكلها كدة فى ال ui
GetX<Controller>(builder:)
ولو انت من هواة ال simplest syntax
يبقى هتحب تستخدم Obx
وموجود تحت فى صورة الأمثلة شكلها فى الإستخدام
ولأن الموضوع يطول الكلام فيه وكل اللى شوفتوه دة
نبذ
https://www.youtube.com/watch?v=HFGsc2GY1hc
اتفضلو اخوان اتمنى تستفادون
شباب انضموا الشخص مضمون
الفيديو المسجل لمحاضرة "Build responsive applications with Google Flutter"
والي غطينا فيها آخر أخبار جوجل فلاتر الفترة الماضية وكذلك كيفية دعم اكثر من واجهة وحجم في نفس الوقت
رابط الشرائح الي تم عرضها
http://bit.ly/flutter-web-part3
رابط الكود
https://github.com/dahabit/flutter-web-session3
لاتنسوا الإشتراك في القناة :)
تحب تستخدم flutter
اون لاين بدون اي شي
خلاص استخدم هذا الموقع
https://flutlab.io/
https://www.youtube.com/watch?v=3lTLrkNBGU8
Flutter packages and widgets for creating beautiful Floating Action Button Animations ( FAB ) and Hero Animations. You can use these packages in your App to up your UI game.
