Flutter电子书渲染插件epubrender的使用

Flutter电子书渲染插件epubrender的使用

epub_view

Pure flutter widget (非原生)用于在所有平台上查看EPUB文档。基于epub包。使用flutter小部件(而不是原生视图)在任何平台上呈现:WebMacOsWindowsLinuxAndroidiOS

展示

展示

开始使用

在你的Flutter项目中添加依赖:

flutter pub add epubrender

使用示例

import 'dart:typed_data';

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

late EpubController _epubController;

@override
void initState() {
  super.initState();
  _epubController = EpubController(
    // 加载文档
    document: EpubDocument.openAsset('assets/book.epub'),
    // 设置起始点
    epubCfi: 'epubcfi(/6/6[chapter-2]!/4/2/1612)',
  );
}

@override
Widget build(BuildContext context) => Scaffold(
  // 显示EPUB文档
  body: EpubView(
    url: 'example.com/file.epub',
  ),
);

如何从上次阅读位置开始?

此方法允许你即使在章节内部也能保持精确的阅读位置:

_epubController = EpubController(
  // 使用EPUB CFI字符串初始化以从上次位置打开书籍
  epubCfi: 'epubcfi(/6/6[chapter-2]!/4/2/1612)',
);

// 添加控制器
EpubView(
  controller: _epubController,
);

// 获取EPUB CFI字符串
// 例如输出 - epubcfi(/6/6[chapter-2]!/4/2/1612)
final cfi = _epubController.generateEpubCfi();

// 或者使用控制器进行导航
_epubController.gotoEpubCfi('epubcfi(/6/6[chapter-2]!/4/2/1612)');

API

打开文档
本地文档打开:
EpubDocument.openAsset('assets/sample.pdf')

EpubDocument.openData(FutureOr<Uint8List> data)

// 不支持在Web上
EpubDocument.openFile('path/to/file/on/device')
网络文档打开:

安装internet_file包(支持所有平台):

flutter pub add internet_file

然后使用它:

import 'package:internet_file/internet_file.dart';

// 需要服务器上的CORS策略。
// 您可以提高您的CORS代理。
EpubDocument.openData(InternetFile.get('https://link.to/book.epub'))
控制文档
// 获取实际视图插入的EPUB CFI字符串
// 例如输出 - epubcfi(/6/6[chapter-2]!/4/2/1612)
final cfi = _epubController.generateEpubCfi();

// 导航到文档中的段落
_epubController.gotoEpubCfi('epubcfi(/6/6[chapter-2]!/4/2/1612)');
文档回调
EpubView(
  controller: epubController,
  
  onExternalLinkPressed: (href) {},

  onDocumentLoaded: (document) {},
  onChapterChanged: (chapter) {},
  onDocumentError: (error) {},
);

更多关于Flutter电子书渲染插件epubrender的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter电子书渲染插件epubrender的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


epubrender 是一个用于在 Flutter 应用中渲染和显示 EPUB 电子书的插件。它允许你加载和展示 EPUB 文件,并提供基本的阅读功能,如翻页、缩放、书签等。以下是如何在 Flutter 项目中使用 epubrender 插件的简要指南。

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加 epubrender 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  epubrender: ^0.0.1 # 使用最新版本

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

2. 加载和渲染 EPUB 文件

接下来,你可以在你的 Flutter 应用中加载和渲染 EPUB 文件。以下是一个简单的示例:

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

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

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

class EpubReaderScreen extends StatefulWidget {
  @override
  _EpubReaderScreenState createState() => _EpubReaderScreenState();
}

class _EpubReaderScreenState extends State<EpubReaderScreen> {
  EpubController _epubController;

  @override
  void initState() {
    super.initState();
    _loadEpub();
  }

  Future<void> _loadEpub() async {
    _epubController = EpubController(
      document: EpubDocument.openAsset('assets/book.epub'),
    );
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('EPUB Reader'),
      ),
      body: _epubController != null
          ? EpubReader(
              controller: _epubController,
            )
          : Center(
              child: CircularProgressIndicator(),
            ),
    );
  }
}

3. 添加 EPUB 文件到项目中

将你的 EPUB 文件放在 assets 文件夹中,并在 pubspec.yaml 文件中声明它:

flutter:
  assets:
    - assets/book.epub
回到顶部