Sınıflarınızda Getter'lar
Coddy'nin Flutter Journey'sinin Durum Yönetimi bölümünün bir parçası. Ders 6 / 27.
Bazı değerlerin saklanması gerekmez, çünkü bunlar başka değerlerden elde edilir. Kalan bardak sayısı, hedef bardak sayısından şimdiye kadar içilen bardak sayısının çıkarılmasıyla bulunur. Bir getter, her sorduğunuzda bunu hesaplar:
class WaterLog {
int glasses = 0;
int goal = 8;
int get left => goal - glasses;
bool get done => glasses >= goal;
}Bir getter'ın türü, get sözcüğü ve parantezleri olmayan bir adı vardır. =>, “sonuç şudur” anlamına gelir. Onu bir alan gibi okursunuz: log.left, asla log.left() değil.
Bir alan, değer ayarlandığı andaki sayıyı saklardı. Bir getter her okumada yeniden hesaplanır, bu yüzden hiçbir zaman güncelliğini yitirmez: bir bardak için, sonraki derlemede log.left bir azalır.
Görev
KolaySayfa hesabı kendi yapıyor ve hedefe ulaşıldığında sıfırın altına düşüyor. Kuralları WaterLog içine taşı:
- Bir
lefterişimcisi ekle: hedef eksi bardak sayısı. - Bir
doneerişimcisi ekle: bardak sayısı hedefe ulaştığındatrue. log.donedoğru olduğundaGoal reached!, değilselog.leftdeğerine göre8 to go,7 to gove devamını göster.
Kendin dene
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'),
),
],
),
),
);
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Durum Yönetimi bölümündeki tüm dersler
2Modeller için Dart
Sınıflarınızda MetotlarSınıflarınızda Getter'larBir Alanı Gizli Tutunfold ile Bir Listeyi ToplayınKendi başına pratik yap: Online Flutter derleyicisi