GestureDetector 위젯 💫 🌌 ✨
3209 단어 gesturedetectorwidgetflutterdart
제스처 감지기 위젯
GestureDetector
widget'ını diğer herhangi bir widget'n etrafına sararak bu alt widget'ın kullanıcıdan gelen etkileşimi dinlemesini sağlayabilirsiniz.GestureDetector'in yalnızca iki argumana ihtiyacı vardır: bir
widget
(child) ve bir harekete karşılık gelen bir callback
.질문:
GestureDetector(
onTap: () => print("tapped!"),
child: Text("Tap Me"),
);
onTap gibi iletilebilecek 30 farklı argumandan bazıları:
•
onTap
• onTapUp
• onTapDown
• onLongPress
• onDoubleTap
• onHorizontalDragStart
• onVerticalDragDown
• onPanDown
• onScaleStart
onTapUp
, globalPosition'ı
veya dokunulan ekrandaki konumu ortaya çıkaran TapUpDetails
nesnesinin bir örneğini (instance) geri iletir.Sürükleme ile ilgili olanlar gibi daha karmaşık hareketlerden bazıları, daha ilginç özelliklere sahiptir. Sürüklemenin başladığı saat, başladığı konum, bittiği konum ve sürüklemenin hızı hakkında ayrıntılı bilgi verirler. Bu, sürüklemeleri yön, hız vb. temelinde değiştirmenize olanak tanır.
body: GestureDetector(
onDoubleTap: () {
setState(() {
widget.settings.selectedTemperature =
widget.settings.selectedTemperature == TemperatureUnit.celsius
? TemperatureUnit.celsius
: TemperatureUnit.fahrenheit;
});
},
onVerticalDragUpdate: (DragUpdateDetails v)
=> _handleDragEnd(v, context),
child: ColorTransitionBox()...
GestureDetector.onVerticalDragUpdate
olarak iletilen 콜백을 제거하고, ekranda yukarı veya aşağı sürüklerken tekrar tekrar çağrılır ve DragUpdateDetails
sınıfının örneği olan bir argüman olarak sürüklebil bilak sürüklerken tekrar tekrar çağrılır veya.void _handleDragEnd(DragUpdateDetails d, BuildContext context) {
double screenHeight =
MediaQuery.of(context).size.height; //MediaQuery'ile ekran yüksekliği elde edilir.
double dragEnd = d.globalPosition.dy; //globalPosition.dy, onVerticalDragUpdate çağrıldığında işaretçinin(pointer) bulunduğu ekranın y eksenindeki konumdur.
double percentage =
(dragEnd / screenHeight) * 100.0; //Konumu 0 ile 100 arasında bir sayıya dönüştürmek için önceki iki sayıyı kullanır (ekran yüksekliğinin %100'ünü temsil eder)
int scaleToTimesOfDay =
(percentage ~/ 12).toInt(); //Günün saatini seçmek için 0 tabanlı bir listeyle çalıştığımız için bu sayıyı 0-7 ölçeğine dönüştürür ve sekiz seçenek vardır
if (scaleToTimesOfDay > 7) scaleToTimesOfDay = 7;
_handleStateChange(scaleToTimesOfDay);
}
리소스: Flutter in Action 5장 ✨
Reference
이 문제에 관하여(GestureDetector 위젯 💫 🌌 ✨), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gulsenkeskin/gesturedetector-widget-31n0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)