Skip to content

Repository files navigation

【📖 English README doc】 【📖 简体中文 README 文档】

【🔐 English privacy】 【🔐 简体中文隐私条款】

GitHub Gitee

dart-flutter-demo onefetch

✨ dart_flutter_demo

A cross-platform Flutter UI showcase PoC (Proof of Concept) app, available on Android, Windows, Linux, macOS, and iOS, built by a GitHub Actions CI packaging workflow.

Last Commit Release & Publish

dart_flutter_demo logo

Microsoft Store Flatpak

Windows x64 Linux x64 macOS x64 | ARM64 Android x86_64 | ARM64 iOS ARM64

📊🧬 Language Footprint

Animated breakdowns of tracked code, script, doc, and build-config size by bytes and by lines.
lang-byte-stats lang-line-stats

💬🪟 Dialogs

🖼️ Desktop Icons

Desktop Icon Preview

Windows 11 dock / taskbar

Debian 13 KDE start menu

Android 14 widget

iOS 17 sideloaded

ℹ️ About

An app information dialog that displays app name, version, build number, publisher, and related links. Accessible from the AppBar menu.
about

📘 Getting Started Guide

A step-by-step walkthrough dialog showing the app's download channels, build options, and recommended development setup. Accessible from the AppBar menu.
guide

🧩📱 Pages

0. 🖥️ System Info

Displays typed system information through the reusable local plugin system_info_vincentzyu: Win32 C++ FFI first on Windows, Kotlin/Swift MethodChannels on Android and Apple platforms, and Dart/OS interfaces on Linux. Formatting stays in the App layer. Every field shows its source, elapsed time, and fallback chain. Session logs are mirrored to memory, UI, console, and rotating files (10 MiB each, newest five retained); hostname and local IP are never uploaded automatically, and export requires a privacy confirmation.
Source: lib/pages/page0_system_info.dart

Dart + Flutter Demo (System Info Page) Platform System Info (fastfetch)
Windows 11
Windows 11
Windows 10 WSL Arch Linux
Windows 10 WSL Arch Linux
Ubuntu 24.04 LXQt
Ubuntu 24.04 LXQt
Debian 13 KDE
Debian 13 KDE
macOS 14
macOS 14
Android 15
Android 15
iOS 17 (iPad Air 5)
iOS 17 (iSH)

1. 💬 Dialog Lab

A compact dialog lab with both a modern Flutter dialog and a classic Win32-style dialog recreation. Uses retro borders, inset input styling, and larger action buttons to demonstrate that Flutter can reproduce very different interaction and visual languages in one app.
Source: lib/pages/page1_dialog_lab.dart page1

2. 🔤 Typography Studio

An interactive text playground. Adjust font size, letter spacing, and line height with live controls. Switch between the system font, Google Fonts, and a one-shot local font file. Includes live preview text editing, dark/light auto text color switching, preset swatches, and a custom color picker with RGB and HEX readout.
Source: lib/pages/page2_typography_studio.dart page2

3. 🧱 Adaptive Grid

A responsive GitHub repository browser driven by LayoutBuilder. Fetches repositories from configurable personal or organization repository pages, supports proxy configuration, filter and sort controls, collapsible configuration UI, layout switching between Grid / Masonry / List, and adjustable target columns from 5 to 1.
Source: lib/pages/page3_adaptive_grid.dart page3

4. 🎛️ Controls & Feedback

A responsive control-state and accessibility lab. It combines radios, checkboxes (including an indeterminate state), switches, validation and loading states, text scaling, high-contrast previews, focus diagnostics, and live JSON state inspection. Its async task can run, pause, resume, fail, retry, cancel, or complete, with determinate and indeterminate progress plus SnackBar, dialog, banner, and bottom-sheet feedback.
Source: lib/pages/page4_controls_feedback.dart page4

📁 File Structure

The app keeps all five platform projects in source control. Reusable system-information code lives in a local Flutter plugin:

File Purpose
lib/main.dart App entry point; boots FlutterShowcaseApp.
lib/app.dart App shell, theme switching, navigation, about/guide dialogs, and page switching.
lib/models/mock_data.dart Small random-data helpers for demo content.
lib/models/page3_enums.dart Enums and density helpers used by the GitHub grid page.
lib/pages/page0_system_info.dart System info showcase page.
lib/pages/page1_dialog_lab.dart Dialog comparison and interaction demo page.
lib/pages/page2_typography_studio.dart Typography playground page.
lib/pages/page3_adaptive_grid.dart Adaptive GitHub repository browser page.
lib/pages/page4_controls_feedback.dart Controls and feedback component lab.
lib/services/android_home_widget_service.dart Android home-widget sync bridge.
lib/services/app_performance.dart FPS tracking and rebuild count helpers.
lib/services/github_repository_service.dart GitHub repository parsing, fetching, and data models.
lib/services/system_info_service.dart App formatting, logging setup, debug snapshot, and copy/export adapter.
lib/widgets/animated_page.dart Page transitions and staggered animation wrappers.
lib/widgets/repository_card.dart Grid-style repository card widget.
lib/widgets/repository_list_tile.dart List-style repository row widget.
lib/widgets/state_shell.dart Shared empty/loading/error state layout.
lib/widgets/tag.dart Small pill/tag display widget.
packages/system_info_vincentzyu/ Reusable typed system-information plugin for all five platforms.
android/, ios/, windows/, linux/, macos/ Committed Flutter platform projects; normal CI never regenerates them.
.github/workflows/profile-debug.yml Seven-day Windows/Linux/Android Profile and Debug artifacts.
.github/workflows/performance.yml Seven-day or permanent Pre-release desktop Profile build reports.

