2026-01-27 23:56:15 +00:00
2026-01-27 23:56:15 +00:00
2026-01-27 23:56:15 +00:00
2025-12-05 20:25:41 +00:00
2025-12-05 20:25:41 +00:00
2025-12-05 20:25:41 +00:00
2025-12-05 20:25:41 +00:00
2025-12-05 20:25:41 +00:00
2026-01-26 10:58:32 +00:00

Florid logo Florid — A Modern FDroid Client for Android

Browse, search, and install opensource Android apps from the FDroid repository with a clean Material 3 UI. Built with Flutter.

Features

  • Latest and trending: Browse recently added and updated apps
  • Categories: Explore apps organized by topic
  • Powerful search: Instant filtering by name, summary, description, or package
  • App details: Rich metadata, versions, permissions, links, and changelogs
  • Screenshots: Inline screenshots when available from the repo metadata
  • Downloads: Reliable APK downloads with progress and notifications
  • Install/uninstall: Onetap install of downloaded APKs, uninstall via intent
  • Updates: Detect newer versions for apps installed on your device
  • Appearance: Material 3 design with light/dark and system themes
  • Localization: Choose repository content language (e.g., enUS, deDE)
  • Offline cache: Fast local database with smart network/cache fallback

Screenshots

Getting Started

Prerequisites

  • Flutter (stable channel)
  • Dart SDK >= 3.9.2
  • Android SDK + device/emulator (Android 8.0+ recommended)

Setup

  1. Install dependencies
flutter pub get
  1. Run on a device
flutter run

First launch performs an initial repository sync and caches data locally for faster subsequent loads and limited offline use.

Build

Build a release APK:

flutter build apk

Architecture

  • State management: Provider
  • Data layer: FDroidApiService (network + download) and DatabaseService (SQLite via sqflite) with cachefirst fallback
  • Serialization: json_serializable + build_runner
  • UI: Flutter Material 3 components and custom widgets
  • Notifications: flutter_local_notifications for download progress/completion

Repository & Caching

  • Fetches index-v2.json from FDroid, parses into models, persists to SQLite
  • Falls back to local DB or JSON cache when offline or on failures
  • Extracts screenshots from raw metadata when available

Project Structure

lib/
├── models/          # Data models (FDroidApp, FDroidVersion, ...)
├── providers/       # App, download, and settings providers
├── screens/         # UI screens (Latest, Categories, Updates, Details, ...)
├── services/        # API, database, notifications, utilities
├── widgets/         # Reusable UI components
└── main.dart        # App entry point

Permissions

Florid uses the following Android permissions for core functionality:

  • INTERNET: Access the FDroid repository and app metadata
  • REQUEST_INSTALL_PACKAGES: Install downloaded APKs
  • POST_NOTIFICATIONS (Android 13+): Show download notifications
  • QUERY_ALL_PACKAGES: Detect installed apps to surface available updates
  • Storage access: APK files are stored in the apps external Downloads dir; on Android 13+ this typically works without the legacy storage permission

Actual permissions are declared in the Android manifest and requested at runtime where required.

Development

  • Regenerate splash screen (configured in splash_screen.yaml):
flutter pub run flutter_native_splash:create
  • Regenerate app icons (configured in icon_launcher.yaml):
flutter pub run icons_launcher:create

Dependencies (selected)

  • provider, http, dio, cached_network_image, flutter_cache_manager
  • sqflite, path_provider, shared_preferences
  • permission_handler, package_info_plus, installed_apps, android_intent_plus
  • flutter_local_notifications, url_launcher, share_plus
  • json_annotation, json_serializable, build_runner

Contributing

Issues and PRs are welcome! Please:

  • Open an issue for bugs or feature requests
  • Keep PRs focused and include concise descriptions
  • Follow the existing code style and Provider architecture

License

GPL3.0 — see LICENSE for full text.

Disclaimer

Florid is an independent project and is not affiliated with or endorsed by FDroid. “FDroid” is a trademark of its respective owners.

S
Description
Mirror of Florid
Readme GPL-3.0
15 MiB
Languages
Dart 81.9%
HTML 17.9%
Kotlin 0.1%
Ruby 0.1%