Flutter教學(xué)目錄持續(xù)更新中
Github源代碼持續(xù)更新中
1.LongPressDraggable介紹
長(zhǎng)按拖拽組件严里,跟Draggable幾乎一樣新啼,但是需要長(zhǎng)按才能拖拽
2.LongPressDraggable屬性
- child:子組件,未進(jìn)行拖拽時(shí)顯示
- feedback:跟隨拖拽的組件
- data:用于對(duì)DragTarget傳遞data
- axis:Axis 拖拽方向田炭,可以設(shè)置只能橫向或者縱向拖拽
- childWhenDragging:拖拽時(shí)child子組件顯示樣式
- feedbackOffset = Offset.zero:
- dragAnchor = DragAnchor.child:拖拽的錨地位置
- ignoringFeedbackSemantics = true:當(dāng)子child和feedback為同一個(gè)Widget時(shí)师抄,可以設(shè)為false配合GlobalKey確保是同一個(gè)Widget 減少繪制
- affinity:此部件與其它手勢(shì)的競(jìng)爭(zhēng)方式 在非affinity方向上不響應(yīng)拖動(dòng)事件,一般用于在滾動(dòng)組件
- maxSimultaneousDrags:同時(shí)支持拖動(dòng)多少個(gè)點(diǎn)
- onDragStarted:拖動(dòng)開(kāi)始時(shí)調(diào)用
- onDraggableCanceled:在沒(méi)有被DragTarget接受的情況下松開(kāi)draggable時(shí)調(diào)用
- onDragEnd:拖動(dòng)結(jié)束時(shí)調(diào)用
- onDragCompleted:Draggable被刪除并被DragTarget接受時(shí)調(diào)用
3.使用
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('LongPressDraggable'),
),
body: Center(
child: LongPressDraggable(
child: Container(
width: 100,
height: 100,
color: Colors.blue,
),
feedback: Container(
color: Colors.red,
width: 100,
height: 100,
),
childWhenDragging: Container(
color: Colors.amber,
width: 100,
height: 100,
),
feedbackOffset: Offset(0, 10),
dragAnchor: DragAnchor.child,
onDragStarted: () {
print("onDragStarted");
},
onDragEnd: (DraggableDetails details) {
print("onDragEnd : $details");
},
onDraggableCanceled: (Velocity velocity, Offset offset) {
print('onDraggableCanceled velocity:$velocity,offset:$offset');
},
onDragCompleted: () {
print('onDragCompleted');
},
),
),
);
}