getter pada class-mu
Termasuk bagian Pengelolaan State dalam perjalanan Flutter di Coddy. Pelajaran 6 dari 27.
Beberapa nilai tidak perlu disimpan karena nilainya berasal dari nilai lain. Jumlah gelas yang tersisa adalah target dikurangi jumlah gelas yang sudah diminum. Getter menghitungnya setiap kali kamu memintanya:
class WaterLog {
int glasses = 0;
int goal = 8;
int get left => goal - glasses;
bool get done => glasses >= goal;
}Getter memiliki tipe, kata get, dan nama, tanpa tanda kurung. => berarti "hasilnya adalah". Kamu membacanya seperti field: log.left, bukan log.left().
Field akan menyimpan angka sejak angka itu ditetapkan. Getter dihitung ulang setiap kali dibaca, jadi nilainya tidak pernah kedaluwarsa: minum satu gelas dan log.left berkurang satu pada build berikutnya.
Tantangan
MudahHalaman ini menghitung sendiri, dan setelah target tercapai, jumlahnya menjadi kurang dari nol. Pindahkan aturan ke WaterLog:
- Tambahkan getter
left: target dikurangi jumlah gelas. - Tambahkan getter
done: bernilaitruesetelah jumlah gelas mencapai target. - Tampilkan
Goal reached!saatlog.donebernilai benar, dan jika tidak, tampilkan8 to go,7 to go, dan seterusnya berdasarkanlog.left.
Coba sendiri
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'),
),
],
),
),
);
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pengelolaan State
2Dart untuk Model
method pada class-mugetter pada class-muJaga field tetap privatJumlahkan list dengan foldLatihan sendiri: Compiler Flutter online