Flutter의 클릭, 드래그 및 기타 제스처

2827 단어 Flutter
안드로이드에서 set Onclick Listener를 호출해서 Onclick을 단추 등view에 연결할 수 있습니다.Flutter에서 터치 모니터를 추가하는 방법에는 다음 두 가지가 있습니다.
  • Widget에서 이벤트 수신을 지원하는 경우 함수를 전달하여 처리할 수 있습니다.예를 들어, RaisedButton에는 onPressed 매개변수
  • 가 있습니다.
    @override
    Widget build(BuildContext context) {
      return new RaisedButton(
          onPressed: () {
            print("click");
          },
          child: new Text("Button"));
    }
    

    2. Widget에서 이벤트 감청을 지원하지 않으면 이 Widget을 GestureDetector에 포장하고 처리 함수를 onTap 매개 변수에 전달할 수 있습니다
    class SampleApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return new Scaffold(
            body: new Center(
          child: new GestureDetector(
            child: new FlutterLogo(
              size: 200.0,
            ),
            onTap: () {
              print("tap");
            },
          ),
        ));
      }
    }
    

    손짓
    제스처는 여러 개의 단독 포인터 이벤트(또는 여러 개의 단독 포인터일 수도 있음)에서 식별할 수 있는 의미 동작(예를 들어 가볍게 두드리기, 드래그, 축소)을 나타낸다.전체 제스처는 제스처의 생명주기에 대응하는 여러 이벤트를 분배할 수 있다(예를 들어 드래그 시작, 드래그 업데이트 및 드래그 끝).
  • Tap
  • onTapDown 포인터가 이미 특정 위치에서 화면과 접촉
  • onTapUp 포인터가 특정 위치에서 화면과 접촉하지 않음
  • onTap tap 이벤트 트리거
  • onTapCancel 이전 포인터가 터치한 onTapDown은tap 이벤트를 터치하지 않습니다
  • 더블 클릭
  • onDoubleTap 사용자가 같은 위치에서 두 번 연속 화면을 가볍게 두드리기
  • onLongPress를 길게 누릅니다.
  • onLongPress 포인터가 같은 위치에서 장시간 화면과 접촉
  • onVertical DragStart 수직 드래그
  • onVertical DragStart 포인터가 화면과 접촉하여 수직으로 이동하기 시작할 수 있음
  • onVerticalDragUpdate 포인터가 화면과 접촉하여 수직 방향으로 이동
  • onVertical DragEnd가 이전에 화면과 접촉하고 수직으로 이동한 바늘은 화면과 접촉하지 않으며 접촉을 정지할 때 특정 속도로 이동
  • 수평 드래그
  • onHorizontal DragStart 포인터가 화면에 닿았고 수평으로 이동할 수 있음
  • onHorizontalDragUpdate 포인터가 화면과 접촉하여 수평 방향으로 이동
  • onHorizontal DragEnd가 이전에 화면과 접촉하고 수평으로 이동한 바늘은 화면과 접촉하지 않으며 접촉을 정지할 때 특정 속도로 이동

  • widget 레이어에서 제스처를 수신하려면 GestureDetector를 사용하십시오.
    빈 리셋에 대응하는 제스처를 식별해 보십시오.
    If this widget has a child, it defers to that child for its sizing behavior. If it does not have a child, it grows to fit the parent instead.이widget에child가 있다면, 크기에 따라 이 child를 늦출 것입니다.만약 그것이 child가 없다면,parent에 적응하기 위해 자랄 것이다.기본적으로 보이지 않는 하위 항목이 있는 GestureDetector는 터치를 무시합니다.이런 행위는 통제될 수 있는 행위다.GestureDetector는 액세스 가능한 이벤트를 수신하여 콜백 함수에 매핑합니다.액세스 가능성 이벤트를 무시하려면 excludeFromSemantics를true로 설정합니다.이 예는 설정을 통해lights 필드에서 직사각형 응답을 클릭합니다:
      new GestureDetector(
        onTap: () {
          setState(() {
            lights = true;
          });
        },
        child: new Container(
          color: Colors.yellow,
          child: new Text('TURN LIGHTS ON'),
        ),
      );
    

    Material Components를 사용한다면, 대부분의widget은tap이나 제스처에 응답했습니다.예를 들어 IconButton과 FlatButton은 presses (taps) 에 응답하고, ListView는 슬라이딩 이벤트에 응답하여 스크롤을 터치합니다.이widget을 사용하지 않지만, 눌렀을 때 '잉크 튀김' 효과가 나타나려면 InkWell을 사용하십시오.

    좋은 웹페이지 즐겨찾기