Özet - Konum
- Flutter kursu
- İleri seviye
- Ders 40/69
- 4 dk
getLocation ve onLocationChanged'ı birleştirerek harita yaparsın.
Harita uygulaması
Bir harita uygulaması getLocation ve onLocationChanged'ı birleştirir. Açılışta getLocation ile ilk konum alınır ve harita oraya ortalanır. Sonra onLocationChanged akışı dinlenerek cihaz hareket ettikçe harita güncellenir.
final initial = await location.getLocation();
print(initial.latitude);
location.onLocationChanged.listen((data) {
print(data.latitude);
});Uygulama Harita akışı yaz
Bir Location örneği oluştur. Önce getLocation ile ilk konumu bekle ve enlemi yazdır. Sonra onLocationChanged akışını dinle ve gelen enlemi yazdır. 10 milisaniye bekle.
Başlangıç kodu
class LocationData {
final double latitude;
LocationData(this.latitude);
}
class Location {
Future<LocationData> getLocation() async => LocationData(41.0);
Stream<LocationData> get onLocationChanged => Stream.value(LocationData(41.5));
}
void main() async {
// ilk konumu al, yazdır
// onLocationChanged dinle, yazdır
}Örnek çözüm
class LocationData {
final double latitude;
LocationData(this.latitude);
}
class Location {
Future<LocationData> getLocation() async => LocationData(41.0);
Stream<LocationData> get onLocationChanged => Stream.value(LocationData(41.5));
}
void main() async {
final location = Location();
final initial = await location.getLocation();
print(initial.latitude);
location.onLocationChanged.listen((data) {
print(data.latitude);
});
await Future.delayed(Duration(milliseconds: 10));
}Beklenen çıktı
41.0 41.5
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Harita uygulamasında getLocation ve onLocationChanged birlikte nasıl kullanılır?
- onLocationChanged getLocation'ın yerini tutar
- İkisi aynı anda çağrılamaz
- Yalnızca getLocation kullanılır, akış yok sayılır
- getLocation ilk konumu verir, onLocationChanged hareketi izler Doğru cevap
Açıklama: getLocation ilk konumu tek seferlik alır, onLocationChanged ise cihaz hareket ettikçe sürekli güncel konum yayar; ikisi birlikte kullanılır.
2 İlk konumu al
final initial = await location.____;
final initial = await location.getLocation();
Açıklama: İlk konumu tek seferlik almak için getLocation metodu çağrılır; onLocationChanged sürekli akış için kullanılır.
3 Harita parçaları
| Kavram | Anlamı |
|---|---|
getLocation |
İlk konum |
onLocationChanged |
Sürekli takip |
LocationData |
Konum verisi |
listen |
Akışı dinler |