onLocationChanged
- Flutter kursu
- İleri seviye
- Ders 39/69
- 4 dk
onLocationChanged ile sürekli konum takibini öğrenirsin.
onLocationChanged akışı
onLocationChanged, cihaz hareket ettikçe yeni konum değerleri yayan bir akıştır. Stream<LocationData> döndürür ve listen ile dinlenir. Sürekli konum takibi için getLocation yerine bu akış kullanılır.
location.onLocationChanged.listen((data) {
print(data.latitude);
});Aboneliği sonlandırma
listen metodu bir StreamSubscription döndürür. Sürekli dinlemeye gerek kalmadığında aboneliği subscription.cancel() ile sonlandırırsın. Aksi halde akış açık kalır ve bellek sızıntısı olur.
final sub = location.onLocationChanged.listen((data) {});
// ...
await sub.cancel();Uygulama Konum akışını dinle
Bir Location örneği oluştur, onLocationChanged akışını listen ile dinle ve gelen enlemi yazdır. 10 milisaniye bekle.
Başlangıç kodu
class LocationData {
final double latitude;
LocationData(this.latitude);
}
class Location {
Stream<LocationData> get onLocationChanged => Stream.value(LocationData(41.0));
}
void main() async {
// onLocationChanged akışını dinle
// enlemi yazdır
}Örnek çözüm
class LocationData {
final double latitude;
LocationData(this.latitude);
}
class Location {
Stream<LocationData> get onLocationChanged => Stream.value(LocationData(41.0));
}
void main() async {
final location = Location();
location.onLocationChanged.listen((data) {
print(data.latitude);
});
await Future.delayed(Duration(milliseconds: 10));
}Beklenen çıktı
41.0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 onLocationChanged ne zaman yeni değer yayar?
- Uygulama kapanınca
- Yalnızca butona basınca
- Cihaz konumu değiştikçe sürekli Doğru cevap
- Yalnızca bir kez, başlangıçta
Açıklama: onLocationChanged cihaz hareket ettikçe sürekli yeni konum değerleri yayar; tek seferlik veya butona basınca çalışmaz.
2 Akışı dinle
location.____.listen((data) {
print(data.latitude);
});
location.onLocationChanged.listen((data) {
print(data.latitude);
});
Açıklama: onLocationChanged bir getter'dır ve Stream döndürür; parantez gerektirmez, doğrudan .listen ile dinlenir.
3 onLocationChanged parçaları
| Kavram | Anlamı |
|---|---|
onLocationChanged |
Konum değişim akışı |
listen |
Akışı dinler |
StreamSubscription |
Abonelik nesnesi |
cancel |
Aboneliği sonlandırır |