如何在 [颤振] 中打开 PDF 或 Word 文档



>问题很简单,我想使用 Flutter 通过默认应用程序打开任何 pdf 或文档文件。

想想一个与我的 pdf 资产相关的凸起按钮,当用户按下它时,pdf 将通过 Acrobat 阅读器等打开。我不想为此使用任何web_view。

在 Flutter 中是否支持它?

一个好的和简单的方法是open_file包,它允许您打开具有给定路径的文件。它支持许多不同的文件类型。

2022 年 7 月更新:

由于open_file包在清单中具有一些不再允许用于应用商店上传的权限,因此此 (open_filex( 包的分支已删除此权限。用法相同:

import 'package:open_filex/open_filex.dart';
OpenFile.open("/sdcard/example.pdf");

您可以通过在网络浏览器中打开谷歌文档来做到这一点:

在pubspec.yaml中,您需要:

url_launcher: ^0.4.2+5

包括:

import 'package:flutter/src/gestures/tap.dart';
import 'package:url_launcher/url_launcher.dart';

代码片段:

new RichText(
  text: new LinkTextSpan(
      url: 'http://docs.google.com/viewer?url=http://www.pdf995.com/samples/pdf.pdf',
      text: 'Show My Pdf'),
),

链接文本跨度类:

class LinkTextSpan extends TextSpan {
  LinkTextSpan({TextStyle style, String url, String text})
      : super(
      style: style,
      text: text ?? url,
      recognizer: new TapGestureRecognizer()
        ..onTap = () {
          launch(url);
        });
}

无需下载文件,使用包从 URL 打开: url_launcher

import 'package:url_launcher/url_launcher.dart';
_launchURL() async {
  const url = 'https://flutter.dev/exapmle.pdf';
  if (await canLaunch(url)) {
    await launch(url);
  } else {
    throw 'Could not launch $url';
  }
}

您可以使用url_launcher包。只需将文档的path作为参数传递给 launch(( 方法即可。

您可以使用

[ flutter_full_pdf_viewer 1.0.6 ] 依赖

class EmployeeViewModel {
  EmployeeModel _employeeModel = EmployeeModel();
   String fname;   
                                                                                                                              void downloadFile(BuildContext context, String fileUrl, String fileName, ProgressListener listener) async {
    String _filePath = '';
    if (Platform.isAndroid) {
      String _directory = await ExtStorage.getExternalStoragePublicDirectory(ExtStorage.DIRECTORY_DOWNLOADS);
      print(_directory);
      _filePath = '$_directory/$fileName';
      //todo getting file name here
      print("file name" + fileName);
      fname = fileName;
      print("file fname" + fname);
      //APIKey.FILE_NAME: fileName;
    } else if (Platform.isIOS) {
      Directory _directory = await getApplicationDocumentsDirectory();
      _filePath = '${_directory.path}/$fileName';
      print("file name" + fileName);
      //log(fileName);
      debugPrint(_directory.path);
      print("directory path" + _directory.path);
    }
    var response = await Dio().downloadUri(Uri().resolve(fileUrl), _filePath);
    if (response.statusCode == 200) {
      listener.isProcessing(false);
      AlertMessageDialog(context,  UtilString.downloadCompleted, UtilString.downloadCompletedMessage, UtilString.open, AlertMessageDialogActionHandler());
    } else {
      listener.isProcessing(false);
      UtilAction.showSnackBar(context, response.statusMessage);
    }
  }                                                                                                  class AlertMessageDialogActionHandler implements AlertMessageDialogListener {
  @override
  Future<void> onPositiveButtonClick() async {
    String _filePath = '';
    String fileName;
    String _directory = await ExtStorage.getExternalStoragePublicDirectory(ExtStorage.DIRECTORY_DOWNLOADS);
    //todo geeting right directory path here
    print("directory" + _directory);
    _filePath = '$_directory/$fileName';
    print("file path" + _filePath);
   // print("filename" + fileName);
    OpenFile.open("/storage/emulated/0/Download/GA55-Estimated-SHRIGOPAL-VERMA-2020-2021.pdf");  }}

相关内容

  • 没有找到相关文章

最新更新