Flutter로 드래그할 수 있는 요소 만들기 [Draggable & DragTarget]
_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를 참조하십시오.
이번 예시의 계수기 응용 프로그램에서 기본값은 만들어진 것이다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를 설명하고 List
↓ 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가 어떻게 작동하는지 아래는 참고입니다.
참조: DragTarget 클래스
Reference
이 문제에 관하여(Flutter로 드래그할 수 있는 요소 만들기 [Draggable & DragTarget]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/nasubibocchi/articles/a5b1b8e089c1ac텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)