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; |
| טיפוס שיכול להיות null | String? name; |
| גישה בטוחה ל-null | user?.name |
| Null-coalescing | name ?? "default" |
| השמת Null-coalescing | name ??= "default"; |
| הצהרה שהערך אינו null | name! |
| אתחול מאוחר | 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 מרכזיים עם תחביר ליטרלי.
| פעולה | תחביר |
|---|---|
| ליטרל של List | var nums = [1, 2, 3]; |
| הוספה לרשימה | nums.add(4); |
| גישה / אורך | nums[0], nums.length |
| Map / where | nums.map((n) => n * 2), nums.where((n) => n > 1) |
| ליטרל של Map | var ages = {"Ada": 30}; |
| גישה ל-Map | ages["Ada"] |
| ליטרל של Set | var ids = {1, 2, 3}; |
| אופרטור spread | var all = [...a, ...b]; |
| if / for בתוך collection | [if (show) 1, for (n in xs) n] |
בקרת זרימה
תנאים נכתבים בסוגריים; switch תומך ב-patterns.
| פעולה | תחביר |
|---|---|
| If / else | if (x > 0) { ... } else { ... } |
| טרינרי | var r = x > 0 ? "pos" : "neg"; |
| Switch | switch (n) { case 1: ...; default: ... } |
| לולאת for | for (var i = 0; i < 10; i++) { ... } |
| לולאת for-in | for (var item in items) { ... } |
| forEach | items.forEach((x) => print(x)); |
| לולאת while | while (x < 100) { ... } |
| Do-while | do { ... } while (x < 100); |
| Break / continue | break;, 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) |
| Typedef | typedef 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() { ... } |
| Getter | int get area => w * h; |
| ירושה | class Circle extends Shape { ... } |
| קריאה ל-super | super(args) |
| מחלקה אבסטרקטית | abstract class Shape { ... } |
| מימוש ממשק | class Dog implements Animal { ... } |
Async (Future / async-await)
Futures מייצגים ערכים שיהיו זמינים בהמשך; await עוצר עד שהם מסתיימים.
| פעולה | תחביר |
|---|---|
| פונקציה אסינכרונית | Future<int> load() async { ... } |
| המתנה ל-future | var data = await load(); |
| החזרת ערך | return 42; בתוך פונקציה אסינכרונית |
| השהיה | await Future.delayed(Duration(seconds: 1)); |
| טיפול בשגיאות | try { await load(); } catch (e) { ... } |
| שרשור עם then | load().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?
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), כך שאפשר להשתמש בחלקים העליונים כבר מהיום הראשון ולהתקדם לשאר בהמשך.