How ming-qwq520/jmcomic-flutter works
JMComic-Flutter is a cross-platform Flutter manga client. Users discover or search works, open album details, then read online or download chapters for the offline bookshelf; the app also supports accounts, comments, favorites, sign-in, and personalization. The UI is organized around a navigation shell and shared state, with the JM protocol layer handling API transport and image/domain concerns. README-described capabilities are included where their source was not sampled; those links are intentionally limited to documented ownership rather than assumed call chains.
Main entry points: jm_api.dart API facade · root_page.dart Navigation shell · jm_client.dart Transport client · settings_page.dart Settings
Components 28
App experience
- Reader
lib/pages/reader/reader_page.dart - Home and week
lib/pages/home - Explore and search
lib/pages/explore - Album and comments
lib/pages/album - Downloads and local reader
lib/pages/download - Account features
lib/pages/user - Sign-in and blogs
lib/pages/sign - Settings
lib/pages/settings/settings_page.dart - Navigation shell
lib/shell/root_page.dart - App state
lib/state/app_state.dart
JM protocol
- API facade
lib/core/protocol/jm_api.dart - Transport client
lib/core/protocol/jm_client.dart - Domain config
lib/core/protocol/jm_domain.dart - Signing and crypto
lib/core/protocol/jm_crypto.dart - API models
lib/core/protocol/models.dart - Image unscrambling
lib/core/utils/scramble.dart
App services
- Download manager
lib/services/download_manager.dart - Image storage
lib/services/image_store.dart - Local preferences
lib/services/local_store.dart - Update service
lib/services/github_service.dart - App lock
lib/services/app_lock_service.dart - Storage and sharing
lib/services/storage_service.dart - Shortcut bridge
lib/services/widget_bridge.dart
Platform integration
- Android activity bridge
android/app/src/main/kotlin/com/ming/jmcomic/MainActivity.kt
Other components
- Reader user
- JM content service
- GitHub
- Platform biometrics
Connections 33
- Reader user → Navigation shell: opens app
- Navigation shell → Home and week: navigates
- Navigation shell → Explore and search: navigates
- Navigation shell → Downloads and local reader: navigates
- Navigation shell → Account features: navigates
- Navigation shell → Settings: navigates
- Home and week → API facade: requests recommendations
- Explore and search → API facade: searches catalog
- Album and comments → API facade: requests details and comments
- Reader → API facade: requests chapters and images
- Account features → API facade: requests account data
- Sign-in and blogs → API facade: requests sign-in and blogs
- API facade → Transport client: sends API requests
- Transport client → JM content service: exchanges data
- Transport client → Signing and crypto: signs and decrypts
- Transport client → Domain config: resolves service domains
- API facade → API models: uses models
- Downloads and local reader → Download manager: manages downloads
- Download manager → Transport client: downloads chapter images
- Download manager → Image storage: saves images
- Download manager → Image unscrambling: restores image order
- Downloads and local reader → Image storage: reads offline images
- Settings → App state: updates preferences
- App state → Local preferences: persists settings
- Settings → App lock: configures app lock
- App lock → Platform biometrics: requests authentication
- Settings → Update service: checks for updates
- Update service → GitHub: fetches release data
- Update service → Storage and sharing: hands off APK install
- Storage and sharing → Android activity bridge: calls storage methods
- Reader → Android activity bridge: controls reader platform features
- Navigation shell → Shortcut bridge: receives shortcut actions
- Shortcut bridge → Android activity bridge: exchanges shortcut events