diff --git a/lib/features/sheet_viewer/sheet_viewer_page.dart b/lib/features/sheet_viewer/sheet_viewer_page.dart index 8c0b7ea..5a1f7de 100644 --- a/lib/features/sheet_viewer/sheet_viewer_page.dart +++ b/lib/features/sheet_viewer/sheet_viewer_page.dart @@ -1,6 +1,8 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_drawing_board/flutter_drawing_board.dart'; +import 'package:flutter_drawing_board/paint_contents.dart'; import 'package:flutter_fullscreen/flutter_fullscreen.dart'; import 'package:logging/logging.dart'; import 'package:pdfrx/pdfrx.dart'; @@ -41,10 +43,20 @@ class _SheetViewerPageState extends State int _currentPage = 1; int _totalPages = 1; bool _isPaintMode = false; + late DrawingController _drawingController; @override void initState() { super.initState(); + // Initialize drawing controller with default configuration + _drawingController = DrawingController( + config: DrawConfig( + contentType: SimpleLine, + strokeWidth: 4.0, + color: Colors.black, + ), + maxHistorySteps: 100, // Limit undo/redo history (default: 100) + ); FullScreen.addListener(this); FullScreen.setFullScreen(widget.config.fullscreen); _documentLoaded = _loadPdf(); @@ -52,6 +64,7 @@ class _SheetViewerPageState extends State @override void dispose() { + _drawingController.dispose(); FullScreen.removeListener(this); _document?.dispose(); super.dispose(); @@ -225,7 +238,10 @@ class _SheetViewerPageState extends State // Show paint mode layer when active Visibility( visible: _isPaintMode, - child: PaintModeLayer(pageDisplay: pageDisplay), + child: PaintModeLayer( + pageDisplay: pageDisplay, + drawingController: _drawingController, + ), ), ], ); diff --git a/lib/features/sheet_viewer/widgets/paint_mode_layer.dart b/lib/features/sheet_viewer/widgets/paint_mode_layer.dart index a254314..e3b9b74 100644 --- a/lib/features/sheet_viewer/widgets/paint_mode_layer.dart +++ b/lib/features/sheet_viewer/widgets/paint_mode_layer.dart @@ -6,13 +6,15 @@ import 'pdf_page_display.dart'; /// Drawing overlay for annotating PDF pages. /// /// Uses flutter_drawing_board to provide a paint canvas over the PDF. -/// Only available in single-page mode. +/// Only working in single-page mode. class PaintModeLayer extends StatelessWidget { final PdfPageDisplay pageDisplay; + final DrawingController drawingController; const PaintModeLayer({ super.key, required this.pageDisplay, + required this.drawingController, }); @override @@ -24,6 +26,7 @@ class PaintModeLayer extends StatelessWidget { final (pageSize, _) = pageDisplay.calculateScaledPageSizes(maxSize); return DrawingBoard( + controller: drawingController, background: SizedBox( width: pageSize.width, height: pageSize.height,