Toggle navigation
Toggle navigation
This project
Loading...
Sign in
flutter_package
/
dart_pdf
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Aleksei
2024-01-24 08:49:25 +0100
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
David PHAM-VAN
2024-01-27 12:16:39 -0400
Commit
ac4d648b6f0af33fdf470440db916b691f4028fb
ac4d648b
1 parent
ea5ecca6
Implement mouse cursor for web
Add `onZoomChanged` for `PdfPreview`
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
36 additions
and
1 deletions
printing/lib/src/preview/custom.dart
printing/lib/src/preview/pdf_preview.dart
printing/lib/src/preview/custom.dart
View file @
ac4d648
...
...
@@ -16,6 +16,7 @@
import
'dart:async'
;
import
'package:flutter/foundation.dart'
;
import
'package:flutter/material.dart'
;
import
'package:pdf/pdf.dart'
;
...
...
@@ -51,6 +52,7 @@ class PdfPreviewCustom extends StatefulWidget {
this
.
shrinkWrap
=
false
,
this
.
pagesBuilder
,
this
.
enableScrollToPage
=
false
,
this
.
onZoomChanged
,
})
:
super
(
key:
key
);
/// Pdf paper page format
...
...
@@ -106,6 +108,9 @@ class PdfPreviewCustom extends StatefulWidget {
/// Whether scroll to page functionality enabled.
final
bool
enableScrollToPage
;
/// The zoom mode has changed
final
ValueChanged
<
bool
>?
onZoomChanged
;
@override
PdfPreviewCustomState
createState
()
=>
PdfPreviewCustomState
();
}
...
...
@@ -130,6 +135,8 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom>
Timer
?
previewUpdate
;
MouseCursor
_mouseCursor
=
MouseCursor
.
defer
;
static
const
_errorMessage
=
'Unable to display the document'
;
@override
...
...
@@ -137,6 +144,7 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom>
@override
void
dispose
()
{
transformationController
.
dispose
();
previewUpdate
?.
cancel
();
super
.
dispose
();
}
...
...
@@ -155,6 +163,7 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom>
preview
=
null
;
updatePosition
=
null
;
raster
();
_zoomChanged
();
}
super
.
didUpdateWidget
(
oldWidget
);
}
...
...
@@ -235,7 +244,11 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom>
updatePosition
=
scrollController
.
position
.
pixels
;
preview
=
index
;
transformationController
.
value
.
setIdentity
();
if
(
kIsWeb
)
{
_mouseCursor
=
SystemMouseCursors
.
grab
;
}
});
_zoomChanged
();
},
child:
PdfPreviewPage
(
key:
key
,
...
...
@@ -271,11 +284,22 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom>
}
Widget
_zoomPreview
()
{
return
GestureDetector
(
final
zoomPreview
=
GestureDetector
(
onTap:
()
{
if
(
kIsWeb
)
{
setState
(()
{
_mouseCursor
=
SystemMouseCursors
.
grabbing
;
});
}
},
onDoubleTap:
()
{
setState
(()
{
preview
=
null
;
if
(
kIsWeb
)
{
_mouseCursor
=
MouseCursor
.
defer
;
}
});
_zoomChanged
();
},
child:
InteractiveViewer
(
transformationController:
transformationController
,
...
...
@@ -289,8 +313,13 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom>
),
),
);
return
kIsWeb
?
MouseRegion
(
cursor:
_mouseCursor
,
child:
zoomPreview
)
:
zoomPreview
;
}
void
_zoomChanged
()
=>
widget
.
onZoomChanged
?.
call
(
preview
!=
null
);
@override
Widget
build
(
BuildContext
context
)
{
Widget
page
;
...
...
printing/lib/src/preview/pdf_preview.dart
View file @
ac4d648
...
...
@@ -65,6 +65,7 @@ class PdfPreview extends StatefulWidget {
this
.
dpi
,
this
.
actionBarTheme
=
const
PdfActionBarTheme
(),
this
.
enableScrollToPage
=
false
,
this
.
onZoomChanged
,
})
:
_pagesBuilder
=
null
,
super
(
key:
key
);
...
...
@@ -125,6 +126,7 @@ class PdfPreview extends StatefulWidget {
this
.
actionBarTheme
=
const
PdfActionBarTheme
(),
required
CustomPdfPagesBuilder
pagesBuilder
,
this
.
enableScrollToPage
=
false
,
this
.
onZoomChanged
,
})
:
_pagesBuilder
=
pagesBuilder
,
super
(
key:
key
);
...
...
@@ -238,6 +240,9 @@ class PdfPreview extends StatefulWidget {
/// Whether scroll to page functionality enabled.
final
bool
enableScrollToPage
;
/// The zoom mode has changed
final
ValueChanged
<
bool
>?
onZoomChanged
;
@override
PdfPreviewState
createState
()
=>
PdfPreviewState
();
}
...
...
@@ -411,6 +416,7 @@ class PdfPreviewState extends State<PdfPreview> {
pagesBuilder:
widget
.
_pagesBuilder
,
dpi:
widget
.
dpi
,
enableScrollToPage:
widget
.
enableScrollToPage
,
onZoomChanged:
widget
.
onZoomChanged
,
);
}),
),
...
...
Please
register
or
login
to post a comment