flutter_custom_cursor 0.0.4  flutter_custom_cursor: ^0.0.4 copied to clipboard
flutter_custom_cursor: ^0.0.4 copied to clipboard
Create/Set a custom mouse cursor directly from a memory buffer.
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 #
- ✅ macOS
- ✅ Windows
- ✅ 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");