Menu
Coddy logo textTech

Dart Cheat Sheet: דף עזר מהיר

עודכן לאחרונה

Hello World ומבנה התוכנית

כל תוכנית Dart מתחילה בפונקציית main שברמה העליונה.

פעולהתחביר
נקודת כניסהvoid main() { ... }
הדפסת שורהprint("Hello, World!");
שילוב משתנה במחרוזתprint("Hi $name");
ביטוי בתוך מחרוזתprint("Sum: ${a + b}");
הערה// this is a comment
הערה מרובת שורות/* ... */
ייבוא ספרייהimport 'dart:math';
הרצת קובץdart run main.dart

משתנים וטיפוסים

Dart היא שפה עם טיפוסים סטטיים, אבל יודעת להסיק טיפוסים עם var.

פעולהתחביר
משתנה עם הסקת טיפוסvar age = 30;
טיפוס מפורשint age = 30;
קבוע בזמן קומפילציהconst pi = 3.14;
קבוע בזמן ריצהfinal name = getName();
טיפוסים בסיסייםint, double, String, bool
טיפוס דינמיdynamic x = 5;
המרת טיפוסיםint.parse("42"), n.toString()
בדיקת טיפוסx is String, x as String

Null safety

טיפוסים אינם יכולים להיות null כברירת מחדל; הוסיפו ? כדי לאפשר null.

פעולהתחביר
לא יכול להיות null (ברירת מחדל)int count = 0;
טיפוס שיכול להיות nullString? name;
גישה בטוחה ל-nulluser?.name
Null-coalescingname ?? "default"
השמת Null-coalescingname ??= "default";
הצהרה שהערך אינו nullname!
אתחול מאוחרlate String value;
Spread בטוח ל-null[...?maybeList]

מחרוזות

מחרוזות תומכות במירכאות בודדות, כפולות ומשולשות.

פעולהתחביר
אורךs.length
אותיות גדולות / קטנותs.toUpperCase(), s.toLowerCase()
שילוב משתנה במחרוזת"Total: $price"
שרשור"foo" + "bar"
מכילs.contains("ell")
מתחיל / מסתיים בs.startsWith("he")
פיצול"a,b,c".split(",")
החלפהs.replaceAll("a", "b")
תת-מחרוזתs.substring(0, 3)
הסרת רווחיםs.trim()

Collections (List, Map, Set)

שלושה סוגי collections מרכזיים עם תחביר ליטרלי.

פעולהתחביר
ליטרל של Listvar nums = [1, 2, 3];
הוספה לרשימהnums.add(4);
גישה / אורךnums[0], nums.length
Map / wherenums.map((n) => n * 2), nums.where((n) => n > 1)
ליטרל של Mapvar ages = {"Ada": 30};
גישה ל-Mapages["Ada"]
ליטרל של Setvar ids = {1, 2, 3};
אופרטור spreadvar all = [...a, ...b];
if / for בתוך collection[if (show) 1, for (n in xs) n]

בקרת זרימה

תנאים נכתבים בסוגריים; switch תומך ב-patterns.

פעולהתחביר
If / elseif (x > 0) { ... } else { ... }
טרינריvar r = x > 0 ? "pos" : "neg";
Switchswitch (n) { case 1: ...; default: ... }
לולאת forfor (var i = 0; i < 10; i++) { ... }
לולאת for-infor (var item in items) { ... }
forEachitems.forEach((x) => print(x));
לולאת whilewhile (x < 100) { ... }
Do-whiledo { ... } while (x < 100);
Break / continuebreak;, continue;

פונקציות

פונקציות הן אזרחיות מדרגה ראשונה; תחביר החץ מקצר ביטויים בודדים.

פעולהתחביר
הגדרת פונקציהint add(int a, int b) { return a + b; }
פונקציית חץint square(int x) => x * x;
פרמטר מיקומי אופציונליvoid log(String m, [int? code]) { ... }
פרמטרים בשםvoid box({int w = 0, int h = 0}) { ... }
פרמטר בשם חובהvoid box({required int w}) { ... }
פונקציה אנונימיתvar f = (x) => x * 2;
העברה כארגומנטnums.map((n) => n * 2)
Typedeftypedef IntOp = int Function(int);

