Flutter Reader is an open-source eBook reading application built using Flutter. It aims to provide a feature-rich and seamless reading experience, similar to popular eBook platforms like WeChat Reader. The app is designed to be highly customizable and scalable for various use cases.
- Beautiful Book Display: Showcase books with modern UI designs.
- Customizable Reading Experience: Adjustable font size, line spacing, and themes (including night mode).
- Progress Tracking: Automatically save and sync reading progress.
- Bookmarks and Highlights: Add, view, and manage bookmarks and highlights.
- Online & Offline Reading: Supports downloading books for offline reading.
- Search & Filtering: Search through books and filter by categories or tags.
- Cloud Sync: Sync reading data across devices (optional).
- Audio Support: Listen to books with Text-to-Speech (TTS) functionality.
- Social Features: Share book recommendations and reviews.
- Flutter SDK: Ensure you have Flutter installed. You can download it from Flutter's official website.
- Dart SDK: Included with Flutter.
-
Clone the repository:
git clone https://github.com/orz-ai/flutter_reader.git cd flutter_reader
-
Install dependencies:
flutter pub get
-
Run the application:
flutter run
- Android
- iOS
- Web (Experimental)
flutter_reader/
├── android/ # Android project
├── ios/ # iOS project
├── lib/ # Core code
│ ├── app/ # Main app module
│ │ ├── base/ # Base module
│ │ │ ├── controller/ # Base logic handlers
│ │ │ ├── model/ # Base data structures
│ │ ├── middleware/ # Route middleware
│ │ ├── modules/ # Feature modules
│ │ │ ├── bindings/ # Dependency bindings
│ │ │ ├── controllers/ # Module logic handlers
│ │ │ ├── model/ # Request and response models
│ │ │ ├── views/ # Module UI pages
│ │ │ ├── widget/ # Module-specific widgets
│ │ │ └── index # Module entry point
│ │ ├── routes/ # Route definitions
│ ├── common/ # Common utilities and extensions
│ │ ├── extensions/ # Extension methods
│ │ ├── lang/ # Language support
│ │ ├── utils/ # Utility classes
│ │ ├── values/ # Constant values
│ ├── http/ # Network layer with Dio
│ │ ├── entity/ # Base data structures
│ │ ├── interceptor/ # Interceptors
│ ├── widget/ # Common reusable widgets
│ ├── global/ # Third-party SDK initialization and global configuration
│ ├── initial_binding/ # Global dependency initialization
│ ├── main.dart # Entry point
├── pubspec.yaml # Dependency configuration
Key packages used in this project:
- State Management: Riverpod / Bloc
- Networking: Dio
- Local Storage: Hive
- UI Components: flutter_screenutil, animations
- Text-to-Speech: flutter_tts
We welcome contributions! Please follow these steps to contribute:
- Fork the repository.
- Create a new branch:
git checkout -b feature/your-feature-name
- Commit your changes:
git commit -m "Add your feature description"
- Push to the branch:
git push origin feature/your-feature-name
- Open a pull request.
This project is licensed under the MIT License - see the LICENSE file for details.
For any inquiries or suggestions, feel free to reach out:
- Email: [email protected]
- GitHub Issues: Create an issue
Happy Reading with Flutter Reader! 📚