FLUTTER ECOSYSTEM

Kingtous/flutter_custom_cursor

Crie ou defina facilmente um cursor de mouse personalizado diretamente a partir de um buffer de memória! Use com https://github.com/Kingtous/engine se estiver usando o Flutter estável no Windows atualmente.

Capa do projeto flutter_custom_cursor
Stars
6
Forks
4
Último push (UTC)
4 de jul. de 2026
Status do projeto
Ativo
Tousking GitHub avatar
GITHUB User

Tousking ↗

Fighting for the top A! 2020&2022 @bytedance | RustDesk @rustdesk | @Tencent 2024 | Dora AI 2023-2024.

XThe Moon
LinguagensC++CMakeDartSwiftCRuby

Tópicos técnicos

Pacotes publicados por este repositório

Dependências usadas

Lista de dependências 3 itens
  • flutter{"sdk":"flutter"}
  • flutter_testDesenvolvimento{"sdk":"flutter"}
  • flutter_lintsDesenvolvimento^3.0.0

README original

Texto original em inglês. Visite o GitHub para a versão atual.

Expandir / recolher README

flutter_custom_cursor

https://img.shields.io/pub/v/flutter_custom_cursor?color=green https://img.shields.io/pub/publisher/flutter_custom_cursor

This plugin allows to create/set a custom mouse cursor directly from a memory buffer.

Big thanks to imiskolee to create the base of this plugin.

Platforms

  • [x] macOS
  • [x] Windows
  • [x] Linux

Note: Currently, the api required by this plugin on Windows is included in flutter master branch. It means that u need to use this plugin with flutter master branch on Windows platform. See flutter engine PR#36143 for details.

Update: the latest Flutter 3.7.0 does not contain PR above, which merges to flutter-3.7.0-candidate.2, while Flutter stable 3.7.0 is using flutter-3.7.0-candidate.1. This limitation will be lifted maybe in the next Flutter stable release.

Get prepared

Register your custom cursor before

// register this cursor
cursorName = await CursorManager.instance.registerCursor(CursorData()
  ..name = "test"
  ..buffer =
      Platform.isWindows ? memoryCursorDataRawBGRA : memoryCursorDataRawPNG
  ..height = img.height
  ..width = img.width
  ..hotX = 0
  ..hotY = 0);

Note that a String cacheName will be returned by the function registerCursor, which can be used to set this cursor to system or delete this cursor.

CursorData.buffer is a Uint8List which contains the cursor data. Be aware that on Windows, buffer is formatted by rawBGRA, other OS(s) are rawPNG.

see the example project for details.

Set the custom cursor

We have implemented the FlutterCustomMemoryImageCursor class, which is a subclass of MouseCursor. This class will automatically set the memory cursor for you. Keep it simple.

MouseRegion(
  cursor: FlutterCustomMemoryImageCursor(key: cursorName),
  child: Row(
    children: [
      Text("Memory image here", style: style),
    ],
  ),
),

Delete the cursor

You can delete a cursor with the cursorName.

await CursorManager.instance.deleteCursor("cursorName");