E-Book Reader
Overview
The e_book_reader package provides a versatile and customizable e-book reading interface for Flutter applications. It supports features such as page scrolling, content loading, pull-to-refresh, and extensive customization options for the reading experience.
Features
- Customizable text styles (font size, font weight, font style, etc.)
- Adjustable reading modes (light/dark)
- Scroll position tracking
- Horizontal and vertical reading layouts
- Integrated pull-to-refresh functionality
Installation
To use this package, add e_book_reader as a dependency in your pubspec.yaml file:
dependencies:
flutter:
sdk: flutter
e_book_reader: ^1.0.0
Then, run flutter pub get to install the package.
Usage
Here is a step-by-step guide to using the e_book_reader package in your Flutter application.
import 'package:e_book_reader/e_book_reader.dart';
import 'package:e_book_reader/reader_controller.dart';
import 'package:e_book_reader/reader_pull_to_refresh.dart';
Basic Setup
Create a ReaderController and configure it in your widget:
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
final ReaderController _readerController = ReaderController();
@override
void initState() {
_readerController.load(longText);
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("E-Book Reader"),
),
body: ReaderContent(
controller: _readerController,
),
);
}
}
Add Scroll Listener
@override
void initState() {
_readerController.load(longText);
_readerController.addScrollListener(() {
print("Scroll Position: ${_readerController.scrollPosition}");
});
super.initState();
}
Customizing the Reader
You can customize various aspects of the reader using the ReaderController:
_readerController.setFontSize(18);
_readerController.setFontWeight(FontWeight.bold);
_readerController.setFontStyle(FontStyle.italic);
_readerController.setTextAlign(TextAlign.justify);
_readerController.setColor(Colors.black, Colors.white);
_readerController.setAxis(Axis.horizontal);
_readerController.setLineHeight(1.8);
_readerController.setPadding(EdgeInsets.all(16));
_readerController.setFontFamily("serif");
Pull-to-Refresh
To enable pull-to-refresh functionality, wrap the ReaderContent widget with ReaderPullToRefresh:
ReaderPullToRefresh(
onRefreshTop: () async {
// Handle top refresh
},
onRefreshBottom: () async {
// Handle bottom refresh
},
child: ReaderContent(
controller: _readerController,
),
)
API Summary
Method | Description |
---|---|
load(String text) | Loads the e-book text content |
setFontSize(int size) | Sets the font size |
setFontWeight(FontWeight weight) | Sets the font weight |
setFontStyle(FontStyle style) | Sets the font style |
setTextAlign(TextAlign align) | Sets the text alignment |
setColor(Color bgColor, Color fgColor) | Sets the background and foreground colors |
setAxis(Axis axis) | Sets the reading direction (vertical/horizontal) |
setLineHeight(double height) | Sets the line height |
setPadding(EdgeInsets padding) | Sets the padding around the text |
setFontFamily(String family) | Sets the font family |
scrollToRate(double rate) | Scrolls to a specific position based on rate |
scrollToPosition(double position) | Scrolls to a specific position |
scrollToPage(int page) | Scrolls to a specific page |