flutter_cached_pdfview
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.
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
PDF(
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
PDF(
swipeHorizontal: true,
).cachedFromUrl('https://ontheline.trincoll.edu/images/bookdown/sample-local-pdf.pdf'),
with placeholder until pdfFile download and errorWidget if there are problem
PDF().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.**