Skip to content

TesteurManiak/flutter_manga_reader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

65fe3c6 Β· Feb 17, 2025
Dec 18, 2024
May 14, 2024
Dec 17, 2024
Oct 27, 2024
Dec 18, 2024
Feb 17, 2025
Feb 13, 2025
Feb 17, 2025
May 14, 2024
May 17, 2024
Feb 17, 2025
Dec 18, 2024
Dec 17, 2024
Jul 28, 2023
Jul 28, 2023
Oct 27, 2024
Aug 1, 2023
Dec 18, 2024
Jul 21, 2023
May 6, 2024
Dec 17, 2024
Jul 21, 2023
Dec 18, 2024
Feb 17, 2025
Feb 17, 2025

Repository files navigation

Flutter Manga Reader icon

Flutter Manga Reader

melos

A cross-platform manga reader built with Flutter.

This app is a Flutter clone of Tachiyomi mainly to provide an iOS version of the app.

This project is still a work in progress.

Screenshots

WIP

Views Light Dark Pure Dark
Library
Explorer
Details
Reader
History

Supported sources

WIP

Source Supported
Asura Scans πŸ”΄
DragonTea πŸ”΄
EarlyManga πŸ”΄
MangaBat βœ…
MangaDex βœ…
Mangahere πŸ”΄
Mangairo βœ…
Mangakakalot βœ…
Manganato βœ…
Webtoons.com πŸ”΄

Features

WIP

  • Import manga & chapters from a Tachiyomi/Mihon backup
  • Global update of chapters
  • Webtoon and paginated manga reading
  • Download manga chapters for offline reading
  • Reading history
  • Language support for English and French
  • Light and dark themes
  • Pure Dark theme

Run the app

This project contains 3 flavors:

  • dev
  • staging
  • prod

To run the desired flavor either use the launch configuration in VSCode/Android Studio or use the following commands:

# Development
$ flutter run --flavor dev --target lib/main_dev.dart

# Staging
$ flutter run --flavor staging --target lib/main_staging.dart

# Production
$ flutter run --flavor prod --target lib/main_prod.dart

Working with Translations

This project relies on flutter_localizations and follows the official internationalization guide for Flutter.

Adding Strings

  1. To add a new localizable string, open the app_fr.arb file at lib/l10n/arb/app_fr.arb.
{
    "@@locale": "fr",
    "counterAppBarTitle": "Compteur"
}
  1. Then add a new key/value and description
{
    "@@locale": "fr",
    "counterAppBarTitle": "Compteur",
    "helloWorld": "Bonjour le monde"
}
  1. Generate the strings
$ flutter gen-l10n
  1. Use the new string
import 'package:flutter_manga_reader/core/core.dart';

@override
Widget build(BuildContext context) {
  final strings = context.strings;
  return Text(strings.helloWorld);
}

Adding Supported Locales

Update the CFBundleLocalizations array in the Info.plist at ios/Runner/Info.plist to include the new locale.

<key>CFBundleLocalizations</key>
<array>
    <string>en</string>
    <string>fr</string>
</array>

Adding Translations

  1. For each supported locale, add a new ARB file in lib/l10n/arb.
β”œβ”€β”€ l10n
β”‚   β”œβ”€β”€ arb
β”‚   β”‚   β”œβ”€β”€ app_en.arb
β”‚   β”‚   └── app_fr.arb
  1. Add the translated strings to each .arb file:

app_en.arb

{
    "@@locale": "en",
    "counterAppBarTitle": "Counter"
}

app_fr.arb

{
    "@@locale": "fr",
    "counterAppBarTitle": "Compteur"
}

Code generation

This project uses multiple code generation tools:

  • flutter_gen_runner: To generate type-safe access to assets
  • freezed: To reduce the boilerplate when writing override of toString, ==, hashCode and copyWith methods
  • go_router_builder: To generate type-safe routes
  • json_serializable: To generate type-safe JSON serialization/deserialization
  • theme_tailor: To reduce the boilerplate when writing ThemeExtensionss

All of these tools will generate code when running the following command:

$ dart run build_runner build

Generating Icons

This project uses flutter_launcher_icons to generate the app icons. To modify the icons follow these steps:

  1. Replace the icon.png file at assets/launcher_icons/icon.png with your own icon. And edit the options in pubspec.yaml how you see fit.

  2. Run the following command:

$ dart run flutter_launcher_icons

Generating Splash Screens

This project uses flutter_native_splash to generate the splash screens. To modify the splash screens follow these steps:

  1. Replace the splash.png file at assets/splash/splash.png with your own splash screen. And edit the options in pubspec.yaml how you see fit.

  2. Run the following command:

$ dart run flutter_native_splash:create

Download

You can download the nightly build from here.

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Credits

  • Tachiyomi: For providing the inspiration for this project
  • MangaDex: For providing the API used in this project

Disclaimer

The developer of this application does not have any affiliation with the content providers available.