Skip to content

VincentZyuApps/dart-flutter-demo

Repository files navigation

📖 English 📖 简体中文(大陆)

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 Build

dart_flutter_demo logo

Windows x64 Linux x64 | ARM64 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 system information through native C++ (Windows), Kotlin (Android), Swift (iOS), and dart:io fallbacks. Shows OS, hostname, kernel, uptime, CPU, memory, disk, and local IP. Includes built-in debug trace viewing plus copy/export actions for diagnostics.
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 compact lab for interactive controls and user feedback. Includes radios, checkboxes, switches, progress indicators, snack bars, and bottom sheets. Useful for checking state transitions, motion, and component responsiveness.
Source: lib/pages/page4_controls_feedback.dart page4

📁 File Structure

The lib/ directory is organized by entry, app shell, feature pages, shared widgets, and service/model helpers:

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 Cross-platform system info collection, debug snapshot, copy/export helpers.
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.

🧪 Build Modes

Mode GitHub CI release JIT AOT Optimized Debug symbols Typical use
Debug Local development and debugging
Profile Performance profiling
🚀 Release GitHub Release packages and production use

GitHub Release assets are built with flutter build <platform> --release. For local Debug/Profile builds, run commands such as flutter run --debug, flutter run --profile, or flutter build windows --profile after selecting the target platform.

⚙️🚀 CI/CD

GitHub Actions handles automated builds and packaging. Push a commit containing build action or build release to trigger the pipeline. See build.md for details.

⚠️🩺 Troubleshooting

  • 🪟🐧 Windows / Linux GPU issues: Launch with software rendering: ./dart_flutter_demo --disable-gpu
  • 🍎 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
URL Launcher url_launcher
Testing Flutter Test
Linting Flutter Lints

🛠️ Tech Stack

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

🏷️ 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

Stars

Watchers

Forks

Packages

 
 
 

Contributors