Use drawing controller
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.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:flutter_fullscreen/flutter_fullscreen.dart';
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
import 'package:pdfrx/pdfrx.dart';
|
import 'package:pdfrx/pdfrx.dart';
|
||||||
@@ -41,10 +43,20 @@ class _SheetViewerPageState extends State<SheetViewerPage>
|
|||||||
int _currentPage = 1;
|
int _currentPage = 1;
|
||||||
int _totalPages = 1;
|
int _totalPages = 1;
|
||||||
bool _isPaintMode = false;
|
bool _isPaintMode = false;
|
||||||
|
late DrawingController _drawingController;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.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.addListener(this);
|
||||||
FullScreen.setFullScreen(widget.config.fullscreen);
|
FullScreen.setFullScreen(widget.config.fullscreen);
|
||||||
_documentLoaded = _loadPdf();
|
_documentLoaded = _loadPdf();
|
||||||
@@ -52,6 +64,7 @@ class _SheetViewerPageState extends State<SheetViewerPage>
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
|
_drawingController.dispose();
|
||||||
FullScreen.removeListener(this);
|
FullScreen.removeListener(this);
|
||||||
_document?.dispose();
|
_document?.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
@@ -225,7 +238,10 @@ class _SheetViewerPageState extends State<SheetViewerPage>
|
|||||||
// Show paint mode layer when active
|
// Show paint mode layer when active
|
||||||
Visibility(
|
Visibility(
|
||||||
visible: _isPaintMode,
|
visible: _isPaintMode,
|
||||||
child: PaintModeLayer(pageDisplay: pageDisplay),
|
child: PaintModeLayer(
|
||||||
|
pageDisplay: pageDisplay,
|
||||||
|
drawingController: _drawingController,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -6,13 +6,15 @@ import 'pdf_page_display.dart';
|
|||||||
/// Drawing overlay for annotating PDF pages.
|
/// Drawing overlay for annotating PDF pages.
|
||||||
///
|
///
|
||||||
/// Uses flutter_drawing_board to provide a paint canvas over the PDF.
|
/// 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 {
|
class PaintModeLayer extends StatelessWidget {
|
||||||
final PdfPageDisplay pageDisplay;
|
final PdfPageDisplay pageDisplay;
|
||||||
|
final DrawingController drawingController;
|
||||||
|
|
||||||
const PaintModeLayer({
|
const PaintModeLayer({
|
||||||
super.key,
|
super.key,
|
||||||
required this.pageDisplay,
|
required this.pageDisplay,
|
||||||
|
required this.drawingController,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -24,6 +26,7 @@ class PaintModeLayer extends StatelessWidget {
|
|||||||
final (pageSize, _) = pageDisplay.calculateScaledPageSizes(maxSize);
|
final (pageSize, _) = pageDisplay.calculateScaledPageSizes(maxSize);
|
||||||
|
|
||||||
return DrawingBoard(
|
return DrawingBoard(
|
||||||
|
controller: drawingController,
|
||||||
background: SizedBox(
|
background: SizedBox(
|
||||||
width: pageSize.width,
|
width: pageSize.width,
|
||||||
height: pageSize.height,
|
height: pageSize.height,
|
||||||
|
|||||||
Reference in New Issue
Block a user