duytq94/flutter-chat-demo
51.2
Adequate · 19 September 2026
1.9k
lines of production code
Dart
primary language
1
measurement over time
What this system is
This system is a Flutter-based chat demonstration application that facilitates user authentication via Google Sign-In and enables real-time text and image messaging through Firebase services. It provides a complete user interface for browsing users, managing profiles, and handling conversations, supported by local state management and persistent storage utilities. The codebase maintains modern cross-platform configurations for Android and iOS, ensuring compatibility with current build tools and native device features like push notifications and camera access.
Features
Added debouncing and keyboard utility helpers
New utility classes have been introduced to the application's helper library: a Debouncer class that delays the execution of actions by a specified number of milliseconds, and a Utilities class providing methods to detect if the on-screen keyboard is visible and to programmatically dismiss it.
lib/utils · high confidence
Initial release of Flutter Chat Demo UI pages and constants
This change introduces the core user interface structure for the chat application, adding the main navigation pages (Splash, Login, Home, Chat, Settings, and Full Photo) and centralizing app configuration in new constant files for strings, colors, and Firestore schema. Users will now see the complete set of screens required to sign in, browse users, send text and image messages, and manage their profile, replacing any previous ad-hoc or missing page implementations.
lib/pages · high confidence
Behavioural changes
App initialization and architecture overhaul
The application now initializes Firebase services before launching, ensuring that backend connectivity is established prior to UI rendering. The app structure has been refactored to use the Provider package for state management, replacing the previous single-page design with a multi-provider setup that manages authentication, settings, home, and chat states. Additionally, the UI theme has been updated to use Material 3 with a configurable color seed, and the entry point has changed from a static home page to a SplashPage.
lib · high confidence
Migrate Android activity to Flutter 2 embedding
The Android MainActivity has been updated to use the Flutter 2 embedding (io.flutter.embedding.android.FlutterActivity) and the legacy boilerplate for plugin registration and activity lifecycle management has been removed, aligning the native Android code with the newer Flutter framework version.
android/app/src/main/java · high confidence
Updated iOS build configuration and dependency integration
The iOS build setup has been updated to integrate CocoaPods dependencies, with the workspace now referencing the Pods project and debug/release configurations including the generated Pods xcconfig files. Additionally, the minimum supported iOS version requirement has been removed from the AppFrameworkInfo.plist, and a new build ID file was added to track the last build state.
ios/Flutter · high confidence
iOS app configuration updated for Firebase, push notifications, and UIScene
The iOS app configuration has been updated to support Firebase integration and modern iOS lifecycle management. The bundle identifier is now set to com.duytq.flutterchatdemo, and GoogleService-Info.plist has been added to enable Firebase services. Push notifications are enabled via the aps-environment entitlement and UIBackgroundModes, while camera and photo library usage descriptions have been added to Info.plist. The app now uses UIScene for window management, configures URL schemes for Google sign-in, and disables the FirebaseAppDelegateProxyEnabled to allow manual notification handling.
ios/Runner · high confidence
iOS project migrated to CocoaPods and updated for modern Xcode
The iOS build configuration has been updated to use CocoaPods for dependency management, replacing the previous embedded Flutter and App frameworks with the Pods\_Runner framework. This migration includes adding build phases to copy pods resources and embed pods frameworks, integrating Firebase configuration files (GoogleService-Info.plist and Runner.entitlements), and enabling Push notification capabilities. The project file and scheme have also been upgraded to Xcode 15.1 standards, with debugger settings adjusted to use the Flutter LLDB init file and GPU validation mode enabled.
ios/Runner.xcodeproj · high confidence
Test coverage
Updated widget test to support SharedPreferences injection
The widget test in test/widget\_test.dart has been updated to initialize and inject a SharedPreferences instance into the MyApp widget. This change allows the test to verify application behavior that depends on shared preferences storage, ensuring the app initializes correctly with this dependency.
test · high confidence
Dependencies
Gradle build tool upgraded to version 8.7
The Android build system has been upgraded from Gradle 4.4 to Gradle 8.7. This change updates the wrapper configuration to use the newer distribution, which may affect build performance and compatibility with newer Android plugin versions. The gradlew script has also been ensured to have executable permissions.
android/gradle · high confidence
Major dependency and build system upgrade
The project has been upgraded to support Flutter 3.32.1 and Dart 3.3.0, requiring a significant update to its dependency ecosystem. Key Firebase libraries (Auth, Firestore, Storage, Messaging) and utility packages (Provider, Image Picker, Toast) have been updated to their latest major versions. On the Android side, the build system has migrated to the new Gradle plugin management DSL, upgraded to Android Gradle Plugin 8.6.0 and Kotlin 2.1.0, and increased the compile SDK to 36. The iOS platform target has been raised to iOS 15.0, and the project now uses AndroidX with Jetifier enabled.
(dependencies) · high confidence
Housekeeping
Initial project setup with license, gitignore, and IDE configuration
The repository has been initialized with an MIT license, a comprehensive .gitignore file tailored for Flutter and Dart development (excluding build artifacts, IDE settings, and plugin caches), and an updated .iml file that explicitly excludes build and cache directories for various Firebase and utility plugins (such as cloud\_firestore, firebase\_auth, image\_picker, and sqflite) to keep the project workspace clean. The README has also been updated to provide a description of the chat demo app, including features like Google login and push notifications, along with instructions on how to run the project.
(repo-wide) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 51.
Lenses
- Code Health 93
- Architecture 99
- Maturity 73
- Readiness 12
- Security 98
- Domain Modelling 100
Changes since last survey
- 100 commits — 79 feature/other, 21 fixes
By area
- (root) — 39 commits
- lib/pages — 13 commits
- .idea/libraries — 11 commits
- .idea/workspace.xml — 8 commits
- android/app — 6 commits
- ios/Runner — 5 commits
- lib/chat.dart — 5 commits
- (repo) — 4 commits
- images/mimi1.gif — 2 commits
- ios/Podfile — 2 commits
- lib/login.dart — 2 commits
- ios/Flutter — 1 commit
- lib/main.dart — 1 commit
- lib/settings.dart — 1 commit
Notable commits
- fix: * Upgrade dependencies * Fix loading forever when login without network * Add safe area home & chat page * Fix syntax warning on Flutter 3
- fix: Fix _limit increase infinitely
- fix: Fix inconsitency in group chat id in different platforms Details here https://github.com/duytq94/flutter-chat-demo/issues/59
- fix: Fix listMessage is appending snapshots infinitely
- fix: ImagePicker fix in settings and lazy load in chat
- fix: Move firebase initialize to main.dart to fix "No Firebase App '[DEFAULT]' has been created flutter..."
- fix: fix bug auto update when sign out
- fix: fix bugs new user
- fix: fix build iOS when migrate android x
- fix: fix config iOS
- fix: fix some gif not loop infinite
- fix: fix upload image
- fix: fix upload image file
- fix: fix white screen on iOS
- fix: fix: missing dispose, deprecated, change page to staless if able
- fix: temp update firebase_messaging to fix issue with flutter_local_notifications
- fix: update dependecies & migrate to UIScene & fix gradle
- fix: update some dependencies & fix to compatiable with 3.19.0
- fix: update some dependencies & fix to compatiable with Flutter 3.32.1
- fix: update versions plugin to fix build release
- …and 80 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
duytq94/flutter-chat-demo was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 574898423b0f813b0f326f8ab3e1387d75928d2b — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.