Flutter PDF阅读插件pdf_viewer_flutter的使用
Flutter PDF阅读插件pdf_viewer_flutter的使用
1. 安装
在你的项目pubspec.yaml
文件中添加以下依赖:
dependencies:
pdf_viewer_flutter: ^1.0.2
path_provider: any
然后在终端运行以下命令以安装依赖项:
flutter pub get
或者直接在项目内运行以下命令并按回车键:
flutter pub add pdf_viewer_flutter
flutter pub add path_provider
2. 配置Android发布版本
首先,你需要遵循这些步骤:部署到Android
之后,你需要在release
配置中添加NDK过滤器:
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
ndk {
abiFilters 'armeabi-v7a'
}
}
debug {
minifyEnabled false
useProguard false
}
}
3. 使用
以下是完整的示例代码,展示了如何在Flutter应用中使用pdf_viewer_flutter
插件来显示PDF文件。
import 'dart:async';
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'package:pdf_viewer_flutter/pdf_viewer_flutter.dart';
void main() {
runApp(MaterialApp(
title: 'PDF Viewer for Flutter',
home: MyApp(),
));
}
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => new _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _pefFilePath = "";
[@override](/user/override)
void initState() {
super.initState();
createFileOfPdfUrl().then((file) {
setState(() {
_pefFilePath = file.path;
print(_pefFilePath);
});
});
}
Future<File> createFileOfPdfUrl() async {
final url =
"https://github.com/contactlutforrahman/files/blob/main/pdf_viewer.pdf";
final filename = url.substring(url.lastIndexOf("/") + 1);
var request = await HttpClient().getUrl(Uri.parse(url));
var response = await request.close();
var bytes = await consolidateHttpClientResponseBytes(response);
String dir = (await getApplicationDocumentsDirectory()).path;
File file = new File('$dir/$filename');
await file.writeAsBytes(bytes);
return file;
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('PDF Viewer for Flutter')),
body: Center(
child: ElevatedButton(
child: Text("Open a PDF file"),
onPressed: () => Navigator.push(
context,
MaterialPageRoute(
builder: (context) => PDFViewerScreen(_pefFilePath)),
),
),
),
);
}
}
class PDFViewerScreen extends StatelessWidget {
final String? pefFilePath;
PDFViewerScreen(this.pefFilePath);
[@override](/user/override)
Widget build(BuildContext context) {
return PDFViewerScaffold(
appBar: AppBar(
title: Text("PDF Document"),
actions: <Widget>[
IconButton(
icon: Icon(Icons.share),
onPressed: () {},
),
],
),
path: pefFilePath);
}
}
更多关于Flutter PDF阅读插件pdf_viewer_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter PDF阅读插件pdf_viewer_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用pdf_viewer_flutter
插件来展示PDF文件的示例代码。
1. 添加依赖
首先,你需要在pubspec.yaml
文件中添加pdf_viewer_flutter
的依赖。
dependencies:
flutter:
sdk: flutter
pdf_viewer_flutter: ^3.2.0 # 请检查最新版本号
2. 导入插件
在你的Dart文件中(例如main.dart
),导入pdf_viewer_flutter
插件。
import 'package:flutter/material.dart';
import 'package:pdf_viewer_flutter/pdf_viewer_flutter.dart';
import 'package:path_provider/path_provider.dart';
3. 获取本地PDF文件路径(如果需要从本地加载)
如果你需要从本地文件系统加载PDF文件,可以使用path_provider
插件来获取应用的文档目录路径。
Future<String> getLocalPdfPath() async {
final directory = await getApplicationDocumentsDirectory();
final path = directory.path + '/sample.pdf'; // 假设你的PDF文件名为sample.pdf
// 这里你可以复制你的PDF文件到该路径,或者从网络下载并保存
return path;
}
4. 使用PDFViewerWidget展示PDF
下面是一个完整的示例,展示了如何使用PDFViewerWidget
来展示PDF文件。
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter PDF Viewer Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
late String pdfPath;
@override
void initState() {
super.initState();
// 初始化PDF文件路径,这里我们从本地获取
_initPdfPath();
}
Future<void> _initPdfPath() async {
String path = await getLocalPdfPath();
setState(() {
pdfPath = path;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('PDF Viewer Demo'),
),
body: pdfPath.isEmpty
? Center(child: CircularProgressIndicator()) // 如果路径未初始化,显示加载指示器
: PDFViewerWidget(
pdfAssetPath: pdfPath,
autoSpacing: true,
pageFling: true,
pageSnap: true,
nightMode: false,
defaultPage: 0,
enableSwipe: true,
autoPlay: false,
swipeHorizontal: true,
pageCurl: 0.2,
onError: (error) {
print("Error loading PDF: $error");
},
onPageChanged: (page, pageCount) {
print("Page $page of $pageCount");
},
onPageError: (page, error) {
print("Error loading page $page: $error");
},
onLoad: (pageCount) {
print("PDF loaded with $pageCount pages");
},
),
);
}
}
注意事项
-
PDF文件来源:你可以从本地加载PDF文件,也可以从网络下载并保存。如果PDF文件在远程服务器上,你需要先下载文件到本地(例如应用的文档目录),然后加载。
-
错误处理:示例中包含了简单的错误处理逻辑,你可以根据需要扩展。
-
插件配置:
PDFViewerWidget
提供了多种配置选项,如自动播放、页面间距、页面卷曲效果等,你可以根据需要进行调整。
通过上述步骤,你应该能够在Flutter应用中成功展示PDF文件。如果你有任何其他问题或需要进一步的帮助,请随时提问。