https://github.com/plugfox/repaint
https://github.com/plugfox/repaint
Last synced: 8 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/plugfox/repaint
- Owner: PlugFox
- License: mit
- Created: 2024-12-04T05:04:05.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-12-04T06:18:11.000Z (over 1 year ago)
- Last Synced: 2024-12-04T06:28:08.529Z (over 1 year ago)
- Language: Dart
- Size: 18.6 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# RePaint
[](https://pub.dev/packages/repaint)
[](https://github.com/PlugFox/repaint/actions)
[](https://codecov.io/gh/PlugFox/repaint)
[](https://opensource.org/licenses/MIT)
[](https://pub.dev/packages/linter)
[](https://github.com/plugfox/repaint/)
Library for creating and managing a canvas similar to CustomPaint but with more features.
## How to
### Handle mouse events
```dart
@override
@mustCallSuper
void onPointerEvent(PointerEvent event) {
case (event) {
case PointerDownEvent e:
case PointerUpEvent e:
case PointerCancelEvent e:
case PointerPanZoomStartEvent e:
case PointerPanZoomUpdateEvent e:
case PointerPanZoomEndEvent e:
case PointerScrollEvent e:
case PointerSignalEvent e:
case PointerHoverEvent e:
break;
case PointerMoveEvent e:
// Move the [_rect] by the [_offset] on mouse drag
final rect = _rect.shift(_offset);
if (!rect.contains(e.localPosition)) return;
_offset += move.delta;
}
}
```
### Handle keyboard events
To handle keyboard events you can use [HardwareKeyboard](https://api.flutter.dev/flutter/services/HardwareKeyboard-class.html) manager:
```dart
bool _onKeyEvent(KeyEvent event) {
if (event.deviceType != KeyEventDeviceType.keyboard) return false;
if (event is! KeyDownEvent) return false;
// F1 - do something
switch (event.logicalKey) {
case LogicalKeyboardKey.f1:
doSomething();
return true;
default:
return false;
}
}
@override
void mount(_, __) {
HardwareKeyboard.instance.addHandler(_onKeyEvent);
}
@override
void unmount() {
HardwareKeyboard.instance.removeHandler(_onKeyEvent);
}
```
or wrap RePaint with [Focus](https://api.flutter.dev/flutter/widgets/Focus-class.html) widget and use [onKeyEvent](https://api.flutter.dev/flutter/widgets/Focus/onKeyEvent.html) to handle keyboard events:
```dart
final painter = RePainterImpl();
Widget build(BuildContext context) {
return Focus(
onKeyEvent: painter.onKeyEvent,
child: RePaint(
painter: painter,
),
);
}
```