- 添加依赖
在 pubspec.yaml 文件中添加 flutter_pdfview 依赖:
yaml
dependencies:
flutter:
sdk: flutter
flutter_pdfview: ^1.3.2
然后运行 flutter pub get 以安装依赖包。
- 导入包
在你要使用 PDF 查看器的 Dart 文件中导入该包:
dart
复制代码
import 'package:flutter_pdfview/flutter_pdfview.dart';
- 显示 PDF 文件
你可以使用 PDFView 小部件来显示 PDF 文件。你可以从本地文件路径加载 PDF,也可以从资产中加载 PDF。
从本地文件加载 PDF
import 'package:flutter/material.dart';
import 'package:flutter_pdfview/flutter_pdfview.dart';
import 'dart:io';
class PDFViewerFromFile extends StatelessWidget {
final String filePath;
PDFViewerFromFile({
required this.filePath});
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('PDF 查看器'),
),
body: PDFView(
filePath: filePath,
enableSwipe: true,
swipeHorizontal: true,
autoSpacing: false,
pageFling: false,
onRender: (pages) {
print('Total pages: $pages');
},
onError: (error) {
print(error.toString());
},
onPageError: (page, error) {
print('Page $page: ${
error.toString()}');
},
),
);
}
}
-
权限处理(如果需要)
如果你需要从设备存储中加载 PDF,请确保应用具有必要的权限。你可能需要使用 permission_handler 包来请求和检查存储权限。 -
示例用法
下面是一个完整的示例,展示如何集成和使用 flutter_pdfview:
import 'package:flutter/material.dart';
import 'package:flutter_pdfview/flutter_pdfview.dart';
import 'package:path_provider/path_provider.dart';
import 'dart:io';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter PDF View',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: PDFViewerPage(),
);
}
}
class PDFViewerPage extends StatefulWidget {
_PDFViewerPageState createState() => _PDFViewerPageState();
}
class _PDFViewerPageState extends State<PDFViewerPage> {
String? localFilePath;
void initState() {
super.initState();
_loadPDF();
}
_loadPDF() async {
final dir = await getApplicationDocumentsDirectory();
final file = File('${
dir.path}/sample.pdf');
setState(() {
localFilePath = file.path;
});
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('PDF