dnd_kit_core 0.1.0-dev.0
dnd_kit_core: ^0.1.0-dev.0 copied to clipboard
Pure Dart core primitives and algorithms for dnd_kit.
dnd_kit_core #
dnd_kit_core contains the pure Dart foundation for dnd_kit.
Use this package when you need drag-and-drop primitives, geometry, collision detection, modifiers, registry contracts, or sensor contracts without depending on Flutter.
Import #
import 'package:dnd_kit_core/dnd_kit_core.dart';
What It Provides #
DndIdfor stable application-owned identifiers.DndPoint,DndSize,DndRect, andDndTransformfor toolkit geometry.DndState,DndDragSession, and drag events for lifecycle modeling.DndCollisionDetectorplus built-in detectors such asDndCollisionDetectors.closestCenter,DndCollisionDetectors.closestCorners,DndCollisionDetectors.rectIntersection, andDndCollisionDetectors.pointerWithin.DndModifierplus built-in modifiers such asDndModifiers.restrictToVerticalAxis,DndModifiers.restrictToHorizontalAxis,DndModifiers.restrictToBoundary, andDndModifiers.snapToGrid.DndRegistryand diagnostics hooks for draggable and droppable metadata.
Example #
final activeRect = const DndRect(left: 0, top: 0, width: 80, height: 40);
final targets = <DndId, DndRect>{
const DndId('todo'): const DndRect(left: 0, top: 80, width: 240, height: 200),
const DndId('done'): const DndRect(left: 280, top: 80, width: 240, height: 200),
};
final result = DndCollisionDetectors.closestCenter(
DndCollisionInput(activeRect: activeRect, droppableRects: targets),
);
final overId = result.firstOrNull?.id;
Package Boundary #
dnd_kit_core intentionally has no Flutter dependency. It does not import
package:flutter/*, dart:ui, BuildContext, RenderBox, Offset, Rect,
or Size.
Flutter widgets, measuring, overlays, auto-scroll, and stable sortable presets
live in the main dnd_kit package.