insert method

void insert([
  1. MouseCursor? cursor
])

插入全局光标,通常用于拖拽,当进行拖拽时设置全局光标可以防止鼠标与页面元素进行交互, 而且可以保证在拖拽过程中光标样式的稳定性。

Implementation

void insert([MouseCursor? cursor]) {
  if (ElPlatform.isDesktop) {
    cursor ??= MouseCursor.defer;
    if (_cursor != cursor) {
      remove();
      _cursor = cursor;
      ElOverlay.state.insert(
        ElOverlayEntry(
          id: ElCursorService,
          child: Listener(
            behavior: HitTestBehavior.opaque,
            // 按下指针移除全局光标遮罩层,防止在极端情况下应用程序因没有移除全局光标导致应用无法进行任何交互。
            onPointerDown: (e) => remove(),
            child: MouseRegion(cursor: _cursor!),
          ),
        ),
      );
    }
  }
}