Skip to content

johnh-harris/flutter_client

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,161 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Caution

The Fluxer Flutter mobile client is still in beta so features will be missing or broken. Currently the only way to report issues is on the Fluxer Mobile community (Plutonium members only), this will change in the future.

Note there is currently no set release date for the app.

Fluxer graphic logo

Donate Documentation AGPLv3 License Dart analyze

Fluxer Flutter Client

This is the repo for the official Fluxer mobile app powered by Flutter (desktop is in the works also but mobile is the main focus currently).

You can follow more about the V1 development and what features are planned/implemented in this Roadmap issue.

Community

Note

Currently the community is locked to Fluxer Plutonium members only. This limit will be lifted after the beta period (the link below will not work yet).

For updates, support, and discussion, join the Fluxer Mobile community on Fluxer.

Download

Note

Unless you are using a degoogled operating system, you should use the FCM client. If you don't know if your OS is degoogled, it likely is not.

Apple App Store: Coming when V1 is finished.

Google Play Store: Coming when V1 is finished.

Fdroid: Coming when V1 is finished.

iOS Testflight: Currently only available to Plutonium users.

Android (APK)

Quick pick (most users): download the beta FCM APK from GitHub releases — e.g. app-arm64-v8a-betafcm-release.apk on a phone from the last few years.

1. Pick a push variant

If your phone… Install Notifications use…
Has Google Play Services (typical Samsung/Pixel/etc.) FCM build Google Firebase Cloud Messaging
Is degoogled / has no Google apps OSS build UnifiedPush (you must install a distributor app such as ntfy)

Majority of users will use the FCM version.

You cannot switch push variants in-app: FCM and OSS are separate APKs for the same release channel and will replace each other if installed.

2. Pick a release channel

  • Beta — recommended during the beta period; pre-release builds for testing.
  • Stable — production builds; will appear on GitHub releases when V1 launches (same timing as Play Store / F-Droid entries above).

3. Pick the APK file on GitHub

On a release page, assets follow this naming pattern:

  • Per-CPU (smaller, preferred): app-<abi>-<channel><variant>-release.apk
  • Universal (works on all CPUs, larger): app-<channel><variant>-release.apk

Where:

  • <channel> is beta (or stable when available)
  • <variant> is fcm or oss
  • <abi> is usually arm64-v8a for modern phones; use the universal APK if unsure

Examples for most users:

  • app-arm64-v8a-betafcm-release.apk
  • app-betafcm-release.apk (universal fallback)

OSS example (degoogled phones):

  • app-arm64-v8a-betaoss-release.apk

Auto-updates with Obtainium

Obtainium can install and auto-update from GitHub. Beta releases are marked pre-release on GitHub, so the link must enable that option — the simple obtainium://add/... URL cannot do this.

Use one of these one-click links (matching your push variant from step 1). Each enables pre-releases, filters to the correct APK (betafcm or betaoss), and picks the right CPU architecture automatically:

Signing

Stable, beta, and canary Android release builds on GitHub are signed with this SHA-256 certificate fingerprint: 91:E4:98:E1:B8:A6:C8:BA:99:41:5E:DB:29:78:29:6B:6C:58:BA:A5:E2:D2:A6:49:CE:C6:2D:A7:A8:29:C7:BC

Bug reporting

Warning

During the beta period the only place to report bugs will be in the Fluxer Mobile community (they are mirrored to Github still). Once the beta period finishes you will be able to report issues on Github and the community.

Contributing

During the current beta, we are only accepting contributions for bug fixes. To submit a PR, it must be for a linked reported issue.

After the beta period, we will be updating these guidelines.

Pull requests should target the canary branch. For local testing, use the canary build flavor so your build matches that branch (see Mobile builds below).

Translating

We welcome contributions for app translations. Translations are managed through our own Weblate instance. More information about that will be linked here soon.

Tech stack

  • Flutter / Dart — cross platform UI (mobile today, desktop in progress)
  • Riverpod — state management (with code generation)
  • go_router — navigation and deep links
  • Drift — local SQLite database
  • Dio — HTTP client
  • fluxer_dart — Fluxer API client (OpenAPI generated)
  • WebSockets — real time gateway events
  • LiveKit / WebRTC — voice and video calls
  • FCM / UnifiedPush / APNs — push notifications (platform dependent)

Build generated files

Riverpod generated files are not committed, so you need to generate them before running the project.

dart run build_runner build --delete-conflicting-outputs

Mobile builds

Environments are canary, beta, and stable. Pass compile-time defines with --dart-define-from-file=tool/dart_defines/<environment>.json (each file sets APP_ENVIRONMENT) plus --dart-define=PUSH_PROVIDER=... as needed.

Application ID / bundle ID: beta and stable use com.fluxer. canary uses com.fluxer.canary

Android uses two Gradle flavor dimensions: environment plus push (fcm or unifiedpush). The variant name combines both in camelCase (for example stableFcm, betaUnifiedpush). PUSH_PROVIDER must match the push dimension: fcm for Firebase Cloud Messaging (adds deps via pubspec.firebase.deps.yaml) or unifiedpush for UnifiedPush.

iOS uses schemes with the same environment names (canary, beta, stable). There is no push flavor dimension; push is always Apple Push Notification service, so use PUSH_PROVIDER=apns.

Example (Android, stable with FCM):

flutter run --flavor stableFcm --dart-define-from-file=tool/dart_defines/stable.json --dart-define=PUSH_PROVIDER=fcm

For the same environment on iOS, swap the flavor for the scheme and set PUSH_PROVIDER=apns, for example --flavor stable, --dart-define-from-file=tool/dart_defines/stable.json, and --dart-define=PUSH_PROVIDER=apns.

flutter build ios --flavor canary --dart-define-from-file=tool/dart_defines/canary.json --dart-define=PUSH_PROVIDER=apns

Desktop builds

Coming soon!

API

The Flutter client uses the dart_sdk to send requests to the Fluxer API which is generated from the OpenApi spec.

About

Official Fluxer Mobile client built on the Flutter framework.

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Dart 98.9%
  • Swift 0.5%
  • C++ 0.3%
  • CMake 0.2%
  • Ruby 0.1%
  • Kotlin 0.0%