מחלקות ובנאים

מחלקות מחזיקות מצב והתנהגות; לבנאים יש כמה צורות.

פעולהתחביר
הגדרת מחלקהclass Point { int x; int y; }
בנאיPoint(this.x, this.y);
בנאי בשםPoint.origin() : x = 0, y = 0;
יצירת מופעvar p = Point(1, 2);
מתודהdouble dist() { ... }
Getterint get area => w * h;
ירושהclass Circle extends Shape { ... }
קריאה ל-supersuper(args)
מחלקה אבסטרקטיתabstract class Shape { ... }
מימוש ממשקclass Dog implements Animal { ... }

Async (Future / async-await)

Futures מייצגים ערכים שיהיו זמינים בהמשך; await עוצר עד שהם מסתיימים.

פעולהתחביר
פונקציה אסינכרוניתFuture<int> load() async { ... }
המתנה ל-futurevar data = await load();
החזרת ערךreturn 42; בתוך פונקציה אסינכרונית
השהיהawait Future.delayed(Duration(seconds: 1));
טיפול בשגיאותtry { await load(); } catch (e) { ... }
שרשור עם thenload().then((v) => print(v));
הרצה במקבילawait Future.wait([a(), b()]);
Stream אסינכרוניawait for (var x in stream) { ... }

התחביר של Dart שהכי שימושי, בעמוד אחד. ה-Dart cheat sheet הזה הוא דף עזר מהיר לליבת השפה: משתנים וטיפוסים, null safety, מחרוזות, collections, בקרת זרימה, פונקציות, מחלקות, וה-futures וה-async/await שבעזרתם כותבים את האפליקציות שמאחורי Flutter.

כל מה שכאן הוא Dart סטנדרטי ורץ על ה-SDK הרשמי. העתיקו את מה שצריך, או נסו כל קטע קוד בזמן אמת בעורך האונליין של Dart, בלי צורך בהתקנה.

שאלות נפוצות על ה-Dart cheat sheet

האם ה-Dart cheat sheet הזה בחינם?
כן. ה-Dart cheat sheet הזה חינמי לגמרי, בלי צורך בהרשמה. שמרו אותו במועדפים וחזרו אליו בכל פעם שצריך לבדוק אופרטור של null safety, מתודה של collection או דפוס async.
איך null safety עובד ב-Dart?
ב-Dart כל טיפוס אינו יכול להיות null כברירת מחדל: int count לעולם לא יחזיק null. כדי לאפשר null מוסיפים ? (String? name), ואז הקומפיילר מחייב אתכם לטפל במקרה של null. כלי עזר הופכים את זה לתמציתי: ?. לגישה בטוחה ל-null, ?? לערך חלופי, ו-! כדי להצהיר שערך אינו null כשאתם בטוחים בכך. כך שגיאות null נתפסות בזמן קומפילציה ולא בזמן ריצה.
מה זה Future ואיך async ו-await עובדים?
Future מייצג ערך שיהיה זמין בהמשך, למשל תוצאה של קריאת רשת. סימון פונקציה כ-async מאפשר להשתמש ב-await, שעוצר את הריצה עד שה-future מסתיים ואז מחזיר את הערך. כך כותבים קוד אסינכרוני שנקרא מלמעלה למטה כמו קוד סינכרוני. עטפו את ה-awaits ב-try/catch כדי לטפל בשגיאות.
אפשר לתרגל Dart אונליין?
כן. פתחו את עורך האונליין של Dart כדי להריץ כל קטע קוד מדף העזר הזה בדפדפן, בלי להתקין SDK. כשתרצו מסגרת מסודרת, קורס Dart האינטראקטיבי והחינמי של Coddy לוקח אתכם צעד אחר צעד מ-null safety ו-collections ועד מחלקות ו-async/await.
האם דף העזר הזה מתאים למתחילים?
כן. הוא מסודר מהנושאים הנפוצים ביותר (משתנים, null safety, בקרת זרימה) ועד המתקדמים (מחלקות, futures, async/await), כך שאפשר להשתמש בחלקים העליונים כבר מהיום הראשון ולהתקדם לשאר בהמשך.
איור של שפות התכנות ב-Coddy

ללמוד Dart עם Coddy

להתחיל