Flutter PDF预览插件flutter_fullpdfview的使用
Flutter PDF预览插件flutter_fullpdfview的使用
插件简介
flutter_fullpdfview
是一个用于在 iOS 和 Android 上预览 PDF 文件的原生插件。
使用步骤
1. 添加依赖
在项目的 pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter_fullpdfview: latest_version
运行以下命令以安装依赖:
flutter pub get
2. 配置 iOS
在 iOS 项目中,需要启用嵌入视图预览。编辑 Info.plist
文件并添加以下键值对:
<key>io.flutter.embedded_views_preview</key>
<string>YES</string>
3. 导入插件
在需要使用的 Dart 文件中导入插件:
import 'package:flutter_fullpdfview/flutter_fullpdfview.dart';
参数选项
公共参数
以下是支持的参数及其平台兼容性:
名称 | Android | iOS |
---|---|---|
onViewCreated | V | V |
onRender | V | V |
onPageChanged | V | V |
onError | V | V |
onPageError | V | X |
gestureRecognizers | V | V |
filePath | V | V |
fitEachPage | V | V |
defaultPage | V | V |
dualPageMode | V | V |
displayAsBook | V | V |
dualPageWithBreak | V | V |
enableSwipe | V | V |
swipeHorizontal | V | V |
password | V | V |
nightMode | V | X |
autoSpacing | V | V |
pageFling | V | V |
pageSnap | V | V |
backgroundColor | V | V |
fitPolicy | V | X |
注意:目前仅支持黑白模式。
控制器选项
以下是控制器提供的方法及其说明:
名称 | 描述 | 参数 | 返回值 |
---|---|---|---|
getPageCount | 获取总页数 | - | Future<int> |
getCurrentPage | 获取当前页 | - | Future<int> |
setPage | 跳转到指定页面 | int page |
Future<bool> |
setPageWithAnimation | 带动画跳转到指定页面 | int page |
Future<bool> |
resetZoom | 恢复缩放并调整到宽度 | int page |
Future<bool> |
getZoom | 获取当前缩放比例 | - | Future<double> |
setZoom | 设置当前缩放比例 | double zoom |
Future<double> |
getPageWidth | 获取指定页面的宽度 | double width |
Future<double> |
getPageHeight | 获取指定页面的高度 | double height |
Future<double> |
示例代码
以下是一个完整的示例代码,展示如何使用 flutter_fullpdfview
预览 PDF 文件:
import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_fullpdfview/flutter_fullpdfview.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter PDF View',
home: PDFPreviewPage(),
);
}
}
class PDFPreviewPage extends StatefulWidget {
@override
_PDFPreviewPageState createState() => _PDFPreviewPageState();
}
class _PDFPreviewPageState extends State<PDFPreviewPage> {
late String pathPDF;
@override
void initState() {
super.initState();
pathPDF = "assets/demo.pdf"; // 替换为实际路径
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('PDF Preview')),
body: Center(
child: ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => PDFViewerScreen(path: pathPDF)),
);
},
child: Text('Open PDF'),
),
),
);
}
}
class PDFViewerScreen extends StatefulWidget {
final String path;
PDFViewerScreen({required this.path});
@override
_PDFViewerScreenState createState() => _PDFViewerScreenState();
}
class _PDFViewerScreenState extends State<PDFViewerScreen> {
int pages = 0;
bool isReady = false;
String errorMessage = '';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('PDF Viewer')),
body: Stack(
children: [
PDFView(
filePath: widget.path,
enableSwipe: true,
fitEachPage: true,
swipeHorizontal: true,
autoSpacing: false,
pageFling: false,
defaultPage: 0,
onRender: (_pages) {
setState(() {
pages = _pages;
isReady = true;
});
},
onError: (error) {
setState(() {
errorMessage = error.toString();
});
},
onPageError: (page, error) {
setState(() {
errorMessage = '$page: ${error.toString()}';
});
},
onViewCreated: (PDFViewController pdfViewController) {
print('PDF View Created');
},
onPageChanged: (int page, int total) {
print('Page changed: $page/$total');
},
),
errorMessage.isNotEmpty
? Center(child: Text(errorMessage))
: !isReady
? Center(child: CircularProgressIndicator())
: Container(),
],
),
);
}
}
注意事项
- 如果在生产环境中使用,请确保配置 ProGuard:
-keep class com.shockwave.**
更多关于Flutter PDF预览插件flutter_fullpdfview的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter PDF预览插件flutter_fullpdfview的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_fullpdfview
是一个用于在 Flutter 应用中预览 PDF 文件的插件。它基于 PDFView
库,提供了简单易用的 API 来加载和显示 PDF 文件。以下是如何使用 flutter_fullpdfview
插件的详细步骤。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 flutter_fullpdfview
插件的依赖。
dependencies:
flutter:
sdk: flutter
flutter_fullpdfview: ^1.0.0+17
然后运行 flutter pub get
来安装依赖。
2. 导入插件
在你的 Dart 文件中导入 flutter_fullpdfview
插件。
import 'package:flutter_fullpdfview/flutter_fullpdfview.dart';
3. 使用 PDFView
组件
你可以使用 PDFView
组件来加载和显示 PDF 文件。以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:flutter_fullpdfview/flutter_fullpdfview.dart';
class PDFViewerScreen extends StatelessWidget {
final String pdfPath;
PDFViewerScreen({required this.pdfPath});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('PDF Viewer'),
),
body: PDFView(
filePath: pdfPath,
enableSwipe: true,
swipeHorizontal: true,
autoSpacing: false,
pageFling: false,
onRender: (_pages) {
print("PDF rendered");
},
onError: (error) {
print(error.toString());
},
onPageError: (page, error) {
print('$page: ${error.toString()}');
},
onViewCreated: (PDFViewController pdfViewController) {
print("PDF view created");
},
onPageChanged: (int? page, int? total) {
print('page change: $page/$total');
},
),
);
}
}
4. 导航到 PDF 查看页面
你可以通过导航器将用户引导到 PDF 查看页面。例如:
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => PDFViewerScreen(pdfPath: 'path/to/your/pdf/file.pdf'),
),
);