本地PDF阅读主要使用到以下两个插件:
flutter_pdfview:提供多种关于pdf文档的操作方法。详细请见:https://github.com/endigo/flutter_pdfview
path_provider:提供获取用户存储文件路径的方法。
主要的思路很简单;
1 读取assets中的pdf文档到内存中;
1.1 在assets文档中添加本地的pdf文档;
1.2 创建获取assets中文件的方法;
//提供方法获取pdf文档内容
Future<File> getfileFromAssets(String fileas) async {
try {
//获取file中的数据
var data = await rootBundle.load(fileas);
//将数据转为byte类型的数据
var byte = data.buffer.asUint8List();
//存储数据路径
var dir = await getApplicationDocumentsDirectory();
File file = File("${dir.path}/mypdf.pdf");
//将数据写入file中
File assetFile = await file.writeAsBytes(byte);
return assetFile;
} catch (e) {
print(e.toString());
}
}
2 使用插件中的方法读取pdf对应内容;
2.1 创建pdf展示界面,并提供翻页按键:
//具体的pdf页面的设置
class PdfPage extends StatefulWidget {
final String path;
const PdfPage({Key key, this.path}) : super(key: key);
@override
_PdfPageState createState() => _PdfPageState();
}
class _PdfPageState extends State<PdfPage> {
int totalpages = 0;
bool pdfready = false;
PDFViewController pdfviewController;
var _currentPage = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("my doc"),
),