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

Weu*_*eud 15 mobile android ios flutter

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

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

Flutter支持吗?

Roc*_*ole 9

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

在pubspec.yaml中,您需要:

url_launcher: ^0.4.2+5
Run Code Online (Sandbox Code Playgroud)

包括:

import 'package:flutter/src/gestures/tap.dart';
import 'package:url_launcher/url_launcher.dart';
Run Code Online (Sandbox Code Playgroud)

程式码片段:

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

LinkTextSpan类:

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

  • 这不适用于 FirebaseStorage url。我将读取权限设置为 true 并写入 auth != null。任何想法? (3认同)

Bos*_*rot 7

一个好简单的方法是open_file包,它使您可以使用给定的路径打开文件。它支持多种不同的文件类型:

import 'package:open_file/open_file.dart';

OpenFile.open("/sdcard/example.pdf");
Run Code Online (Sandbox Code Playgroud)


Zee*_*ari 6

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

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';
  }
}
Run Code Online (Sandbox Code Playgroud)


eas*_*ccy 4

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