onLongPress
- Flutter kursu
- Başlangıç
- Ders 53/99
- 4 dk
onLongPress ile uzun basma hareketini yakalamayı öğrenirsin.
onLongPress
onLongPress, parmağı widget üzerinde yaklaşık 500 milisaniye boyunca basılı tuttuğunda çağrılır. Tek dokunuştan farklı olarak belirli bir süre beklemek gerekir; bu yüzden bağlam menüleri veya "diğer seçenekler" gibi eylemler için uygundur.
GestureDetector(
onTap: () => print('Tek'),
onLongPress: () => print('Uzun basildi'),
child: Container(width: 80, height: 80),
)onLongPress süresi
GestureDetector'ın uzun basma süresini ayarlayan bir parametresi yoktur; süre sabittir. Daha ince ayar için alt seviye sınıflar gerekir, ama bu dersin konusu dışındadır. Çoğu durumda varsayılan süre yeterlidir ve ayrı bir ayar yapmazsın.
Uygulama onLongPress ile uzun basmayı yakala
uzunBasma adında bir fonksiyon yaz; çağrılınca Uzun basildi yazdırsın. main içinde uzunBasma'yı çağır ve GestureDetector'a onTap olarak boş bir fonksiyon, onLongPress olarak uzunBasma ver.
Başlangıç kodu
import 'package:flutter/material.dart';
// uzunBasma fonksiyonu "Uzun basildi" yazdirmali
// GestureDetector'a onTap ve onLongPress bagla
void main() {
// uzunBasma'yi cagir
runApp(const Uygulama());
}
class Uygulama extends StatelessWidget {
const Uygulama({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: GestureDetector(
// onTap ve onLongPress parametrelerini ekle
child: Container(
width: 100,
height: 100,
color: Colors.red,
),
),
),
),
);
}
}Örnek çözüm
import 'package:flutter/material.dart';
void uzunBasma() {
print('Uzun basildi');
}
void main() {
uzunBasma();
runApp(const Uygulama());
}
class Uygulama extends StatelessWidget {
const Uygulama({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: GestureDetector(
onTap: () {},
onLongPress: uzunBasma,
child: Container(
width: 100,
height: 100,
color: Colors.red,
),
),
),
),
);
}
}Beklenen çıktı
Uzun basildi
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 onLongPress ne zaman tetiklenir?
- Parmak bir süre basılı tutulunca Doğru cevap
- Çift dokununca
- Hemen dokununca
- Yatay sürükleyince
Açıklama: onLongPress için parmağın widget üzerinde belirli bir süre (yaklaşık 500 ms) basılı kalması gerekir.
2 onLongPress parametresini ekle
GestureDetector(
onTap: () => print('Tek'),
____: () => print('Uzun'),
child: Text('B'),
)
GestureDetector(
onTap: () => print('Tek'),
onLongPress: () => print('Uzun'),
child: Text('B'),
)
Açıklama: Uzun basma callback'i onLongPress parametresi ile verilir; onPress, onHold veya onLongPress geçerli değildir.
3 Uzun basma parçaları
| Kavram | Anlamı |
|---|---|
onLongPress |
Uzun basma callback'i |
500 ms |
Yaklaşık bekleme süresi |
onTap |
Kısa dokunuş callback'i |
child |
Hareketi yakalanan widget |