-
Notifications
You must be signed in to change notification settings - Fork 101
/
draggable_page.dart
87 lines (81 loc) · 3.06 KB
/
draggable_page.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import 'dart:ui';
import 'package:flutter/material.dart';
class DraggablePage extends StatefulWidget {
@override
State<StatefulWidget> createState() => _DraggablePageState();
}
class _DraggablePageState extends State<DraggablePage> {
var _itemKey = GlobalKey();
var _dragState = false;
@override
Widget build(BuildContext context) {
return Material(
child: Scaffold(
appBar: AppBar(title: Text('Draggable Page')),
body: _draggableWid()));
}
_draggableWid02() {
return ListView(children: <Widget>[
Icon(Icons.access_alarm, size: 100),
Icon(Icons.print, size: 100),
Icon(Icons.android, size: 100),
Draggable(
child: Icon(Icons.ac_unit, size: 150, color: Colors.blue),
feedback: Icon(Icons.ac_unit, size: 200, color: Colors.red),
affinity: Axis.horizontal,
feedbackOffset: Offset(300, 100),
),
Icon(Icons.directions_car, size: 100),
Icon(Icons.sync, size: 100),
Icon(Icons.error, size: 100),
Icon(Icons.send, size: 100),
Icon(Icons.call, size: 100)
]);
}
_draggableWid() {
return Column(children: <Widget>[
Expanded(
child: Center(
child: Draggable(
affinity: Axis.horizontal,
axis: null,
child: Image.asset('images/icon_hzw01.jpg',
width: 150.0, key: _itemKey),
feedback: Image.asset('images/icon_hzw01.jpg', width: 150.0),
childWhenDragging: Container(),
dragAnchor: DragAnchor.child,
maxSimultaneousDrags: 1,
data: 'Draggable Data A !!!',
onDragCompleted: () => print('Draggable --> onDragCompleted'),
onDragEnd: (DraggableDetails details) =>
print('Draggable --> onDragEnd --> ${details.offset}'),
onDraggableCanceled: (Velocity velocity, Offset offset) =>
print('Draggable --> onDraggableCanceled --> $offset'),
onDragStarted: () => print('Draggable --> onDragStarted')))),
Divider(height: 1.0, color: Colors.blue),
Expanded(
child: Center(
child: DragTarget<String>(builder: (BuildContext context,
List<String> candidateData, List<dynamic> rejectedData) {
print(
'DragTarget --> builder --> $candidateData --> $rejectedData -->$_dragState');
return _dragState
? Image.asset('images/icon_hzw01.jpg', width: 150.0)
: Container(
height: 150.0,
width: 150.0,
color: Colors.blue.withOpacity(0.4));
}, onAccept: (String data) {
print('DragTarget --> onAccept --> $data -->$_dragState');
setState(() {
_dragState = true;
});
// }, onLeave: (String data) {
// print('DragTarget --> onLeave --> $data');
}, onWillAccept: (String data) {
print('DragTarget --> onWillAccept --> $data');
return true;
})))
]);
}
}