Skip to content

Repository files navigation


Flutter Dart Android

CI very_good_analysis MIT License

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

FlutterGuide: Mobile App

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

View Website · Report Bug · Request Feature

Table of Contents

About The Project

FlutterGuide is a mobile catalog of Flutter and Dart building blocks, built to help both beginner and experienced developers learn by example.

Each entry (widget, function, or package) ships with its source code and a live, interactive preview rendered right in the app, so you can see the behavior before copying it into your own project. The catalog also includes ready-made UI screens and reusable interface elements for common app patterns.

The catalog currently covers:

Category Count
Widgets 131
Packages 42
Functions 13
Elements 10
UI samples 6
Total 202

Features

  • Widget, Function & Package Catalog: Browse Material and Cupertino widgets, core Dart functions, and popular packages, each with code, an interactive preview, and a link to the official docs.
  • Elements & UI Samples: Full sample screens (login, chat, email client, and more) and reusable interface elements you can study or copy.
  • Favorites: Save any widget, function, or package for quick access later.
  • Search: Filter each catalog by name as you type.
  • Deep Linking: Open a specific component or sample directly from a shared link.
  • Multiple Languages: Full app UI in English, Portuguese (Brazil), and Spanish.
  • Code Theme Selector: Pick the syntax-highlighting theme used for code samples, with light and dark variants.
  • Light & Dark Theme: App-wide theming with a persisted preference.
  • Accessibility: Semantic labels on interactive elements for screen readers.

Built With

  • Flutter: Google's UI toolkit for building natively compiled applications from a single codebase.
  • Dart: The programming language behind Flutter.
  • Riverpod: State management and dependency injection.
  • go_router: Declarative routing and deep link handling.
  • flutter_syntax_highlighter: Syntax highlighting for the code samples.
  • shared_preferences: Persisting theme, language, and code theme selections.
  • google_mobile_ads: Ad monetization.
  • app_links: Deep link handling.
  • intl and Flutter's built-in l10n tooling: English, Portuguese (BR), and Spanish localization.
  • mocktail: Mocking in the test suite.

The in-app catalog also demonstrates dozens more packages, such as dio, http, cached_network_image, flutter_svg, video_player, flutter_animate, photo_view, and shimmer; open the Packages tab in the app for the full, runnable list.

Architecture

The app is organized by feature (lib/src/features/), each with its own data, domain, and presentation layers:

  • catalog: the widget/function/package/element/UI catalog, search, and favorites.
  • home: the landing screen and component groups.
  • settings: language selection and app info.
  • code_theme_selector: the code sample syntax-highlighting theme picker.

State is managed with Riverpod (ViewModel/Notifier classes exposed through providers), routing with go_router, and persistence through a SharedPreferences-backed service layer. Shared, feature-agnostic widgets live under lib/src/shared; cross-cutting concerns (DI, routing, theming) live under lib/src/core.

Testing

The project has 37 test files covering repositories, view models, notifiers, deep link handling, and shared widgets, using mocktail for mocking and ProviderContainer overrides for Riverpod state. Code is linted against the strict very_good_analysis rule set, enforced in CI alongside dart format and flutter test.

fvm flutter analyze
fvm flutter test

Screenshots

Home Elements catalog UIs catalog Elements tab Component preview Component code Packages tab Settings Code theme selector

Download the App

Get FlutterGuide directly from the Google Play Store:

Get it on Google Play

Getting Started

The project pins its Flutter SDK version via FVM, so all commands below use fvm flutter rather than a bare flutter install.

git clone https://github.com/dariomatias-dev/flutter_guide_app.git
cd flutter_guide_app
fvm install
fvm flutter pub get

Create a .env file in the project root (it's git-ignored) with the following keys; leave values empty for a local run without ads:

DEVICE_ID=
BANNER_AD_ID=
BANNER_AD_SAMPLE_ID=
INTERSTICIAL_AD_SAMPLE_ID=
REWARDED_AD_SAMPLE_ID=
APP_OPEN_AD_SAMPLE_ID=

Then run the app on a connected device or emulator:

fvm flutter run

Scripts

Utility scripts live under scripts/.

Script Command Description
screenshot scripts/screenshot.sh [device-id] Drives the app through its main screens on a connected device or emulator and saves a screenshot of each one into screenshots/, used for the README, Play Store listing, and official website. Run fvm flutter devices to list available device ids.

Contributing

Contributions make the open-source community an amazing place to learn and create. Any contributions you make are greatly appreciated.

Before opening a pull request, see CONTRIBUTING.md for the local setup, commit message convention (Conventional Commits), and branching rules this project follows.

Changelog

All notable changes are documented in CHANGELOG.md, following the Keep a Changelog format.

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

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages