Dart לפיתוח אפליקציות Flutter - ממש על קצה המזלג
שפת Dart מזכירה JavaScript. זו השפה באמצעותה כותבים אפליקציות Flutter שניתן לפרוס בקלות על אנדרואיד, אייפון ויישומי דסקטופ. במדריך זה ריכזתי כמה דברים מאוד בסיסיים שחשוב לדעת כיצד לעשות ב-Dart לפני שמתחילים לפתח אפליקציות Flutter.
ניתן להתאמן על שימוש בשפה בלי להתקין שום דבר על המחשב. כל מה שצריך הוא לגלוש לאתר: https://dartpad.dev, ולהקליד את הפקודות במדריך.
בשפת Dart הפונקציה main() מאתחלת את ביצוע הקוד. לדוגמה:
main () {
print("Hello World!");
}
- חשוב לסיים כל שורת קוד בנקודה פסיק ;
התוצאה:
Hello World!
נתחיל שורה של הערה בשני קווים נטויים.
// main() is responsible for
// executing all the code
main () {
print("Hello World!");
}
- ללא הפונקציה main() הקוד לא יצא אל הפועל. בהתאם, את כל הקוד במדריך צריך לבצע בתוכה אלא אם צויין אחרת.
אנחנו יכולים להגדיר משתנים באמצעות מילת המפתח var:
var greeting = "Hello";
- כש-Dart יכול להסיק בעצמו את הסוג נעדיף להגדיר את המשתנה באמצעות var אבל לא תמיד זה המצב.
Dart היא שפה שאוהבת לעבוד עם סוגים types לכן אם Dart לא יכול להסיק בעצמו את סוג המשתנה כי הערך יוצב בהמשך נגדיר את סוג המשתנה כדי לעזור לקומפיילר לאתר שגיאות בקוד כמה שיותר מוקדם.
ישנם כמה סוגים בסיסיים של משתנים שחשוב להכיר ב-Dart:
מחרוזות מגדירים כ- String
String greeting;
בוליאנים הם bool:
bool isEarthPerson;
אחר כך אנחנו צריכים להציב משתנים בהתאם לסוג:
greeting = "Hello earth person";
isEarthPerson = true;
אנחנו יכולים להציב ערך בזמן ההגדרה של המשתנה ואז אין צורך לציין את הסוג:
var greeting = "Hello earth person";
var isEarthPerson = true;
נשתמש בסוג משתנה int כדי לציין מספר שלם:
int n;
n = 3;
הסוג double מציין מספר עשרוני:
double d;
d = 3.14;
אם מתקיים תנאי אז בבקשה לבצע פקודה אחת ואם לא אז פקודה אחרת:
main () {
var greeting = "Hello earth person";
var isEarthPerson = true;
if (isEarthPerson) {
print (greeting);
} else {
print ("Not earth person");
}
}
התוצאה:
Hello earth person
נשתמש בלולאת for:
main () {
int start = 1;
int end = 5;
for(int i = start ; i <= end; i++ ) {
print(i);
}
}
התוצאה:
1 2 3 4 5
רשימה יכולה להכיל אוסף של משתנים. לדוגמה, רשימה של מחרוזות ששמה cars:
List<String> cars = [];
נוסיף פריטים לרשימה באמצעות הפקודה add():
main () {
List<String> cars = [];
cars.add("Tesla");
cars.add("Audi");
cars.add("BMW");
print(cars);
}
התוצאה:
[Tesla, Audi, BMW]
להסרת פריטים נשתמש בפקודה-remove():
main () {
List<String> cars = [];
cars.add("Tesla");
cars.add("Audi");
cars.add("BMW");
cars.remove("Audi");
print(cars);
}
התוצאה:
[Tesla, BMW]
נעבור בלולאה על כל אחד מהפריטים ברשימה:
main () {
List cars = ["Tesla", "Audi", "BMW"];
for(int i=0;i<cars.length;i++){
print(cars[i]);
}
}
התוצאה:
Tesla Audi BMW
כשאנחנו מגדירים פונקציה נגדיר את סוג המשתנים שהיא מחזירה. אם פונקציה לא מחזירה דבר היא תהיה void:
main () {
void greet(){
print("Hello world!");
}
greet();
}
התוצאה:
Hello world!
אם פונקציה מחזירה מחרוזת נגדיר כ-String:
main () {
String greet(){
return "Hello Mishu";
}
print(greet());
}
התוצאה:
Hello Mishu!
אם פונקציה מקבלת פרמטרים אז חשוב להגדיר את סוג המשתנים שהיא רשאית לקבל:
main () {
String greet(String person){
return "Hello $person";
}
print(greet("Mishu"));
}
התוצאה:
Hello Mishu!
מחלקות, קלאסים, הם כלי קיבול הכורך יחדיו קוד לטיפול בנושא מסוים. לדוגמה, למכונית יכול להיות שם דגם וגג שמש אז נגדיר מחלקה בשם Car שתכיל את המשתנים name ו-sunRoof:
class Car {
String name;
bool hasSunroof;
Car(
this.name,
this.hasSunroof
);
}
- את ערכי המשתנים נעביר לקלאס בזמן שניצור ממנו אובייקט דרך הקונסטרקטור ששמו כשם הקלאס.
אנחנו יכולים לייצר קלאס שהקונסטרקטור שלו מקבל פרמטרים שיש להם שם:
class Car {
String name;
bool hasSunroof;
// Named parameters in the constructor
// The parameters have to be required or need to have a default value
Car({required this.name, this.hasSunroof = false});
}
נקים מהקלאס אובייקטים באופן הבא:
final car1 = Car(name: 'Tesla');
final car2 = Car(name: 'BMW', hasSunroof: true);
כדי להפוך תכונה לפרטית נוסיף קו תחתון לפני שמה, לדוגמה: bool _hasSunroof;:
class Car {
String name;
bool _hasSunroof;
// ...
}
כדי לקבל יותר אפשרויות בהגדרת ובשליפת הנתונים נשתמש בפונקציות setter ו-getter.
class Car {
String name;
bool _hasSunroof;
Car(
this.name,
this._hasSunroof
);
bool get hasSunroof {
return _hasSunroof;
}
set hasSunroof(bool val) {
_hasSunroof = val;
}
}
את הקלאס נקפיד להגדיר מחוץ לפונקציה main אבל ביצוע הקוד יהיה בתוך main:
main () {
var myCar1 = Car("Tesla", false);
// get the property
print(myCar1.hasSunroof);
// set the property
myCar1.hasSunroof = true;
print(myCar1.hasSunroof);
}
- את המשתנה myCar1 הגדרתי var במקום Car מפני ש- Dart יכול להבחין בעצמו שהמשתנה ניזון מפונקציה שמחזירה אובייקט מסוג מסוים. יכולתי גם לציין את סוג המשתנה Car זו לא שגיאה אבל פחות נכון מבחינה תכנותית.
התוצאה:
false true
אהבתם? לא אהבתם? דרגו!
0 הצבעות, ממוצע 0 מתוך 5 כוכבים