Afrikaans
Akan
Albanian
Amharic
Armenian
Azerbaijani
Basque
Belarusian
Bemba
Bengali
Bihari
Bosnian
Breton
Bulgarian
Cambodian
Catalan
Cebuano
Cherokee
Chichewa
Chinese (Simplified)
Chinese (Traditional)
Corsican
Croatian
Czech
Danish
Dutch
English
Esperanto
Estonian
Ewe
Faroese
Filipino
Finnish
French
Frisian
Ga
Galician
Georgian
German
Greek
Guarani
Gujarati
Haitian Creole
Hausa
Hawaiian
Hebrew
Hindi
Hmong
Hungarian
Icelandic
Igbo
Indonesian
Interlingua
Irish
Italian
Japanese
Javanese
Kannada
Kazakh
Kinyarwanda
Kirundi
Kongo
Korean
Krio (Sierra Leone)
Kurdish
Kurdish (Soranî)
Kyrgyz
Laothian
Latin
Latvian
Lingala
Lithuanian
Lozi
Luganda
Luo
Luxembourgish
Macedonian
Malagasy
Malay
Malayalam
Maltese
Maori
Marathi
Mauritian Creole
Moldavian
Mongolian
Myanmar (Burmese)
Montenegrin
Nepali
Nigerian Pidgin
Northern Sotho
Norwegian
Norwegian (Nynorsk)
Occitan
Oriya
Oromo
Pashto
Persian
Polish
Portuguese (Brazil)
Portuguese (Portugal)
Punjabi
Quechua
Romanian
Romansh
Runyakitara
Russian
Samoan
Scots Gaelic
Serbian
Serbo-Croatian
Sesotho
Setswana
Seychellois Creole
Shona
Sindhi
Sinhalese
Slovak
Slovenian
Somali
Spanish
Spanish (Latin American)
Sundanese
Swahili
Swedish
Tajik
Tamil
Tatar
Telugu
Thai
Tigrinya
Tonga
Tshiluba
Tumbuka
Turkish
Turkmen
Twi
Uighur
Ukrainian
Urdu
Uzbek
Vietnamese
Welsh
Wolof
Xhosa
Yiddish
Yoruba
Zulu
لذلك حصلنا على الأسطر الأولى من التعليمات البرمجية التي أدت إلى هذا التطبيق الذي من الواضح أنه ليس من النوع
من التطبيق الذي سنقوم بشحنه إلى متجر التطبيقات. بعد
قبل أن نتعمق أكثر في بناء تطبيق أكثر جمالًا قليلاً ، اسمحوا لي أن ألخص باختصار ما
لقد تعلمنا حتى الآن ونعم ، إنه تكرار ولكن من المهم جدًا أن تفهمه
كيف يعمل هذا وماذا فعلنا.
لذلك لدينا ملف main.dart مع الوظيفة الرئيسية ويتم تنفيذ هذه الوظيفة الرئيسية تلقائيًا
عندما يتم إطلاق تطبيقنا ،
هذا مهم. هناك ، نسمي التطبيق run وهي وظيفة يوفرها فريق Flutter في material.dart
الحزمة التي نستوردها هنا.
يمكننا استيراد حزمة Flutter وهناك ، ملف المواد لأن لدينا الاتصال في ملف
ملف .pubspec.yaml. في وقت لاحق من الدورة ، سنضيف أيضًا حزمًا أخرى لجهات خارجية لإضافة المزيد من الميزات التي
ليس علينا أن نبني أنفسنا.
مع ذلك ، نسمي runApp و runApp هي وظيفة تقوم بكل الأحمال الثقيلة وراء الكواليس
لأخذ عنصر واجهة مستخدم أنشأناه ورسمه على الشاشة ، على وجه الدقة ، ما يفعله في النهاية هو ذلك
يستدعي طريقة الإنشاء في عنصر واجهة المستخدم لدينا لأن هذه قاعدة مهمة الآن ،
يحتاج كل عنصر واجهة مستخدم في Flutter إلى توسيع عنصر واجهة مستخدم عديم الحالة أو عنصر واجهة مستخدم ذي حالة سأتعمق فيه لاحقًا ،
لذلك يحتاج إلى تمديد إحدى فئتي عناصر واجهة المستخدم الأساسية هاتين وستجبرك كل فئة من هذه الفئات على ذلك
إضافة طريقة بناء لأنه في النهاية ، سوف يستدعي Flutter طريقة الإنشاء هذه دائمًا من أجلك ،
حتى لا تسميها ، يسميها Flutter عندما يُطلب منك رسم شيء ما على الشاشة.
يطالب runApp Flutter أو يخبر Flutter برسم شيء ما على الشاشة وبالتالي يقوم Flutter بذلك
قم بالكثير من الأشياء ولكن أيضًا استدعاء طريقة إنشاء الأداة التي تمررها إلى runApp.
تكون طريقة الإنشاء مسؤولة دائمًا عن إرجاع عنصر واجهة مستخدم جديد يجب رسمه على الشاشة
وبالتالي في وقت ما ، يجب أن ينتهي بك الأمر بإعادة إحدى الأدوات الأساسية
يأتي Flutter مع لأن هذه ستحتوي بعد ذلك على التفاصيل الدقيقة للتحكم حقًا في وحدات البكسل
لذلك اقول. بالطبع يفعلون أكثر من ذلك بقليل ولكن باختصار ، هكذا يمكنك التفكير في ذلك.
لذا تحتاج الأدوات المصغّرة إلى إرجاع عناصر واجهة المستخدم ، وبالتالي في وقت ما ، سينتهي بك الأمر بإعادة هذه العناصر
الحاجيات الأساسية وفي النهاية ، ستقوم ببناء واجهة المستخدم بالكامل باستخدام عناصر واجهة المستخدم الأساسية هذه لأن
هناك عناصر واجهة مستخدم أساسية لكل شيء قد ترغب في بنائه وستتعلم كيفية العمل
معهم وكيفية العثور على الأداة المناسبة لأي وظيفة ، ستتعلم كل ذلك طوال الدورة التدريبية.
الآن طريقة البناء تحول حجة السياق هذه. الآن منذ أن دعا Flutter للبناء من أجلك ، إنه Flutter's
وظيفة لتوفير قيمة للسياق ، لذلك لا داعي للقلق بشأن ذلك ، ما عليك سوى قبوله
هنا
بما أنك تكتب أسلوب البناء في هذا المكان هنا. السياق كما ذكرت سيكون هدفا
اكتب سياق البناء ، لذلك باستخدام مخطط سياق البناء الذي يتم توفيره أيضًا بواسطة Flutter ، والذي يحمل
بعض البيانات الوصفية حول هذه القطعة ، وموقعها في شجرة عناصر واجهة المستخدم والتطبيق العام الخاص بك إذا جاز التعبير.
هذا ما يحدث هنا. الآن في طريقة إنشاء عنصر واجهة مستخدم MyApp هنا ، لدينا تطبيق MaterialApp
التي أعود إليها والتي بدورها عبارة عن أداة ولكنها الآن أداة مقدمة من فريق Flutter.
يستخدم هذا وسيطة مسماة ، منزل وكقيمة لهذه الوسيطة المسماة ، قمت بتمرير عنصر واجهة مستخدم آخر ، وهو
عنصر واجهة المستخدم للنص والذي يتم توفيره أيضًا بواسطة حزمة Flutter ويستخدم هذا ما يسمى بالحجة الموضعية.
لذا فإن كل من text و hello عبارة عن وسيطات ، والنص هو حجة لـ MaterialApp للحجة الرئيسية ومرحبًا
حجة لأداة النص.
الآن كل من هذه الأدوات ، MaterialApp والنص ، في فئات Dart النهائية ، كل عنصر واجهة مستخدم هو مجرد Dart
الطبقة التي في النهاية لها طريقة بناء ،
هذا شيء يمكنك تذكره.
هذا ما يحدث هنا
من الجدير أيضًا الإشارة إلى أنه من خلال إضافة الأقواس بعد اسم صفك ، كما نفعل هنا هنا ،
نحن نقوم بإنشاء مثيل لتلك الفئة لذلك نحن ننشئ كائنًا ملموسًا لتلك الفئة ، هنا من MyApp
عنصر واجهة المستخدم ، نقوم بإنشاء كائن من ذلك ونقوم بتمريره إلى runApp الذي يقوم بعد ذلك بتمريره إلى Flutter
حتى نقول وهذا ما يظهر في النهاية هنا على الشاشة.
الآن مع كل ذلك ، تطرقنا فقط إلى بعض الأساسيات الأساسية للغة Dart بالطبع ،
هناك أكثر من وسيطات مسماة وطرق متغيرات وما إلى ذلك ، لكننا سنتعلم كل ذلك خطوة بخطوة
وليس مقدمًا أمام الدورة ،
بدلاً من ذلك ، دعنا نتعمق أكثر الآن ونتأكد من أننا نرى شيئًا أكثر جمالا في
شاشة.
ومع ذلك ، قبل القيام بذلك ، هناك تعليق توضيحي واحد مهم أريد إضافته إلى طريقة الإنشاء هذه
وهذا هوOverride.
الآن من الناحية الفنية ، هذا ليس مطلوبًا ،
تطبيقنا يعمل بدون ذلك.
هذا ما يسمى بالديكور وهو مصمم أيضًا ، والذي من المحتمل أنك خمنته ، يتم توفيره أيضًا
بواسطة Dart and Flutter ، لذلك يتم توفير ميزة override فعليًا بواسطة Dart ، وليس بواسطة Flutter ولكن هناك أدوات تزيين أخرى
مثل هذا الشيء المطلوب الذي أريتكم إياه سابقًا والذي سيوفره Flutter.
الآن ما الذي يفعله هذا المصمم ،
عملت بدونها؟
نعم ، يعمل بدونها ،
إنه موجود فقط لجعل الكود الخاص بنا أكثر وضوحًا وأنظف قليلاً.
هذا يوضح حقًا أننا نتجاوز عمدًا طريقة الإنشاء التي يوفرها
أداة عديمة الحالة
إنه موجود هناك ولكننا نتجاوزه من خلال تطبيقنا الخاص وقوى عنصر واجهة المستخدم عديمة الحالة بالفعل
علينا أن نتجاوزه ،
ليس لدينا خيار عدم تجاوزها ، مع ذلك ،
هذه في الأساس ممارسة شائعة وممارسة جيدة.
إذا قمت بتوفير طريقة موجودة أيضًا في الفصل الدراسي الذي تقوم بتوسيعه ، فيجب عليك إضافةOverride
لتوضيح أنك لا تقوم بطريق الخطأ بالكتابة فوق هذه الطريقة الموجودة بالفعل ولكن عن عمد
لأنه عند إضافة طريقة الإنشاء الخاصة بك هنا وكان عنصر واجهة المستخدم عديم الحالة يحتوي أيضًا على طريقة واحدة ، ثم أسلوب عديم الحالة
لن يتم النظر في عنصر واجهة المستخدم في تطبيقي ولكن سيتم النظر في إرادتك الخاصة وهذا شيء تمامًا
عليك أن تفعل هنا.
هذا ليس خطأ ، فأنت تريد أن تفعل ذلك ، فأنت تريد فقط أن تكون واضحًا أن هذا قد تم عمداً. إذن كذلك
شيء صغير ، أسلوبي ، لا يزال شيئًا سنراه طوال الدورة وبالتالي أريد ذلك
أذكر هنا. وهناك شيء آخر ستراه ،
على سبيل المثال عند إنشاء تطبيق Flutter جديد. بدلًا من أن تبدو الوظيفة الرئيسية هكذا ، أنت أيضًا
يمكنه رؤية شيء يشبه هذا ،
لديك فراغ main ، ثم لديك الأقواس الخاصة بك ، لذلك هذا هو نفسه الذي لدينا هنا ولكن بعد ذلك
بدلاً من الأقواس المتعرجة ، لديك علامة يساوي وعلامة أكبر ،
لذا فهو نوع من الأسهم
وبعد ذلك قمت بتشغيلApp MyApp.
إذن ما كان لدينا بين الأقواس المتعرجة الآن يأتي بعد هذا السهم بدون أقواس مجعدة وهذا هو
صيغة Dart صالحة أيضًا ،
إنه اختصار للوظائف التي تحتوي على تعبير واحد فقط وتعبير واحد تمامًا ، لذلك سطر واحد فقط من التعليمات البرمجية
في الوظيفة ،
ثم يمكنك حذف الأقواس المتعرجة وبدلاً من ذلك إضافة مثل هذا السهم هنا ، والذي يخبر Dart أن هذا هو
تعمل بتعبير واحد فقط
وهذا هو التعبير ،
من فضلك نفذ ،
لا يوجد شيء آخر
وسيتم أيضًا إرجاع نتيجة هذا التعبير هنا تلقائيًا.
الآن هنا ، لا يُرجع runApp أي شيء ، وبالتالي فإن وظيفتنا العامة لا تُرجع أي شيء
ولكن إذا كان runApp سيعيد قيمة ،
ثم سيتم إرجاع هذا تلقائيًا بواسطة وظيفتنا هنا أيضًا.
يمكنك استخدام ذلك لأي دالة بتعبير واحد حيث تريد بعد ذلك تنفيذ هذا التعبير.
لذلك هذا مجرد بناء جملة بديل لذلك وهو مجرد شيء أريد الخروج منه هنا
حتى يتضح ما يفعله هذا
إذا رأيت ذلك.
ولكن مع ذلك ، دعنا الآن نتأكد من أن لدينا تطبيقًا أكثر جمالًا على الشاشة.
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.