Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:02,140 --> 00:00:08,950
لذلك حصلنا على الأسطر الأولى من التعليمات البرمجية التي أدت إلى هذا التطبيق الذي من الواضح أنه ليس من النوع
2
00:00:08,950 --> 00:00:12,120
من التطبيق الذي سنقوم بشحنه إلى متجر التطبيقات. بعد
3
00:00:12,130 --> 00:00:19,310
قبل أن نتعمق أكثر في بناء تطبيق أكثر جمالًا قليلاً ، اسمحوا لي أن ألخص باختصار ما
4
00:00:19,310 --> 00:00:25,420
لقد تعلمنا حتى الآن ونعم ، إنه تكرار ولكن من المهم جدًا أن تفهمه
5
00:00:25,690 --> 00:00:28,130
كيف يعمل هذا وماذا فعلنا.
6
00:00:28,150 --> 00:00:34,060
لذلك لدينا ملف main.dart مع الوظيفة الرئيسية ويتم تنفيذ هذه الوظيفة الرئيسية تلقائيًا
7
00:00:34,270 --> 00:00:36,210
عندما يتم إطلاق تطبيقنا ،
8
00:00:36,280 --> 00:00:42,610
هذا مهم. هناك ، نسمي التطبيق run وهي وظيفة يوفرها فريق Flutter في material.dart
9
00:00:42,610 --> 00:00:45,140
الحزمة التي نستوردها هنا.
10
00:00:45,220 --> 00:00:51,340
يمكننا استيراد حزمة Flutter وهناك ، ملف المواد لأن لدينا الاتصال في ملف
11
00:00:51,340 --> 00:00:57,610
ملف .pubspec.yaml. في وقت لاحق من الدورة ، سنضيف أيضًا حزمًا أخرى لجهات خارجية لإضافة المزيد من الميزات التي
12
00:00:57,610 --> 00:01:00,150
ليس علينا أن نبني أنفسنا.
13
00:01:00,160 --> 00:01:06,040
مع ذلك ، نسمي runApp و runApp هي وظيفة تقوم بكل الأحمال الثقيلة وراء الكواليس
14
00:01:06,040 --> 00:01:13,450
لأخذ عنصر واجهة مستخدم أنشأناه ورسمه على الشاشة ، على وجه الدقة ، ما يفعله في النهاية هو ذلك
15
00:01:13,450 --> 00:01:18,890
يستدعي طريقة الإنشاء في عنصر واجهة المستخدم لدينا لأن هذه قاعدة مهمة الآن ،
16
00:01:19,060 --> 00:01:26,950
يحتاج كل عنصر واجهة مستخدم في Flutter إلى توسيع عنصر واجهة مستخدم عديم الحالة أو عنصر واجهة مستخدم ذي حالة سأتعمق فيه لاحقًا ،
17
00:01:27,070 --> 00:01:32,620
لذلك يحتاج إلى تمديد إحدى فئتي عناصر واجهة المستخدم الأساسية هاتين وستجبرك كل فئة من هذه الفئات على ذلك
18
00:01:32,620 --> 00:01:38,980
إضافة طريقة بناء لأنه في النهاية ، سوف يستدعي Flutter طريقة الإنشاء هذه دائمًا من أجلك ،
19
00:01:38,980 --> 00:01:44,580
حتى لا تسميها ، يسميها Flutter عندما يُطلب منك رسم شيء ما على الشاشة.
20
00:01:44,680 --> 00:01:50,290
يطالب runApp Flutter أو يخبر Flutter برسم شيء ما على الشاشة وبالتالي يقوم Flutter بذلك
21
00:01:50,500 --> 00:01:56,460
قم بالكثير من الأشياء ولكن أيضًا استدعاء طريقة إنشاء الأداة التي تمررها إلى runApp.
22
00:01:57,280 --> 00:02:04,000
تكون طريقة الإنشاء مسؤولة دائمًا عن إرجاع عنصر واجهة مستخدم جديد يجب رسمه على الشاشة
23
00:02:04,480 --> 00:02:09,610
وبالتالي في وقت ما ، يجب أن ينتهي بك الأمر بإعادة إحدى الأدوات الأساسية
24
00:02:10,090 --> 00:02:16,480
يأتي Flutter مع لأن هذه ستحتوي بعد ذلك على التفاصيل الدقيقة للتحكم حقًا في وحدات البكسل
25
00:02:16,540 --> 00:02:22,320
لذلك اقول. بالطبع يفعلون أكثر من ذلك بقليل ولكن باختصار ، هكذا يمكنك التفكير في ذلك.
26
00:02:22,450 --> 00:02:27,150
لذا تحتاج الأدوات المصغّرة إلى إرجاع عناصر واجهة المستخدم ، وبالتالي في وقت ما ، سينتهي بك الأمر بإعادة هذه العناصر
27
00:02:27,150 --> 00:02:32,860
الحاجيات الأساسية وفي النهاية ، ستقوم ببناء واجهة المستخدم بالكامل باستخدام عناصر واجهة المستخدم الأساسية هذه لأن
28
00:02:32,860 --> 00:02:38,800
هناك عناصر واجهة مستخدم أساسية لكل شيء قد ترغب في بنائه وستتعلم كيفية العمل
29
00:02:38,800 --> 00:02:45,190
معهم وكيفية العثور على الأداة المناسبة لأي وظيفة ، ستتعلم كل ذلك طوال الدورة التدريبية.
30
00:02:45,190 --> 00:02:52,600
الآن طريقة البناء تحول حجة السياق هذه. الآن منذ أن دعا Flutter للبناء من أجلك ، إنه Flutter's
31
00:02:52,600 --> 00:02:58,630
وظيفة لتوفير قيمة للسياق ، لذلك لا داعي للقلق بشأن ذلك ، ما عليك سوى قبوله
32
00:02:58,630 --> 00:02:59,110
هنا
33
00:02:59,110 --> 00:03:05,260
بما أنك تكتب أسلوب البناء في هذا المكان هنا. السياق كما ذكرت سيكون هدفا
34
00:03:05,260 --> 00:03:11,590
اكتب سياق البناء ، لذلك باستخدام مخطط سياق البناء الذي يتم توفيره أيضًا بواسطة Flutter ، والذي يحمل
35
00:03:11,590 --> 00:03:19,390
بعض البيانات الوصفية حول هذه القطعة ، وموقعها في شجرة عناصر واجهة المستخدم والتطبيق العام الخاص بك إذا جاز التعبير.
36
00:03:20,060 --> 00:03:29,410
هذا ما يحدث هنا. الآن في طريقة إنشاء عنصر واجهة مستخدم MyApp هنا ، لدينا تطبيق MaterialApp
37
00:03:29,440 --> 00:03:34,250
التي أعود إليها والتي بدورها عبارة عن أداة ولكنها الآن أداة مقدمة من فريق Flutter.
38
00:03:34,360 --> 00:03:40,600
يستخدم هذا وسيطة مسماة ، منزل وكقيمة لهذه الوسيطة المسماة ، قمت بتمرير عنصر واجهة مستخدم آخر ، وهو
39
00:03:40,600 --> 00:03:46,450
عنصر واجهة المستخدم للنص والذي يتم توفيره أيضًا بواسطة حزمة Flutter ويستخدم هذا ما يسمى بالحجة الموضعية.
40
00:03:46,720 --> 00:03:54,280
لذا فإن كل من text و hello عبارة عن وسيطات ، والنص هو حجة لـ MaterialApp للحجة الرئيسية ومرحبًا
41
00:03:54,550 --> 00:03:56,790
حجة لأداة النص.
42
00:03:56,800 --> 00:04:04,060
الآن كل من هذه الأدوات ، MaterialApp والنص ، في فئات Dart النهائية ، كل عنصر واجهة مستخدم هو مجرد Dart
43
00:04:04,060 --> 00:04:06,450
الطبقة التي في النهاية لها طريقة بناء ،
44
00:04:06,550 --> 00:04:09,110
هذا شيء يمكنك تذكره.
45
00:04:09,460 --> 00:04:10,960
هذا ما يحدث هنا
46
00:04:10,960 --> 00:04:16,060
من الجدير أيضًا الإشارة إلى أنه من خلال إضافة الأقواس بعد اسم صفك ، كما نفعل هنا هنا ،
47
00:04:16,269 --> 00:04:22,089
نحن نقوم بإنشاء مثيل لتلك الفئة لذلك نحن ننشئ كائنًا ملموسًا لتلك الفئة ، هنا من MyApp
48
00:04:22,089 --> 00:04:28,360
عنصر واجهة المستخدم ، نقوم بإنشاء كائن من ذلك ونقوم بتمريره إلى runApp الذي يقوم بعد ذلك بتمريره إلى Flutter
49
00:04:28,480 --> 00:04:33,490
حتى نقول وهذا ما يظهر في النهاية هنا على الشاشة.
50
00:04:33,490 --> 00:04:39,280
الآن مع كل ذلك ، تطرقنا فقط إلى بعض الأساسيات الأساسية للغة Dart بالطبع ،
51
00:04:39,280 --> 00:04:45,520
هناك أكثر من وسيطات مسماة وطرق متغيرات وما إلى ذلك ، لكننا سنتعلم كل ذلك خطوة بخطوة
52
00:04:45,520 --> 00:04:48,640
وليس مقدمًا أمام الدورة ،
53
00:04:48,670 --> 00:04:53,460
بدلاً من ذلك ، دعنا نتعمق أكثر الآن ونتأكد من أننا نرى شيئًا أكثر جمالا في
54
00:04:53,460 --> 00:04:53,820
شاشة.
55
00:04:54,120 --> 00:05:00,820
ومع ذلك ، قبل القيام بذلك ، هناك تعليق توضيحي واحد مهم أريد إضافته إلى طريقة الإنشاء هذه
56
00:05:01,230 --> 00:05:03,510
وهذا هوOverride.
57
00:05:03,730 --> 00:05:06,130
الآن من الناحية الفنية ، هذا ليس مطلوبًا ،
58
00:05:06,130 --> 00:05:08,500
تطبيقنا يعمل بدون ذلك.
59
00:05:08,620 --> 00:05:14,950
هذا ما يسمى بالديكور وهو مصمم أيضًا ، والذي من المحتمل أنك خمنته ، يتم توفيره أيضًا
60
00:05:15,250 --> 00:05:21,760
بواسطة Dart and Flutter ، لذلك يتم توفير ميزة override فعليًا بواسطة Dart ، وليس بواسطة Flutter ولكن هناك أدوات تزيين أخرى
61
00:05:21,760 --> 00:05:26,580
مثل هذا الشيء المطلوب الذي أريتكم إياه سابقًا والذي سيوفره Flutter.
62
00:05:26,590 --> 00:05:28,630
الآن ما الذي يفعله هذا المصمم ،
63
00:05:28,630 --> 00:05:30,170
عملت بدونها؟
64
00:05:30,190 --> 00:05:31,390
نعم ، يعمل بدونها ،
65
00:05:31,420 --> 00:05:38,500
إنه موجود فقط لجعل الكود الخاص بنا أكثر وضوحًا وأنظف قليلاً.
66
00:05:38,530 --> 00:05:44,620
هذا يوضح حقًا أننا نتجاوز عمدًا طريقة الإنشاء التي يوفرها
67
00:05:44,620 --> 00:05:45,420
أداة عديمة الحالة
68
00:05:45,430 --> 00:05:51,310
إنه موجود هناك ولكننا نتجاوزه من خلال تطبيقنا الخاص وقوى عنصر واجهة المستخدم عديمة الحالة بالفعل
69
00:05:51,310 --> 00:05:52,530
علينا أن نتجاوزه ،
70
00:05:52,540 --> 00:05:55,710
ليس لدينا خيار عدم تجاوزها ، مع ذلك ،
71
00:05:55,990 --> 00:05:59,770
هذه في الأساس ممارسة شائعة وممارسة جيدة.
72
00:05:59,770 --> 00:06:06,100
إذا قمت بتوفير طريقة موجودة أيضًا في الفصل الدراسي الذي تقوم بتوسيعه ، فيجب عليك إضافةOverride
73
00:06:06,100 --> 00:06:12,010
لتوضيح أنك لا تقوم بطريق الخطأ بالكتابة فوق هذه الطريقة الموجودة بالفعل ولكن عن عمد
74
00:06:12,340 --> 00:06:17,900
لأنه عند إضافة طريقة الإنشاء الخاصة بك هنا وكان عنصر واجهة المستخدم عديم الحالة يحتوي أيضًا على طريقة واحدة ، ثم أسلوب عديم الحالة
75
00:06:17,900 --> 00:06:22,960
لن يتم النظر في عنصر واجهة المستخدم في تطبيقي ولكن سيتم النظر في إرادتك الخاصة وهذا شيء تمامًا
76
00:06:22,960 --> 00:06:23,800
عليك أن تفعل هنا.
77
00:06:23,800 --> 00:06:29,110
هذا ليس خطأ ، فأنت تريد أن تفعل ذلك ، فأنت تريد فقط أن تكون واضحًا أن هذا قد تم عمداً. إذن كذلك
78
00:06:29,110 --> 00:06:33,880
شيء صغير ، أسلوبي ، لا يزال شيئًا سنراه طوال الدورة وبالتالي أريد ذلك
79
00:06:33,880 --> 00:06:36,660
أذكر هنا. وهناك شيء آخر ستراه ،
80
00:06:36,660 --> 00:06:42,940
على سبيل المثال عند إنشاء تطبيق Flutter جديد. بدلًا من أن تبدو الوظيفة الرئيسية هكذا ، أنت أيضًا
81
00:06:43,360 --> 00:06:46,810
يمكنه رؤية شيء يشبه هذا ،
82
00:06:46,810 --> 00:06:52,420
لديك فراغ main ، ثم لديك الأقواس الخاصة بك ، لذلك هذا هو نفسه الذي لدينا هنا ولكن بعد ذلك
83
00:06:52,420 --> 00:06:56,100
بدلاً من الأقواس المتعرجة ، لديك علامة يساوي وعلامة أكبر ،
84
00:06:56,260 --> 00:06:58,870
لذا فهو نوع من الأسهم
85
00:06:58,990 --> 00:07:01,570
وبعد ذلك قمت بتشغيلApp MyApp.
86
00:07:02,200 --> 00:07:08,800
إذن ما كان لدينا بين الأقواس المتعرجة الآن يأتي بعد هذا السهم بدون أقواس مجعدة وهذا هو
87
00:07:08,800 --> 00:07:10,750
صيغة Dart صالحة أيضًا ،
88
00:07:10,840 --> 00:07:18,430
إنه اختصار للوظائف التي تحتوي على تعبير واحد فقط وتعبير واحد تمامًا ، لذلك سطر واحد فقط من التعليمات البرمجية
89
00:07:18,430 --> 00:07:19,390
في الوظيفة ،
90
00:07:19,390 --> 00:07:25,450
ثم يمكنك حذف الأقواس المتعرجة وبدلاً من ذلك إضافة مثل هذا السهم هنا ، والذي يخبر Dart أن هذا هو
91
00:07:25,450 --> 00:07:27,420
تعمل بتعبير واحد فقط
92
00:07:27,460 --> 00:07:29,230
وهذا هو التعبير ،
93
00:07:29,230 --> 00:07:30,020
من فضلك نفذ ،
94
00:07:30,020 --> 00:07:31,250
لا يوجد شيء آخر
95
00:07:31,330 --> 00:07:37,540
وسيتم أيضًا إرجاع نتيجة هذا التعبير هنا تلقائيًا.
96
00:07:37,560 --> 00:07:42,640
الآن هنا ، لا يُرجع runApp أي شيء ، وبالتالي فإن وظيفتنا العامة لا تُرجع أي شيء
97
00:07:42,910 --> 00:07:45,960
ولكن إذا كان runApp سيعيد قيمة ،
98
00:07:46,060 --> 00:07:49,750
ثم سيتم إرجاع هذا تلقائيًا بواسطة وظيفتنا هنا أيضًا.
99
00:07:49,840 --> 00:07:54,910
يمكنك استخدام ذلك لأي دالة بتعبير واحد حيث تريد بعد ذلك تنفيذ هذا التعبير.
100
00:07:55,330 --> 00:08:00,610
لذلك هذا مجرد بناء جملة بديل لذلك وهو مجرد شيء أريد الخروج منه هنا
101
00:08:00,760 --> 00:08:03,040
حتى يتضح ما يفعله هذا
102
00:08:03,040 --> 00:08:03,910
إذا رأيت ذلك.
103
00:08:04,090 --> 00:08:08,440
ولكن مع ذلك ، دعنا الآن نتأكد من أن لدينا تطبيقًا أكثر جمالًا على الشاشة.
15620
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.