Sınıflarınızda Metotlar
Coddy'nin Flutter Journey'sinin Durum Yönetimi bölümünün bir parçası. Ders 5 / 27.
Şimdiye kadar sınıflarınızda veri vardı: bir ad, bir fiyat. Bir sınıf, bu veriyi değiştiren kodu da içerebilir. Bir sınıfın içindeki işleve yöntem denir:
class Wallet {
int coins = 10;
void earn(int amount) {
coins = coins + amount;
}
}Bir alan gibi, nokta kullanarak yöntem çağırın: wallet.earn(3). Yöntemin içinde coins, çağrıldığı cüzdanın alanıdır.
Sayfa wallet.coins = wallet.coins + 3 işlemini kendisi yapabilecekken neden uğraşalım? Çünkü kurallar böylece tek bir yerde bulunur. Bir cüzdanın bakiyesi asla sıfırın altına düşmemeliyse, spend yöntemi bunu denetler ve harcama yapan her düğme bu denetimden geçer.
Ekranın yeni sayıyı göstermesi için bileşen, çağrının etrafında setState çağırmaya devam eder.
Görev
KolayŞu anda Spend 5 alanındaki paraları doğrudan alıyor ve cüzdanın bakiyesi sıfırın altına düşüyor.
- Yeterli miktar olduğunda paraları düşüren bir
void spend(int amount)yönteminiWalletsınıfına ekle. Spend 5düğmesinin,setStateiçindewallet.spend(5)çağırmasını sağla.
Kendin dene
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class Wallet {
int coins = 10;
void earn(int amount) {
coins = coins + amount;
}
}
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 wallet = Wallet();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Wallet')),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text('${wallet.coins} coins', style: const TextStyle(fontSize: 32)),
const SizedBox(height: 16),
ElevatedButton(
onPressed: () {
setState(() {
wallet.earn(3);
});
},
child: const Text('Earn 3'),
),
ElevatedButton(
onPressed: () {
setState(() {
wallet.coins = wallet.coins - 5;
});
},
child: const Text('Spend 5'),
),
],
),
),
);
}
}
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