Skip to content

Latest commit

 

History

881 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Flutter Dart Android


English · Español · Português (BR)

FlutterGuide

An Android app for browsing Flutter/Dart widgets, functions, and packages, each with runnable code and a live preview.
Explore the docs »

Report Bug · Request Feature

Table of Contents

About the Project

FlutterGuide is a mobile catalog of Flutter and Dart building blocks for developers who learn by example. Each entry (widget, function or package) ships with its source code and a live, interactive preview rendered inside the app, so the behavior can be seen before it is copied into another project.

The app is published on Google Play, and the website is at flutterguide.app.

Preview

Home Component preview Component code
The home screen, a component preview and its source code.

Features

  • Live previews with source code: every widget, function and package shows its runnable code next to an interactive preview and a link to the official documentation.
  • Elements and UI samples: complete sample screens (login, chat, email client and others) and reusable interface elements to study or copy.
  • Deep linking: open a specific component or sample from a shared link.
  • Code theme selector: choose the syntax highlighting theme of the code samples, with light and dark variants.
  • Favorites: save any widget, function or package for later.
  • Search: filter each catalog by name as you type.
  • Languages: English, Portuguese (Brazil) and Spanish.
  • Light and dark theme, with the choice persisted.
  • Accessibility: semantic labels on interactive elements for screen readers.

The Catalog

Widgets are Material and Cupertino, functions are core Dart functions, and packages are third-party libraries, among them dio, http, cached_network_image, flutter_svg, video_player, flutter_animate, photo_view and shimmer. Elements are reusable interface pieces and UI samples are complete screens.

Category Count
Widgets 142
Packages 46
Functions 13
Elements 9
UI samples 5
Total 215

Tech Stack

Architecture

The app is organized by feature (lib/src/features/: catalog, home, settings and code_theme_selector), each split into data, domain and presentation, with Riverpod for state and go_router for routing. Cross-cutting code lives in lib/src/core, and the design system in packages/app_ui, a separate package whose pubspec.yaml does not depend on the app, so the compiler rejects any import back into it.

The layering rules, the subsystems and the decisions behind them are in docs/architecture.md.

Getting Started

Requirements: FVM, which pins the Flutter SDK version the project uses, Git, and an Android device or emulator. Every command below uses fvm flutter rather than a bare flutter.

The .env file is git-ignored; leave the values empty to run without ads.

git clone https://github.com/dariomatias-dev/flutter_guide_app.git
cd flutter_guide_app
fvm install
fvm flutter pub get
cat > .env <<'EOF'
DEVICE_ID=
BANNER_AD_ID=
BANNER_AD_SAMPLE_ID=
INTERSTICIAL_AD_SAMPLE_ID=
REWARDED_AD_SAMPLE_ID=
APP_OPEN_AD_SAMPLE_ID=
EOF
fvm flutter run

Scripts

Helper scripts live under scripts/, in the order of use: development first, then quality.

Command Description
scripts/screenshot.sh [device-id] Drives the app through its main screens on a connected device, in all three locales, saving the captures under screenshots/<locale>/. Run fvm flutter devices to list device ids.
scripts/verify.sh [--all] [--skip-tests] Runs what CI runs: regenerates code and localizations (failing if the committed output was stale), then ARB parity, format, analyze, tests and coverage. --all checks everything; --skip-tests is for mid-change checks, never the final one.
scripts/check_l10n.sh [arb-dir] Fails when the ARB files disagree on their keys or a template key has no description. gen-l10n falls back to the template silently, so nothing else catches it.
scripts/check_coverage.sh <lcov-file> <minimum> Fails when line coverage is below the minimum, excluding generated sources and the catalog samples, which are teaching material, not app logic.

Testing

Unit and widget tests live under test/, mirroring lib/src/, and use mocktail with ProviderContainer overrides. packages/app_ui tests itself, and one integration test drives the app on a device to capture the screenshots.

fvm flutter test                                                       # the app
(cd packages/app_ui && fvm flutter test)                               # the design system
fvm flutter test integration_test/screenshot_test.dart -d <device-id>  # screenshots, on a connected device
./scripts/verify.sh                                                    # the same gate CI runs

The gate fails on stale generated code or localizations, mismatched ARB files, formatting, analyzer warnings, failing tests and coverage below the threshold. See docs/contributing.md for the thresholds and for which CI job blocks a merge.

Deployment

FlutterGuide runs on Android and is published on Google Play. Every pull request and every push to main runs the CI pipeline, and each job blocks the merge (the quality gate for the app and for packages/app_ui, the dependency vulnerability scan, the release APK build and the emulator run of the integration test), except the coverage upload, which only reports.

Releases are cut by release-please: it reads the Conventional Commits landed on main, keeps a pull request open with the next version and the CHANGELOG.md entry, and on merge tags the commit and attaches the signed APK and app bundle to the GitHub release. Uploading the bundle to Google Play is manual. The details are in docs/contributing.md.

Documentation

Document What it covers
Architecture Layout, layering rules, and the decision behind each subsystem
Contributing Setup, the local gate, what CI checks, releases, and the commit convention
Security policy How to report a vulnerability privately, and what is in scope
Working agreement The process every change follows, whether it comes from a person or an agent
Design system What packages/app_ui holds, and the boundary that keeps it app-agnostic

Contributing

Contributions are welcome. Before opening a pull request, run the local gate, which runs the same checks as CI:

./scripts/verify.sh

See docs/contributing.md for the setup, the commit convention and the branching rules.

Security

Found a vulnerability? Do not open a public issue: follow the security policy.

License

Distributed under the MIT License. See the LICENSE file for more information.

Author

Developed by Dário Matias Sales:

About

Flutter Guide is an educational app that helps developers learn Flutter through practical examples.

Topics

Resources

Contributing

Security policy

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages