Flutter文档或内容查看插件dd_viewer的使用

Flutter文档或内容查看插件dd_viewer的使用

dd_viewer

dd_viewer 是一个通用的预览设备,用于预览PDF、Word、Excel、文本、PNG和JPG文件。

该插件提供了一个办公预览套件,支持预览PDF、Excel、Word等类型的文件。它不依赖于腾讯TBS。

Android

android/build.gradle 中添加以下代码:

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

iOS

请在 Podfile 文件中设置最低版本为12:

platform :ios, '12.0'

config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'

举个例子:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
    target.build_configurations.each do |config|
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
    end
  end
end

打开Excel文件

DdViewerApi().openXlsFile(FileX.netWork(url: 'http://host:port/wd/excel.xls'));

使用

dd_viewer 支持打开网络文件和本地文件。网络文件将使用 dio 下载到本地缓存目录。

file: FileX.netWork(); // 网络文件
file: FileX.file(); // 本地文件
file: FileX.path(); // 文件路径

完整例子

import 'package:dd_viewer/dd_viewer.dart';
import 'package:dd_viewer/model/filex.dart';
import 'package:flutter/material.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {

  final pdfUrl = "http://host:port/wd/pdf.pdf";
  final excUrl = "http://host:port/wd/excel.xls";
  final docUrl = "http://host:port/wd/文档.docx";
  final jpg = 'http://host:port/wd/3.jpg';
  final png = 'http://host:port/wd/2.png';
  final jpeg = 'http://host:port/wd/1.jpeg';

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('超级视图'),
        ),
        body: GridView.count(
          crossAxisCount: 2,
          children: [
            SuperView(file: FileX.netWork(url: docUrl)),
            SuperView(file: FileX.netWork(url: excUrl)),
            SuperView(file: FileX.netWork(url: pdfUrl)),

            SuperView(file: FileX.netWork(url: jpg)),
            SuperView(file: FileX.netWork(url: png)),
            SuperView(file: FileX.netWork(url: jpeg)),
          ],
        ),
      ),
    );
  }
}

示例代码

import 'package:dd_viewer/dd_viewer.dart';
import 'package:dd_viewer/model/filex.dart';
import 'package:flutter/material.dart';
import 'package:path/path.dart' as path;

import 'doc.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {

  final pdfUrl = "http://ip:port/wd/pdf.pdf";
  final excUrl = "http://ip:port/wd/excel.xls";
  final docUrl = "http://ip:port/wd/文档.docx";
  final jpg = 'http://ip:port/wd/3.jpg';
  final png = 'http://ip:port/wd/2.png';
  final jpeg = 'http://ip:port/wd/1.jpeg';

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('超级视图'),
          actions: [
            Builder(
              builder: (c) {
                return FilledButton.tonal(
                  onPressed: () {
                    Navigator.push(c, MaterialPageRoute(builder: (_) => const DocView()));
                  },
                  child: const Text('doc页面测试'),
                );
              }
            )
          ],
        ),
        body: GridView.count(
          crossAxisCount: 2,
          children: [
            SuperView(file: FileX.netWork(url: docUrl)),
            FilledButton(
              onPressed: () {
                DdViewerApi().openXlsFile(FileX.netWork(url: 'http://ip:port/wd/excel.xls'));
              },
              child: const Text('打开xls'),
            ),
            SuperView(file: FileX.netWork(url: pdfUrl)),

            SuperView(file: FileX.netWork(url: jpg)),
            SuperView(file: FileX.netWork(url: png)),
            SuperView(file: FileX.netWork(url: jpeg)),
          ],
        ),
      ),
    );
  }

  void isXlsFile() {
    final fileType = getFileType('http://ip:port/wd/excel.xls');
    if (fileType == SupportFile.xls) {
      DdViewerApi().openXlsFile(FileX.netWork(url: 'http://ip:port/wd/excel.xls'));
    }
  }

  SupportFile getFileType(String url) {
    final ex = path.extension(url);
    switch (ex) {
      case '.xls':
        return SupportFile.xls;
      case '.pdf':
        return SupportFile.pdf;
      case '.docx':
        return SupportFile.word;
      case '.jpg':
        return SupportFile.img;
      case '.png':
        return SupportFile.img;
      case '.jpeg':
        return SupportFile.img;
      default:
        return SupportFile.noSupport;
    }
  }
}

更多关于Flutter文档或内容查看插件dd_viewer的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter文档或内容查看插件dd_viewer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用dd_viewer插件来查看文档或内容的示例代码。dd_viewer插件可能不是官方广泛认可的插件名称,但假设它是一个自定义或第三方插件,用于在Flutter应用中查看文档或内容。以下示例代码展示了如何集成和使用一个假设的dd_viewer插件。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加dd_viewer插件的依赖。请注意,这里的插件名称是假设的,你需要替换为实际的插件名称。

dependencies:
  flutter:
    sdk: flutter
  dd_viewer: ^x.y.z  # 替换为实际的版本号

然后运行flutter pub get来获取依赖。

2. 导入插件

在你的Dart文件中导入dd_viewer插件。

import 'package:dd_viewer/dd_viewer.dart';

3. 使用插件

下面是一个简单的例子,展示如何在Flutter应用中使用dd_viewer插件来查看一个文档文件(比如PDF)。

import 'package:flutter/material.dart';
import 'package:dd_viewer/dd_viewer.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'DD Viewer Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: DocumentViewerScreen(),
    );
  }
}

class DocumentViewerScreen extends StatefulWidget {
  @override
  _DocumentViewerScreenState createState() => _DocumentViewerScreenState();
}

class _DocumentViewerScreenState extends State<DocumentViewerScreen> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Document Viewer'),
      ),
      body: Center(
        child: DDViewer.fromAsset(
          'assets/sample.pdf',  // 替换为你的文档文件路径
          pageNumbers: true,
          zoom: true,
          autoSpacing: true,
          nightMode: false,
        ),
      ),
    );
  }
}

4. 添加资产文件

确保你的文档文件(例如PDF)已经放置在assets文件夹中,并在pubspec.yaml文件中声明它:

flutter:
  assets:
    - assets/sample.pdf

5. 运行应用

现在,你可以运行你的Flutter应用,应该能够看到一个使用dd_viewer插件显示的文档查看器。

注意事项

  • 插件的实际API可能会有所不同,请参考插件的官方文档或源代码以获取准确的API使用方式。
  • 如果dd_viewer插件不存在或不支持你需要的文档格式,你可能需要寻找其他插件或实现自定义的文档查看器。
  • 确保文档文件的路径和格式正确,否则可能会导致加载失败。

希望这个示例代码能帮助你开始使用dd_viewer插件来查看文档或内容。如果你有更具体的需求或遇到问题,请查阅插件的官方文档或寻求进一步的帮助。

回到顶部