Flutter로 드래그할 수 있는 요소 만들기 [Draggable & DragTarget]

14488 단어 FlutterDarttech
프로젝트 제작 후 기본적으로 나타나는 계수기 응용 코드를 사용해 드래그할 수 있는 요소를 만들어 보세요.

_MyHomePageState 클래스에서 부품 편집


차리다MyHomePageState 클래스의 편집은 다음과 같습니다.
class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  //デフォルトで作られているメソッド
 //ドラッグ&ドロップしたときにカウントアップする(↓を実行する)
  void _incrementCounter() {
    setState(() {
      // ・・・
      _counter++;
    });
  }

  
  Widget build(BuildContext context) {
    //画面サイズを取得(ウィジェットの大きさを数値で設定する場合不要)
    final size = MediaQuery.of(context).size;

    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            //カウントを表示
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.display1,
            ),
            const SizedBox(height: 20.0),
            //ドラッグするもの
            Draggable(/*・・・*/),
            const SizedBox(height: 20.0),
            //ドロップする先
            DragTarget(/*・・・*/),
          ],
        ),
      ),
      // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

드래그 가능한 요소 만들기(Draggable()의 내용 추가)


Draggable에서 지정해야 할 매개 변수는 "child"와 "feedback"입니다.
child는 끌 수 있는 요소,feedback은 끌 수 있는 요소의 외관이다.
드래그하는 과정에서도 같은 아이콘 등을 표시하려면 child와feedback에서 같은 Widget을 지정하면 됩니다.
이번 예에서child:자주 볼 수 있는 파란색 더하기 버튼을 만들고feedback:드래그할 때 볼 수 있는 흰색 더하기 버튼을 만든다.

또한 Draggable 클래스는 onDrag Commpleted의 속성을 가지고 있으며 드래그 가능한 요소를 특정한 범위에 드래그할 때 발생하는 처리를 지정할 수 있습니다.반환 값이 없는 Function()을 지정합니다.
범위는 DragTarget(아래 설명)입니다.
다른 작업도 가능한 변주곡이 있으므로 다음 Properties를 참조하십시오.
https://api.flutter.dev/flutter/widgets/Draggable-class.html
이번 예시의 계수기 응용 프로그램에서 기본값은 만들어진 것이다incrementCounter()를 실행합니다.
↓ Draggable 컨텐츠의 코드
	 Draggable(
              child: Container(
                  decoration: BoxDecoration(
                    shape: BoxShape.circle,
                    color: Theme.of(context).primaryColor,
                  ),
                  child: const Icon(
                    Icons.add,
                    color: Colors.white,
                    size: 40.0,
                  )),
              feedback: Container(
                  decoration: BoxDecoration(
                      shape: BoxShape.circle,
                      color: Colors.white,
                      border: Border.all(
                        color: Theme.of(context).primaryColor,
                      )),
                  child: Icon(
                    Icons.add,
                    color: Theme.of(context).primaryColor,
                    size: 24.0,
                  )),
              onDragCompleted: () {
                _incrementCounter();
              },
            ),

드롭다운 요소 만들기(DragTarget()의 컨텐트 추가)


DragTarget에는 builder가 필요합니다.
이번 예에서는 builder의 매개 변수로서BuildContext context,Listcandidate Data를 설명하고 Listrejeted Data를 되돌려줍니다.
↓ DragTarget() 컨텐트의 코드
3
          DragTarget(builder: (context, candidateData, rejectedData) {
              return Container(
                height: size.height * 0.2,
                width: size.width * 0.5,
                color: Colors.grey.shade300,
              );
            })
Contaainer 이하는 외관 문제입니다.Widget이면 무엇이든 좋습니다.
candidate Data,rejeted Data가 어떻게 작동하는지 아래는 참고입니다.
https://medium.com/flutter-community/a-deep-dive-into-draggable-and-dragtarget-in-flutter-487919f6f1e4
참조: DragTarget 클래스
https://api.flutter.dev/flutter/widgets/DragTarget-class.html

좋은 웹페이지 즐겨찾기