Aleksei
Committed by David PHAM-VAN

Minor optimization

@@ -114,7 +114,7 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom> @@ -114,7 +114,7 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom>
114 with PdfPreviewRaster { 114 with PdfPreviewRaster {
115 final listView = GlobalKey(); 115 final listView = GlobalKey();
116 116
117 - late List<GlobalKey> _pageGlobalKeys; 117 + List<GlobalKey> _pageGlobalKeys = <GlobalKey>[];
118 118
119 bool infoLoaded = false; 119 bool infoLoaded = false;
120 120
@@ -221,22 +221,15 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom> @@ -221,22 +221,15 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom>
221 ); 221 );
222 } 222 }
223 223
224 - _pageGlobalKeys = List.generate(pages.length, (index) => GlobalKey()); 224 + if (widget.enableScrollToPage) {
  225 + _pageGlobalKeys = List.generate(pages.length, (_) => GlobalKey());
  226 + }
225 227
226 if (widget.pagesBuilder != null) { 228 if (widget.pagesBuilder != null) {
227 return widget.pagesBuilder!(context, pages); 229 return widget.pagesBuilder!(context, pages);
228 } 230 }
229 231
230 - return widget.enableScrollToPage  
231 - ? Scrollbar(  
232 - controller: scrollController,  
233 - child: SingleChildScrollView(  
234 - controller: scrollController,  
235 - physics: widget.scrollPhysics,  
236 - child: Column(  
237 - children: List.generate(  
238 - pages.length,  
239 - (index) => GestureDetector( 232 + Widget pageWidget(int index, {Key? key}) => GestureDetector(
240 onDoubleTap: () { 233 onDoubleTap: () {
241 setState(() { 234 setState(() {
242 updatePosition = scrollController.position.pixels; 235 updatePosition = scrollController.position.pixels;
@@ -245,12 +238,24 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom> @@ -245,12 +238,24 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom>
245 }); 238 });
246 }, 239 },
247 child: PdfPreviewPage( 240 child: PdfPreviewPage(
248 - key: getPageKey(index), 241 + key: key,
249 pageData: pages[index], 242 pageData: pages[index],
250 pdfPreviewPageDecoration: widget.pdfPreviewPageDecoration, 243 pdfPreviewPageDecoration: widget.pdfPreviewPageDecoration,
251 pageMargin: widget.previewPageMargin, 244 pageMargin: widget.previewPageMargin,
252 ), 245 ),
253 - ), 246 + );
  247 +
  248 + return widget.enableScrollToPage
  249 + ? Scrollbar(
  250 + controller: scrollController,
  251 + child: SingleChildScrollView(
  252 + controller: scrollController,
  253 + physics: widget.scrollPhysics,
  254 + padding: widget.padding,
  255 + child: Column(
  256 + children: List.generate(
  257 + pages.length,
  258 + (index) => pageWidget(index, key: getPageKey(index)),
254 ), 259 ),
255 ), 260 ),
256 ), 261 ),
@@ -261,21 +266,7 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom> @@ -261,21 +266,7 @@ class PdfPreviewCustomState extends State<PdfPreviewCustom>
261 physics: widget.scrollPhysics, 266 physics: widget.scrollPhysics,
262 padding: widget.padding, 267 padding: widget.padding,
263 itemCount: pages.length, 268 itemCount: pages.length,
264 - itemBuilder: (BuildContext context, int index) => GestureDetector(  
265 - onDoubleTap: () {  
266 - setState(() {  
267 - updatePosition = scrollController.position.pixels;  
268 - preview = index;  
269 - transformationController.value.setIdentity();  
270 - });  
271 - },  
272 - child: PdfPreviewPage(  
273 - key: getPageKey(index),  
274 - pageData: pages[index],  
275 - pdfPreviewPageDecoration: widget.pdfPreviewPageDecoration,  
276 - pageMargin: widget.previewPageMargin,  
277 - ),  
278 - ), 269 + itemBuilder: (BuildContext context, int index) => pageWidget(index),
279 ); 270 );
280 } 271 }
281 272