Chart background on dark theme

This commit is contained in:
2026-04-22 01:04:04 -03:00
parent 3758e06fde
commit 28fc4b70a5
6 changed files with 216 additions and 51 deletions

View File

@@ -19,6 +19,13 @@ class ChartWidget extends StatefulWidget {
class _ChartWidgetState extends State<ChartWidget> {
Offset? _dragStart;
int? _dragStartUs;
final ValueNotifier<Offset?> _hover = ValueNotifier(null);
@override
void dispose() {
_hover.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
@@ -35,29 +42,50 @@ class _ChartWidgetState extends State<ChartWidget> {
_Header(channel: widget.channel),
Expanded(
child: LayoutBuilder(builder: (context, constraints) {
return Listener(
onPointerSignal: (ev) =>
_onPointerSignal(ev, constraints),
child: GestureDetector(
onDoubleTap: () => _resetY(),
onHorizontalDragStart: (d) => _dragStartHandler(d),
onHorizontalDragUpdate: (d) =>
_dragUpdate(d, constraints),
onHorizontalDragEnd: (_) => _dragStart = null,
child: ValueListenableBuilder<int>(
valueListenable: scope.session.frameTick,
builder: (_, __, ___) {
return CustomPaint(
painter: ChartPainter(
channel: widget.channel,
session: scope.session,
layout: scope.layout,
return ValueListenableBuilder<bool>(
valueListenable: scope.session.cursorEnabled,
builder: (_, cursorOn, __) {
return MouseRegion(
cursor: cursorOn
? SystemMouseCursors.precise
: MouseCursor.defer,
onHover: cursorOn
? (e) => _hover.value = e.localPosition
: null,
onExit: cursorOn ? (_) => _hover.value = null : null,
child: Listener(
onPointerSignal: (ev) =>
_onPointerSignal(ev, constraints),
child: GestureDetector(
onDoubleTap: () => _resetY(),
onHorizontalDragStart: (d) => _dragStartHandler(d),
onHorizontalDragUpdate: (d) =>
_dragUpdate(d, constraints),
onHorizontalDragEnd: (_) => _dragStart = null,
child: ListenableBuilder(
listenable: Listenable.merge([
scope.session.frameTick,
_hover,
]),
builder: (_, __) {
return CustomPaint(
painter: ChartPainter(
channel: widget.channel,
session: scope.session,
layout: scope.layout,
isDark: Theme.of(context).brightness ==
Brightness.dark,
hoverLocalPos:
cursorOn ? _hover.value : null,
),
size: Size.infinite,
);
},
),
size: Size.infinite,
);
},
),
),
),
),
);
},
);
}),
),