Flutter cached pdfview
Enhanced PDF view for Flutter.
A package to show Native PDF View for iOS and Android, support Open from a different resource like Path, Asset or Url and Cache it. The project is written primarily in Dart, distributed under the MIT License license, first published in 2020. Key topics include: android, cache, cached-pdfview, dart, flutter.
flutter_cached_pdfview
<a href="https://github.com/Solido/awesome-flutter"> <img alt="Awesome Flutter" src="https://img.shields.io/badge/Awesome-Flutter-blue.svg?longCache=true&style=flat-square" /> </a>
Support = [ Android , IOS and WEB(soon) ];
- Open Pdf From Path(local file)
- Open Pdf From Asset
- Open Pdf From URl and Cache it
- Display horizontally or vertically
- Drag and zoom
- Double tap for zoom
- Support password protected pdf
- Jump to a specific page in the pdf
Setup
iOS
Opt-in to the embedded views preview by adding a boolean property to the app's Info.plist file
with the key io.flutter.embedded_views_preview and the value YES.
iOS (only support> 11.0) you need to add this line in your ios/Podfile
platform :ios, '11.0'
ready-made in the Example
Import it
Now in your Dart code, you can use:
import 'package:flutter_cached_pdfview/flutter_cached_pdfview.dart';
Options
| Name | Android | iOS | Default |
|---|---|---|---|
| defaultPage | ✅ | ✅ | 0 |
| onViewCreated | ✅ | ✅ | null |
| onRender | ✅ | ✅ | null |
| onPageChanged | ✅ | ✅ | null |
| onError | ✅ | ✅ | null |
| onPageError | ✅ | ❌ | null |
| onLinkHandle | ✅ | ✅ | null |
| gestureRecognizers | ✅ | ✅ | null |
| filePath | ✅ | ✅ | |
| fitPolicy | ✅ | ❌ | FitPolicy.WIDTH |
| enableSwipe | ✅ | ✅ | true |
| swipeHorizontal | ✅ | ✅ | false |
| password | ✅ | ✅ | null |
| nightMode | ✅ | ❌ | false |
| autoSpacing | ✅ | ✅ | true |
| pageFling | ✅ | ✅ | true |
| pageSnap | ✅ | ❌ | true |
| preventLinkNavigation | ✅ | ✅ | false |
| bockgroundColor | ✅ | ✅ | null |
Controller Options
| Name | Description | Parameters | Return |
|---|---|---|---|
| getPageCount | Get total page count | - | Future<int> |
| getCurrentPage | Get current page | - | Future<int> |
| setPage | Go to/Set page | int page | Future<bool> |
Example
from Asset
dartPDF( enableSwipe: true, swipeHorizontal: true, autoSpacing: false, pageFling: false, backgroundColor: Colors.grey, onError: (error) { print(error.toString()); }, onPageError: (page, error) { print('$page: ${error.toString()}'); }, onPageChanged: (int page, int total) { print('page change: $page/$total'); }, ).fromAsset('assets/pdf/file-example.pdf'),
cached From Url
dartPDF( swipeHorizontal: true, ).cachedFromUrl('https://ontheline.trincoll.edu/images/bookdown/sample-local-pdf.pdf'),
with placeholder until pdfFile download and errorWidget if there are problem
dartPDF().cachedFromUrl( 'https://ontheline.trincoll.edu/images/bookdown/sample-local-pdf.pdf', placeholder: (progress) => Center(child: Text('$progress %')), errorWidget: (error) => Center(child: Text(error.toString())), )
For production usage
If you use proguard, you should include this line [ready-made in the Example].
-keep class com.shockwave.**
Dependencies
Flutter
Android (only support >= api 20)
iOS (only support> 11.0)
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top"> <input type="hidden" name="cmd" value="_s-xclick" /> <input type="hidden" name="hosted_button_id" value="YDEYAAGBXDDK6" /> <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" title="PayPal - The safer, easier way to pay online!" alt="Donate with PayPal button" /> <img alt="" border="0" src="https://www.paypal.com/en_MN/i/scr/pixel.gif" width="1" height="1" /> </form>Video


Developer
Contributors
Showing top 2 contributors by commit count.
