Skip to content

Love Iwara (i-iwara or 2i). An unofficial iwara flutter app - Supporting multiple platforms and devices including mobile phones, tablets and computers. Compatible with Android, Windows and other systems. 第三方的Iwara应用 - 支持多个平台和设备,包括手机、平板和计算机。兼容 安卓、IOS、Windows、MacOS等系统。

License

Notifications You must be signed in to change notification settings

FoxSensei001/LoveIwara

Repository files navigation

Love Iwara logo

Love Iwara (2i)

Telegram Group GitHub stars GitHub forks License: MIT GitHub issues

English | 中文


English

🌟 Introduction

Love Iwara (also known as i_iwara or 2i) is a third-party mobile application for Iwara built with Flutter. Our goal is to provide users with an excellent experience, supporting multiple platforms and devices including mobile phones, tablets and computers, compatible with Android, Windows, macOS, Linux, and iOS operating systems.

⚠️ Project Description

As a Flutter beginner, this is my first attempt at developing a cross-platform application. While there may be areas in the project that need improvement and code that could be optimized, the main purpose is to learn and understand Flutter development through hands-on practice.

  • Learning Objectives

    • Familiarize with Flutter development basics
    • Understand cross-platform application development processes
    • Document insights and experiences during the learning process
  • Project Status

    • Currently in the learning and exploration phase
    • Code may not be sufficiently standardized and complete
    • Feature implementation primarily focuses on learning purposes
  • Usage Notes

    • This project is for learning reference only
    • Not recommended for production environment
    • Welcome discussions with other learners
  • Usage Restrictions

    • Strictly prohibited from promotion on any platform
    • Violations will result in measures including but not limited to maintenance suspension and repository deletion
  • Known Issues

    • Due to limited experience, the project may have room for performance optimization
    • Some features may not be fully developed
    • On Android, Impeller rendering has been disabled due to severe performance issues. This might pose a hidden risk for future updates, and the root cause is currently unknown. To re-enable Impeller, you can add <meta-data android:name="flutter.embedding.android.EnableImpeller" android:value="true" /> within the <application> tag in android/app/src/main/AndroidManifest.xml. If you have insights or solutions, please feel free to submit a PR, open an Issues, or discuss it in the Communication Group.
    • Suggestions for improvement are welcome

Thank you for your understanding and support! If you're also a Flutter beginner, I hope we can progress together in our learning journey.

✨ Features

Current Features

  • 🖥️ Supported Platforms

    • 📱 Android
    • 🪟 Windows
    • 🍎 MacOS
    • 🐧 Linux (Due to lack of Linux device, testing unavailable)
    • 📱 iOS (Due to lack of iOS device, testing unavailable)
  • 🔍 Search

    • Search videos/galleries/posts/users/forums
  • 📜 History

    • Browsing history: videos/galleries/posts/forums
  • 📜 Local Favorite

    • Favorite folder
    • Local favorite
  • 🔍 Download (Test Version)

    • Download videos/galleries/single files
  • 🔄 Translation

    • Translate video descriptions/gallery descriptions/posts/comments/forums/conversations, etc.
  • 🎥 Video

    • Video playback
    • Video tags
    • Video quality selection
    • Playback speed control
    • Fullscreen support
    • Desktop support for drag-and-drop video files to play directly
  • 🖼️ Gallery

    • Image browsing
    • Image zoom and pan
    • Gallery view
  • 📝 Posts

    • Browse/comment
  • 🗣️ Forum System

    • Publish/edit posts
    • Publish/edit replies
  • 📜 Comments

    • Comment browsing
    • Comment reply
  • 📜 Local Favorite

    • Favorite folder
    • Local favorite
  • 📩 Private Messages

    • Private message browsing
    • Private message reply
  • 🔔 In-app Message Notifications

    • Message notification browsing
    • Message notification reply
  • 👤 User System

    • User authentication
    • Profile management
    • Following system
  • 🔗 Share

    • Share video/gallery/post/thread/user
    • Android app jump (Only Android, other apps will jump to the app to continue browsing when trying to open the link)
  • 🌍 Multi-language Support

    • English
    • Simplified Chinese
    • Traditional Chinese
    • Japanese
  • 🔍 More features to be discovered

Upcoming Features

  • Temporary no new features planned, you can submit your ideas in the Issues or Communication Group
  • Enhanced User Experience
  • Others

📱 Communication Group

Join our community on Telegram: Click here to join the communication group.

📱 Screenshots

🛠️ Development Environment Setup

Prerequisites

  • Flutter SDK (Latest stable version recommended)
  • Dart SDK
  • Git
  • Recommended IDEs:
    • Android Studio / Cursor
    • VS Code / Cursor + Flutter plugin
  • Check the pubspec.yaml for more dependencies. Some of them needs to run some magic commonds to prepare your environment.

Platform-Specific Requirements

Windows Development Environment:

  • Windows 10 or higher (64-bit)
  • Visual Studio 2022 or newer
  • Windows 10 SDK
# Check Windows development environment
flutter doctor -v

macOS Development Environment:

  • macOS (latest version recommended)
  • Xcode (latest version)
  • CocoaPods
# Install CocoaPods
sudo gem install cocoapods

Linux Development Environment:

# Ubuntu/Debian
sudo apt-get install clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev

# Fedora
sudo dnf install clang cmake ninja-build gtk3-devel

Android Development Environment:

  • Android Studio
  • Android SDK
  • Android emulator or physical device

iOS Development Environment:

  • Xcode
  • iOS simulator or physical device
  • Apple Developer account (required for publishing)

