【Flutter】flutter加载PDF文件-flutter_pdfview

  1. 添加依赖
    在 pubspec.yaml 文件中添加 flutter_pdfview 依赖:

yaml

dependencies:
  flutter:
    sdk: flutter
  flutter_pdfview: ^1.3.2

然后运行 flutter pub get 以安装依赖包。

  1. 导入包
    在你要使用 PDF 查看器的 Dart 文件中导入该包:

dart
复制代码

import 'package:flutter_pdfview/flutter_pdfview.dart';
  1. 显示 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()}');
        },
      ),
    );
  }
}
  1. 权限处理(如果需要)
    如果你需要从设备存储中加载 PDF,请确保应用具有必要的权限。你可能需要使用 permission_handler 包来请求和检查存储权限。

  2. 示例用法
    下面是一个完整的示例,展示如何集成和使用 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
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值