DragBox class
create_user: zhengzaihong email:1096877329@qq.com create_date: 2024/4/12 create_time: 15:58 describe: 可拖动组件 / Draggable Box Component
在父组件范围内可自由拖动的组件 Component that can be freely dragged within parent bounds
功能特性 / Features
- 🖱️ 支持鼠标/触摸拖动 / Mouse/touch drag support
- 📦 自动限制在父组件范围内 / Auto-constrained within parent
- 📍 支持设置初始位置 / Custom start position
- 🎯 拖动过程平滑流畅 / Smooth dragging experience
基础示例 / Basic Example
// 简单拖动框
DragBox(
child: Container(
width: 100,
height: 100,
color: Colors.blue,
child: Center(child: Text('拖我')),
),
)
// 设置初始位置
DragBox(
startOffset: Offset(50, 50),
child: FloatingActionButton(
onPressed: () {},
child: Icon(Icons.add),
),
)
// 悬浮按钮示例
Stack(
children: [
YourMainContent(),
DragBox(
startOffset: Offset(300, 500),
child: Container(
width: 60,
height: 60,
decoration: BoxDecoration(
color: Colors.blue,
shape: BoxShape.circle,
),
child: Icon(Icons.chat, color: Colors.white),
),
),
],
)
// 可拖动的工具栏
DragBox(
child: Card(
child: Padding(
padding: EdgeInsets.all(8),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
IconButton(icon: Icon(Icons.edit), onPressed: () {}),
IconButton(icon: Icon(Icons.delete), onPressed: () {}),
],
),
),
),
)
注意事项 / Notes
- 拖动范围自动限制在父组件内 / Auto-constrained within parent
- 需要在有明确大小的父组件中使用 / Use within parent with defined size
- 建议在 Stack 中使用以实现悬浮效果 / Recommend using in Stack for floating effect
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- StatefulWidget
- DragBox
- Available extensions
Properties
- child → Widget
-
需要拖动的子组件 / Child widget to drag
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- key → Key?
-
Controls how one widget replaces another widget in the tree.
finalinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- startOffset → Offset
-
初始位置偏移 / Initial position offset
final
Methods
-
blurred(
{double blur = 5, Color blurColor = Colors.white, BorderRadius? borderRadius, double colorOpacity = 0.5, Widget? overlay, AlignmentGeometry alignment = Alignment.center}) → Blur -
Available on Widget, provided by the BlurExtension extension
-
createElement(
) → StatefulElement -
Creates a StatefulElement to manage this widget's location in the tree.
inherited
-
createState(
) → State< DragBox> -
Creates the mutable state for this widget at a given location in the tree.
override
-
debugDescribeChildren(
) → List< DiagnosticsNode> -
Returns a list of DiagnosticsNode objects describing this node's
children.
inherited
-
debugFillProperties(
DiagnosticPropertiesBuilder properties) → void -
Add additional properties associated with the node.
inherited
-
frosted(
{double blur = 5, Color frostColor = Colors.white, AlignmentGeometry alignment = Alignment.center, double? height, double? width, double frostOpacity = 0.0, BorderRadius? borderRadius, EdgeInsetsGeometry padding = EdgeInsets.zero}) → Blur -
Available on Widget, provided by the FrostExtension extension
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toDiagnosticsNode(
{String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode -
Returns a debug representation of the object that is used by debugging
tools and by DiagnosticsNode.toStringDeep.
inherited
-
toString(
{DiagnosticLevel minLevel = DiagnosticLevel.info}) → String -
A string representation of this object.
inherited
-
toStringDeep(
{String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) → String -
Returns a string representation of this node and its descendants.
inherited
-
toStringShallow(
{String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String -
Returns a one-line detailed description of the object.
inherited
-
toStringShort(
) → String -
A short, textual description of this widget.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited