Getters במחלקות שלכם
חלק מהיחידה ניהול מצב במסלול ה-Flutter של Coddy. שיעור 6 מתוך 27.
אין צורך לשמור ערכים מסוימים, כי אפשר לחשב אותם מתוך ערכים אחרים. מספר הכוסות שנותרו הוא היעד פחות מספר הכוסות ששתית עד עכשיו. גטר מחשב אותו בכל פעם שמבקשים:
class WaterLog {
int glasses = 0;
int goal = 8;
int get left => goal - glasses;
bool get done => glasses >= goal;
}לגטר יש טיפוס, המילה get ושם, בלי סוגריים. => פירושו „התוצאה היא”. קוראים אותו כמו שדה: log.left, אף פעם לא log.left().
שדה ישמור את המספר שהיה בו בזמן שהערך נקבע. גטר מחושב מחדש בכל קריאה, ולכן הוא אף פעם לא מיושן: שתו כוס, ובבנייה הבאה log.left יהיה קטן באחד.
אתגר
קלהדף מבצע את החישוב בעצמו, וכשהיעד מושג המספר יורד מתחת לאפס. העבר את הכללים אל WaterLog:
- הוסף getter בשם
left: היעד פחות מספר הכוסות. - הוסף getter בשם
done: הערך יהיהtrueברגע שמספר הכוסות מגיע ליעד. - הצג
Goal reached!כאשרlog.doneהוא true, ואחרת הצג8 to go, אחר כך7 to goוכן הלאה, לפיlog.left.
נסו בעצמכם
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class WaterLog {
int glasses = 0;
int goal = 8;
void drink() {
glasses = glasses + 1;
}
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
debugShowCheckedModeBanner: false,
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
final log = WaterLog();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Water')),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
'${log.goal - log.glasses} to go',
style: const TextStyle(fontSize: 32),
),
const SizedBox(height: 16),
ElevatedButton(
onPressed: () {
setState(() {
log.drink();
});
},
child: const Text('Drink a glass'),
),
],
),
),
);
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה ניהול מצב
2Dart עבור מודלים
מתודות במחלקות שלכםGetters במחלקות שלכםהפכו שדה לפרטיחיבור איברי רשימה באמצעות foldתרגלו בעצמכם: קומפיילר Flutter אונליין