🧪 Build Modes

Mode GitHub output JIT AOT Optimized Debug symbols Typical use
Debug 7-day Actions artifacts Development and diagnostics
Profile Permanent Release assets plus 7-day developer artifacts Limited Performance profiling on real devices or hosts
🚀 Release Permanent GitHub Release assets Production-style use

Release assets use flutter build <platform> --release. This repository runs Flutter analysis, tests, builds, and profiling through GitHub Actions rather than the local Flutter SDK.

⚙️🚀 CI/CD

GitHub Actions uses exact, case-sensitive hyphenated tokens: [build-release] publishes an app Release with a verified x86_64 .flatpak; [build-publish] additionally requests a signed stable update through the self-hosted Flatpak repository and submits the MSIX to Microsoft Store certification; [build-profile] and [build-debug] create seven-day developer artifacts; [run-performance] keeps performance reports for seven days; [release-performance] creates a permanent Performance Pre-release. Brackets are commit-style punctuation, while CI matches the token itself. See ci.md for manual options and platform bootstrap details.

Platform Baselines

Platform Declared baseline Current release architecture
Windows Windows 10 or newer x64
Linux Modern x64 desktop distribution with GTK 3 x64
macOS macOS 10.15 or newer x64 and ARM64
Android API 21 or newer Universal, x86_64, and ARM64
iOS / iPadOS iOS 13.0 or newer ARM64 unsigned IPA

Every Windows artifact, including the Microsoft Store submission MSIX, is x64-only. The unsigned MSIX is intended for Partner Center submission; use the EXE or portable ZIP for normal GitHub downloads.

The iOS baseline is the configured build minimum, not a claim that every OS/device combination has been tested. The current known physical-device result is iPad Air 5 on iOS 17.

⚠️🩺 Troubleshooting

  • 🪟🐧 Windows / Linux GPU issues: Launch with software rendering: ./dart_flutter_demo --disable-gpu
  • 🍎 macOS security prompt: If macOS blocks the app because Apple cannot verify it, open System Settings → Privacy & Security, scroll down to Security, then click Open Anyway for dart_flutter_demo.
  • 🍎 macOS virtual machines graphic issues (VMware, VirtualBox, etc.): Flutter desktop apps require Apple Metal, which is unavailable in VMs. Use a physical Mac or GitHub Actions macOS runners instead.
  • 🤖 Android APK: Not signed with a persistent keystore. Each release uses a different debug key, so you must uninstall the old version before installing a new one to avoid signature conflicts.
  • 📱 iOS IPA: CI does not configure code signing. To run on your own device, self-sign the .ipa before installing.
    (for reference — tested on iPad Air 5, iOS 17; other devices/versions may vary):
    1. Download and install AltStore on Windows or macOS, open AltServer (system tray)
    2. Connect iPad via USB → tray icon → Install AltStore → select your iPad
    3. Enter your Apple ID (used only for signing, not stored)
    4. On iPad: Settings → General → VPN & Device Management → trust your Apple ID certificate
    5. Open AltStore → + → select the .ipa file
    6. Make sure to turn off any proxy / VPN software (e.g. Shadowrocket, Clash, etc.), then open the app
    7. Free accounts need re-signing every 7 days (AltStore prompts automatically; keep AltServer running on your PC/iPad on same WiFi)

📦 Dependencies

Dependencies Badge
Flutter flutter
Flutter Localizations flutter_localizations
Intl intl
File Selector file_selector
Google Fonts google_fonts
Flutter Colorpicker flutter_colorpicker
Package Info Plus package_info_plus
Path Provider path_provider
System Info VincentZyu system_info_vincentzyu
URL Launcher url_launcher
Testing Flutter Test
Linting Flutter Lints

🛠️ Tech Stack

Tech Badge
Language Dart
Min SDK SDK
Design Material 3
Windows Windows
Linux Linux
macOS macOS
Android Android
iOS iOS

🏷️ Other Badge

Badge Link
Version Version
Stars Stars
Last Commit Last Commit
Github Action CI/CD release · build

About

A proof-of-concept Flutter showcase demo. Github Action CI workflow available for Windows, Linux, Android, iOS, and macOS build pipelines.

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages