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
Available extensions

Constructors

DragBox({required Widget child, Offset startOffset = Offset.zero, Key? key})
const

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