A Flutter-based visual novel language-learning game that blends interactive story content with Japanese study features.
- Story-driven visual novel experience rendered from bundled web assets (
assets/js,assets/css,assets/index.html) insideInAppWebView. - Multi-language app UI support:
- In-app purchase flow for premium unlock using
in_app_purchase. - Firebase initialization for analytics integration.
- Cross-platform Flutter project structure (
ios,android,macos,windows,linux,web).
- Flutter / Dart (
sdk: >=3.10.3 <4.0.0) - Riverpod + GoRouter
flutter_inappwebviewin_app_purchasefirebase_core,firebase_analyticsshared_preferences,url_launcher,window_manager
lib/main.dart: app bootstrap, orientation/window setup, Firebase init.lib/app.dart: root app widget, localization delegates, router setup.lib/presentation/screens/game_screen.dart: game webview host + purchase sheet UI.lib/services/subscription_service.dart: IAP querying, purchase/restore flow, premium state.assets/: web game content (JS engine, stories, graphics, audio, CSS/HTML).manage.sh: helper script for run/build tasks.
- Flutter SDK installed and in
PATH - Xcode (for iOS/macOS builds), Android Studio + SDK (for Android builds)
- Valid Firebase config files, create them at https://console.firebase.google.com/ and add them to the project.
flutter pub get
flutter runTo run on a specific device:
flutter devices
flutter run -d <device-id>Make executable once:
chmod +x manage.shBuild release artifacts:
./manage.sh build apk
./manage.sh build appbundle
./manage.sh build ipa
./manage.sh build macos- Service:
lib/services/subscription_service.dart - The purchase sheet fetches localized store price at runtime from product details.
- For real purchase testing, configure the same product in App Store Connect / Google Play Console and use sandbox/test accounts.
| Screenshot 1 | Screenshot 2 |
|---|---|