An open API service indexing awesome lists of open source software.

https://github.com/FoxSensei001/LoveIwara

Unofficial iwara flutter app - Supporting multiple platforms and devices including mobile phones, tablets and computers. Compatible with Android, Windows and other systems.Iwara 非官方 Flutter 应用 - 支持多个平台和设备,包括手机、平板电脑和计算机。兼容 安卓、IOS、Windows、MacOS等系统。
https://github.com/FoxSensei001/LoveIwara

android flutter iwara multiscreen-apps windows

Last synced: 10 months ago
JSON representation

Unofficial iwara flutter app - Supporting multiple platforms and devices including mobile phones, tablets and computers. Compatible with Android, Windows and other systems.Iwara 非官方 Flutter 应用 - 支持多个平台和设备,包括手机、平板电脑和计算机。兼容 安卓、IOS、Windows、MacOS等系统。

Awesome Lists containing this project

README

          

# Love Iwara (2i)


Love Iwara Logo

[English](#english) | [中文](README_ZH.md)

---

## 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 and other 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 `` within the `` tag in `android/app/src/main/AndroidManifest.xml`. If you have insights or solutions, please feel free to submit a PR, open an [Issues](https://github.com/FoxSensei001/i_iwara/issues), or discuss it in the [Communication Group](https://t.me/+OtpMbe9DkjYzMGM1).
- 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 (Due to lack of Mac device, testing unavailable;)
- 🐧 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

- **🖼️ 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](https://github.com/FoxSensei001/i_iwara/issues) or [Communication Group](https://t.me/+OtpMbe9DkjYzMGM1)**
- **Enhanced User Experience**
- **Others**

### 📱 Communication Group
Click [here](https://t.me/+OtpMbe9DkjYzMGM1) 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](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
```bash
# Check Windows development environment
flutter doctor -v
```

**macOS Development Environment:**
- macOS (latest version recommended)
- Xcode (latest version)
- CocoaPods
```bash
# Install CocoaPods
sudo gem install cocoapods
```

**Linux Development Environment:**
```bash
# 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
```bash
# 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
```bash
# 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
```bash
# Dependency conflict resolution
flutter pub cache repair
flutter clean
flutter pub get

# Emulator issues
flutter emulators
flutter emulators --launch

# 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](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
The development of this project was inspired by the following excellent projects:

- [iwrqk/iwrqk](https://github.com/iwrqk/iwrqk) - Excellent Flutter-implemented Iwara client
- [wgh136/PicaComic](https://github.com/wgh136/PicaComic) - Well-structured Flutter comic application

Many implementation methods and best practices in the project were learned from these repositories.

## 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 `` and other parameters with your own information):
```bash
keytool -genkeypair -v -keystore keystore.jks -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:
```groovy
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:
```properties
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:
```yaml
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:
```bash
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.