Showing
1 changed file
with
25 additions
and
0 deletions
@@ -110,6 +110,8 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom> | @@ -110,6 +110,8 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom> | ||
110 | with PdfPreviewRaster { | 110 | with PdfPreviewRaster { |
111 | final listView = GlobalKey(); | 111 | final listView = GlobalKey(); |
112 | 112 | ||
113 | + late List<GlobalKey> _pageGlobalKeys; | ||
114 | + | ||
113 | bool infoLoaded = false; | 115 | bool infoLoaded = false; |
114 | 116 | ||
115 | int? preview; | 117 | int? preview; |
@@ -172,6 +174,28 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom> | @@ -172,6 +174,28 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom> | ||
172 | super.didChangeDependencies(); | 174 | super.didChangeDependencies(); |
173 | } | 175 | } |
174 | 176 | ||
177 | + @override | ||
178 | + void initState() { | ||
179 | + super.initState(); | ||
180 | + _pageGlobalKeys = List.generate( | ||
181 | + pages.length, | ||
182 | + (index) => GlobalKey(debugLabel: 'pdf-page-$index'), | ||
183 | + ); | ||
184 | + } | ||
185 | + | ||
186 | + void scrollToPage( | ||
187 | + int index, { | ||
188 | + Duration duration = Duration.zero, | ||
189 | + Curve curve = Curves.ease, | ||
190 | + ScrollPositionAlignmentPolicy alignmentPolicy = | ||
191 | + ScrollPositionAlignmentPolicy.explicit, | ||
192 | + }) { | ||
193 | + assert(index >= 0); | ||
194 | + final pageKey = _pageGlobalKeys[index]; | ||
195 | + Scrollable.ensureVisible(pageKey.currentContext!, | ||
196 | + duration: duration, curve: curve, alignmentPolicy: alignmentPolicy); | ||
197 | + } | ||
198 | + | ||
175 | Widget _showError(Object error) { | 199 | Widget _showError(Object error) { |
176 | if (widget.onError != null) { | 200 | if (widget.onError != null) { |
177 | return widget.onError!(context, error); | 201 | return widget.onError!(context, error); |
@@ -215,6 +239,7 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom> | @@ -215,6 +239,7 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom> | ||
215 | }); | 239 | }); |
216 | }, | 240 | }, |
217 | child: PdfPreviewPage( | 241 | child: PdfPreviewPage( |
242 | + key: _pageGlobalKeys[index], | ||
218 | pageData: pages[index], | 243 | pageData: pages[index], |
219 | pdfPreviewPageDecoration: widget.pdfPreviewPageDecoration, | 244 | pdfPreviewPageDecoration: widget.pdfPreviewPageDecoration, |
220 | pageMargin: widget.previewPageMargin, | 245 | pageMargin: widget.previewPageMargin, |
-
Please register or login to post a comment