Project Setup

# 1. Clone repository
git clone [repository address]
cd [project directory]

# 2. Check Flutter environment
flutter doctor

# 3. Get dependencies
flutter pub get

# 4. Start development
# Run on default device
flutter run

# Run on specific platform
flutter run -d windows  # Windows
flutter run -d macos   # macOS
flutter run -d linux   # Linux

flutter run -d android # Android
flutter run -d ios     # iOS

# 5. Build release version
# Android
flutter build apk --release
flutter build appbundle --release

# iOS
flutter build ios --release

# Windows
flutter build windows --release

# macOS
flutter build macos --release

# Linux
flutter build linux --release

Common Development Commands

# Generate internationalization text
dart run slang

# Clean build cache
flutter clean

# Update Flutter SDK
flutter upgrade

# Analyze code
flutter analyze

# Run tests
flutter test

# View connected devices
flutter devices

# Create new page/component
flutter create component_name

Notes

  1. Ensure proper configuration of development environments for each platform
  2. iOS development requires macOS system
  3. Regularly update Flutter SDK and dependencies
  4. Use .gitignore to exclude unnecessary files
  5. Follow Flutter official best practices guide

Common Problem Solutions

# Dependency conflict resolution
flutter pub cache repair
flutter clean
flutter pub get

# Emulator issues
flutter emulators
flutter emulators --launch <emulator_id>

# Development tool reset
flutter config --clear-features

These settings cover the main aspects of Flutter cross-platform development. Depending on specific project requirements, additional configuration or tools may be needed. It's recommended to regularly check Flutter official documentation for the latest development guides and best practices.

🌍 Internationalization

Currently, the project's internationalization text is mainly generated by GPT. If you're willing to help improve translations, please refer to the Simplified Chinese template file: lib/i18n/zh-CN.i18n.yaml.

💬 Feedback and Suggestions

If you have any suggestions or find any bugs, feel free to submit feedback in the project's issues section.

🙏 Acknowledgments

Special Thanks to These Amazing Projects

The development of this project was inspired by the following excellent projects. Many implementation methods and best practices were learned from these repositories.

iwrqk/iwrqk
iwrqk/iwrqk
Excellent Flutter-implemented Iwara client
wgh136/PicaComic
wgh136/PicaComic
Well-structured Flutter comic application

Contributors

Thanks to all the developers who have contributed to this project!

Made with contrib.rocks

🤝 Contributing

Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.

Before reporting a new issue, take a look at the already opened issues; if you have any questions, join our Telegram group.

⚠️ Disclaimer

The developer(s) of this application does not have any affiliation with Iwara or its content providers, and this application hosts zero content.

Android Signing Configuration

Before building the Android version, you need to configure the correct signing information to generate the official release APK. Please follow these steps:

  1. Generate keystore file

    Open terminal in the project's android/app directory and execute the following command (please replace <your_key_alias> and other parameters with your own information):

    keytool -genkeypair -v -keystore keystore.jks -alias <your_key_alias> -keyalg RSA -keysize 2048 -validity 10000

    This command will generate a file named keystore.jks in the current directory. Please ensure this file is located in the android/app directory.

  2. Configure signing information

    Please check the signing configuration in the android/app/build.gradle file to ensure it's configured as follows:

    signingConfigs {
        release {
            storeFile file("keystore.jks")
            storePassword System.getenv("KEYSTORE_PASSWORD") ?: project.findProperty("MY_KEYSTORE_PASSWORD")
            keyAlias System.getenv("KEY_ALIAS") ?: project.findProperty("MY_KEY_ALIAS")
            keyPassword System.getenv("KEY_PASSWORD") ?: project.findProperty("MY_KEY_PASSWORD")
        }
    }

    At the same time, ensure the following placeholders are included in the android/gradle.properties file:

    MY_KEYSTORE_PASSWORD=${KEYSTORE_PASSWORD}
    MY_KEY_ALIAS=${KEY_ALIAS}
    MY_KEY_PASSWORD=${KEY_PASSWORD}

    This ensures that signing information can be injected through system environment variables, or configured directly with actual values locally (recommended only for debugging environments).

  3. GitHub Actions Configuration

    To automatically build signed APKs on GitHub Actions, the following preparations are needed:

    • Convert the keystore.jks file to a Base64-encoded string, then add a Secret in the repository's Secrets (for example, named KEYSTORE_BASE64).
    • At the same time, add the following entries in the repository Secrets:
      • KEYSTORE_PASSWORD (your keystore password)
      • KEY_ALIAS (alias used for signing)
      • KEY_PASSWORD (your key password)

    In the workflow file (such as .github/workflows/build.yml), configure environment variables and restore keystore file steps as shown in the following example:

    env:
      KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
      KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
      KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
    
    steps:
      - name: Setup Keystore
        run: |
          echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 --decode > android/app/keystore.jks
        shell: bash
  4. Build Command

    After configuration is complete, execute in the project root directory:

    flutter build apk --release

    After successful build, the generated APK will be located at build/app/outputs/flutter-apk/app-release.apk.

After following the above steps for configuration, you can generate and use signed Android APKs for publishing or subsequent overlay installations.

About

Love Iwara (i-iwara or 2i). An unofficial iwara flutter app - Supporting multiple platforms and devices including mobile phones, tablets and computers. Compatible with Android, Windows and other systems. 第三方的Iwara应用 - 支持多个平台和设备,包括手机、平板和计算机。兼容 安卓、IOS、Windows、MacOS等系统。

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published