Skip to content
CAI
Software that uses CAICheck a score

fluttercandies/wechat_flutter

47.7

Weak · 5 August 2026

32k

lines of production code

Dart

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a cross-platform mobile application, specifically a WeChat clone built with Flutter, supporting Android, iOS, and HarmonyOS. It implements core instant messaging features including chat, contacts, and group management via Tencent Cloud IM, alongside social networking capabilities like Moments and friend discovery. The application includes full user lifecycle management, from login and registration to profile customization, settings, and in-app updates.

How it got here

2019 — Initial project scaffolding and feature implementation

41 changes.

This period marks the initial creation and scaffolding of the WeChat Flutter application, establishing the foundational architecture across Android, iOS, and Dart layers. The work focused on implementing core UI components, state management, and integration with the Tencent Cloud IM SDK to replicate key WeChat features such as messaging, contacts, and the moments feed.

2020–2026 — IM feature scaffolding and HarmonyOS porting

8 changes.

This period focused on establishing the structural foundation for instant messaging features, including stubs for friend and group management, alongside new UI components like alert dialogs and red packet interfaces. Simultaneously, the codebase was expanded to support HarmonyOS, introducing native entry points, platform-specific text field plugins, and initial test scaffolding for the new platform.

Features

Add Discover page with WeChat-style feature list

A new Discover page is introduced, providing a scrollable list of WeChat-like features including Moments (朋友圈), Shake (摇一摇), Search (搜一搜), Nearby Restaurants (附近的餐厅), Games (游戏), and Mini Programs (小程序). Tapping on Moments opens the WeChatFriendsCircle view, while other items currently navigate to a LanguagePage.

lib/pages/discover · high confidence

Add Tencent Cloud IM SDK integration and UI components

The \lib/im\ directory now contains a comprehensive set of handlers for the Tencent Cloud IM SDK, including \GenerateUserSig.dart\ for generating test user signatures, \login\_handle.dart\ for SDK initialization and login/logout logic, \friend\_handle.dart\ for adding/removing friends and creating group chats, \group\_handle.dart\ and \fun\_dim\_group\_model.dart\ for group management, \message\_handle.dart\ for sending/retrieving messages, and \conversation\_handle.dart\ for managing conversations. Additionally, new UI components \NewFriendCard\ and \HorizontalLine\/\VerticalLine\/\Space\ are introduced to support the messaging interface.

lib/im · high confidence

Add WeChat Moments UI components

Added new UI components for the WeChat Moments feature, including an image loading widget (ImageLoadView) and a dynamic item template (ItemDynamic) that displays user posts with text, images, and video placeholders.

_lib/pages/wechat\friends/ui · high confidence

Add WeChat-style popup menu and friend interaction popups

Introduced a new popup menu component (WPopupMenu) that supports both single-click and long-press triggers, rendering a styled menu with icons, titles, and a triangular pointer. Additionally, added a friend interaction popup (friend\_pop.dart) for displaying friend-related actions. These components provide the UI for menu selections and friend interactions within the app.

_lib/ui/w\pop · high confidence

Add WebView page for displaying web content

A new WebViewPage component has been introduced in the web UI layer, providing a Flutter widget that renders a web page using the webview\_flutter package. The page accepts a URL and title, configures the web view to allow unrestricted JavaScript execution, and enforces a navigation rule that blocks requests to 'https://github.com/fluttercandies/wechat\_flutter' while allowing all other navigation. The UI wraps the web view in a scaffold with a common header bar.

lib/ui/web · high confidence

Introduced new Flutter pages for the chat feature, including chat\_info\_page.dart, chat\_more\_page.dart, chat\_page.dart, more\_info\_page.dart, set\_remark\_page.dart, and shoot\_page.dart. These files implement the user interface for viewing chat details, accessing the chat menu (photo, camera, video call, location, red packet, transfer, voice input, favorites, cards, and files), the main chat interface with message display and input, a generic info page, a remark setting page, and a placeholder for camera/shooting functionality.

lib/pages/chat · high confidence

Add extended text field components for HarmonyOS

The \extended\_text\_field\ plugin now includes a new set of extended widgets and rendering logic specifically for HarmonyOS. This adds support for custom text spans, enhanced spell-check configurations, and specialized toolbars (Cupertino and Material) that handle text selection and suggestions on the platform. The change introduces new classes like \ExtendedTextField\, \ExtendedEditableText\, and \ExtendedSpellCheckConfiguration\ to manage text input and selection behaviors, along with utility functions to convert between text painter and text input positions for special inline spans.

_ohos\_plugins/extended\_text\field-16.0.1 · high confidence

Add file and error handling utilities

Added new utility classes for file operations and error logging. The new FileUtil class provides methods for managing application directories, copying assets to local files, and downloading files with progress tracking. Additionally, a HandleUtil class was introduced to standardize error logging by printing error codes and messages to the console.

lib/tools/utils · high confidence

Add initial HarmonyOS (OpenHarmony) native entry and test scaffolding

Introduces the foundational structure for running the app on HarmonyOS, including the \entry\ module's \Index\ page that hosts the Flutter engine, the \EntryAbility\ to manage the Flutter engine lifecycle, and a \TestAbility\ with associated unit tests for the entry point. Configuration files (\build-profile.json5\, \module.json5\, \hvigorfile.ts\) and resource definitions are added to support the native layer, while \.gitignore\ and \oh-package.json5\ files establish the project's build and dependency metadata for the platform.

ohos, ohos/entry · high confidence

Added UpdateEntity data model

A new Dart class, UpdateEntity, has been introduced to represent update information. This model includes fields for update details, app version, name, ID, and download URL, along with JSON serialization and deserialization methods, enabling the application to handle structured update data.

lib/im/other · high confidence

Added WeChat-style red packet claim dialog

A new dialog component has been introduced to display a WeChat-style red packet claim interface. This UI element features a styled container with a header showing the sender's avatar and name, a festive greeting message, and a clickable area to claim the red packet, along with a close button.

_lib/pages/red\package · high confidence

Added a reusable common header bar component

A new \ComMomBar\ widget has been introduced in \lib/ui/bar/commom\_bar.dart\. This component provides a customizable header bar with support for title, background color, leading image or icon, and optional bottom widgets. It implements \PreferredSizeWidget\ to integrate seamlessly with Flutter's \AppBar\ and supports conditional shadow rendering and navigation back functionality.

lib/ui/bar · high confidence

Added core utility libraries for screen adaptation, data persistence, and UI components

Introduced new utility modules to support the application's core functionality. The \commom.dart\ file provides screen adaptation logic and helper functions for UI calculations. The \shared\_util.dart\ file implements a singleton manager for multi-account local storage operations, allowing the app to save and retrieve user-specific data. Additionally, \wechat\_flutter.dart\ serves as a central export hub, aggregating essential UI components, configuration constants, and third-party library exports to simplify imports across the codebase.

lib/tools · high confidence

Added custom Cupertino alert dialog component

A new \MyCupertinoAlertDialog\ widget has been introduced in \lib/ui/flutter/my\_cupertino\_dialog.dart\. This component provides a styled alert dialog with configurable title, content, and action buttons, featuring specific typography, dimensions, and accessibility support for text scaling.

lib/ui/flutter · high confidence

Added group and user profile model stubs

New model files were added to the IM group module to define interfaces for group management and user profile operations. The \fun\_dim\_group\_model.dart\ file introduces a \DimGroup\ class with stubbed methods for retrieving group lists and info, dissolving groups, and modifying group names, introductions, and notification settings. The \fun\_dim\_info.dart\ file adds an \InfoModel\ class with stubbed methods for fetching self-profiles, setting add-methods, checking friends, and managing group name cards and member info. All methods are currently empty implementations, indicating preparation for future functionality.

lib/im/group · high confidence

Added home page and search page components

Introduced the new home page (HomePage) which displays a scrollable list of recent conversations, including options to mark as read, pin, or delete chats, and a search page (SearchPage) that provides a text input for searching content, with placeholder categories for moments, articles, and other features currently under development.

lib/pages/home · high confidence

Added iOS launch and main storyboards for the Flutter runner

The iOS application now includes explicit storyboard files to define the app's initial launch screen and main view controller. The new LaunchScreen.storyboard configures a white background with a centered 'LaunchImage' for the splash screen, while Main.storyboard sets up the primary FlutterViewController as the root view controller. These changes establish the native iOS UI structure required for the Flutter engine to render the application's first and main screens.

ios/Runner/Base.lproj · high confidence

Added iOS native configuration for the Flutter app

The iOS native project files have been added, including the main AppDelegate, the Info.plist configuration, and the bridging header. This establishes the iOS platform support for the application, enabling it to run on iOS devices.

ios/Runner · high confidence

Added iOS project configuration for Flutter integration

The iOS build configuration for the Runner app has been added, including the Xcode project file (project.pbxproj), workspace settings, and Flutter-specific configuration files (AppFrameworkInfo.plist, Debug/Release.xcconfig). This establishes the necessary structure for building and running the iOS application using Flutter.

ios/Runner.xcodeproj · high confidence

Added new card component for the 'More' section

A new \MoreItemCard\ widget has been introduced in the \lib/ui/card\ directory. This component renders a tappable item featuring an icon image and a name label, with dynamic margin calculations based on keyboard height. It is designed to display items in a grid-like layout, likely for a 'more' or 'other' options menu within the WeChat Flutter application.

lib/ui/card · high confidence

Added new login, registration, and location selection pages

The login flow now includes a dedicated entry point (LoginBeginPage) that allows users to choose between logging in or registering. The new LoginPage collects a mobile number and area code, while the RegisterPage adds fields for nickname, phone number, and password, along with an avatar selection feature. Additionally, a SelectLocationPage was introduced to let users choose their country/region from a predefined list of countries and their corresponding dialing codes.

lib/pages/login · high confidence

Added new message event bus for chat notifications

A new event bus implementation for handling chat-related messages has been introduced. This adds a reactive stream that allows components to subscribe to new message events, enabling real-time updates for chat conversations.

lib/tools/event · high confidence

Added new screens for finding and adding friends

The app now includes a dedicated 'Add Friend' page that provides multiple ways to connect with others, including radar search, group chat creation, QR code scanning, mobile contacts, official accounts, and WeCom contacts. This is supported by a 'Friend Details' screen to view a user's profile and a 'Verification Page' to send a friend request with a message and remarks. These new pages enable users to search for users by ID or phone number, view their profile, and initiate a connection request.

lib/pages/more · high confidence

Added provider and localization infrastructure for WeChat Flutter app

Introduced new state management and internationalization support for the WeChat Flutter application. This includes a generated i18n file (lib/generated/i18n.dart) providing English and Chinese translations for UI strings, alongside new provider classes (GlobalModel, LoginModel) and their corresponding logic classes (GlobalLogic, LoginLogic) to manage application state, user profile data, and login status.

lib/provider · high confidence

Added reusable UI components for verification and contact views

Added five new Flutter widgets in the \lib/ui/orther\ directory to support the contact and verification flows: \ButtonRow\ for styled action buttons, \LabelRow\ for key-value display rows, \PersonCard\ for displaying user profile information, \TipVerifyInput\ and \VerifyInput\ for text input fields with focus states, and \VerifySwitch\ for a toggle control. These components provide consistent styling and behavior for the WeChat-style UI.

lib/ui/orther · high confidence

Added support for rendering emojis as inline images in the text editor

The edit screen now supports displaying emojis as inline images within the text input field. New components in the \lib/ui/edit\ directory (\emoji\_text.dart\, \image\_text.dart\, and \text\_span\_builder.dart\) implement a custom \SpecialText\ handler that parses emoji markers (e.g., \\[1\]\) and renders them using \ImageSpan\ from the \extended\_text\_field\ package. This allows users to insert and view emojis as graphical elements rather than plain text characters.

lib/ui/edit · high confidence

Initial Android project scaffolding for the WeChat Flutter app

The Android module has been initialized with the standard Flutter V2 embedding structure. This includes the main AndroidManifest.xml declaring necessary permissions (such as INTERNET, CAMERA, and STORAGE), the MainActivity Java/Kotlin classes extending FlutterActivity, and the associated resource files for the launch screen and themes. These changes establish the baseline Android configuration required for the application to run on Android devices.

android/app · high confidence

Initial Flutter app structure and UI components

The application is bootstrapped with a new entry point in lib/main.dart that initializes data and storage, configures the Provider state management, and sets up the Flutter app with GetMaterialApp for routing and localization. The app.dart file defines the root widget, integrating global state, toast notifications, and locale support. Additionally, a reusable common button component (ComMomButton) is introduced in lib/ui/button/commom\_button.dart, featuring customizable styling, gradients, and touch feedback.

lib · medium confidence

Initial project scaffolding and documentation

The repository was initialized with essential configuration and documentation files. This includes the Flutter project metadata (.metadata), a CODEOWNERS file designating @ahyangnb as the owner, and comprehensive README documentation in both Chinese and English (README.md, README\_EN.md) detailing features, third-party frameworks, and compatibility logs. Additionally, a Dart analysis options file (analysis\_options.yaml) was added to enforce strict coding standards, and a build script (build\_apk.sh) was introduced to automate APK generation. The commit also introduces a dedicated HarmonyOS-specific dependency manifest (pubspec.yaml.harmony) and an issues list (issues\_list.md) to help users resolve common plugin version conflicts.

(repo-wide) · high confidence

Introduce local data store and event bus for state management

Added new files in lib/tools/data to provide a local in-memory store backed by SharedPreferences, along with a publish-subscribe event bus. This enables components to subscribe to data changes and reactively update the UI when the underlying data store is modified.

lib/tools/data · high confidence

Introduce new HTTP client and API layer

Added new HTTP request handling with a dedicated API layer. Users can now update their profile avatar, upload images, and check for app updates through the new API endpoints. The underlying HTTP client uses Dio for network requests with configurable timeouts.

lib/http · high confidence

Introduces centralized configuration and state management for the WeChat Flutter app

Adds a new \lib/config\ directory containing multiple configuration files that define the app's visual theme, API endpoints, and UI strings. Specifically, \const.dart\ and \contacts.dart\ establish color palettes, typography styles, and layout constants for the contact and chat interfaces. \api.dart\ registers external service URLs for name generation, image hosting, and updates. \strings.dart\ provides localized labels for the main navigation tabs (Message, Contacts, Discover, Me) and menu options. Additionally, \provider\_config.dart\ sets up the global state management using the Provider package, while \storage\_manager.dart\ initializes local storage and network connectivity monitoring. These changes collectively establish the foundational configuration layer for the application's UI and data flow.

lib/config · high confidence

New 'Mine' section with profile, QR code, and payment features

Added a new 'Mine' section in the app, introducing several new pages for user profile management and payments. Users can now change their display name, view and share their personal or group QR code cards, and access a new 'Pay' (Wallet) page featuring financial, lifestyle, and shopping services. The 'Mine' page also provides navigation to personal info, language settings, and logout.

lib/pages/mine · high confidence

New IM model layer for chats, contacts, and user data

The app now includes a dedicated model layer in lib/im/model that handles core instant messaging data. ChatDataRep retrieves individual chat messages, while ChatListData fetches the conversation list from the Tencent Cloud Chat SDK. ContactsPageData manages the friend list, sorting and indexing contacts by name. UserDataPageGet retrieves full user profiles and checks if users are already contacts. These changes provide the data layer for the messaging, contact, and user profile features.

lib/im/model · high confidence

New UI view components for WeChat Flutter app

Added several new UI view components to the \lib/ui/view\ directory, including \EditView\ for text input fields, \ImageView\ for handling image display from various sources, \IndicatorPageView\ for page indicators, \ListTileView\ for list items, \LoadingView\ for loading states, \MainInputBody\ for input area styling, \HomeNullView\ for empty states, \MyPopupMenuItem\ for custom pop-up menu items, \SearchMainView\ and \SearchTileView\ for search interfaces, and \ShakeView\ for animation effects.

lib/ui/view · high confidence

New WeChat Moments (Friends Circle) UI and Data Models

Added a new WeChat Moments feature including the main feed page (WeChatFriendsCircle) and a publish dynamic page (PublishDynamicPage). The implementation introduces new data models (FriendsDynamic, VideoBean, ImagesListBean) and UI components (chat\_style.dart, from.dart) to render a social feed with a header background image, user profile, and dynamic list. The code also includes a dialog for selecting images or taking photos, though the actual image picking logic is currently commented out.

_lib/pages/wechat\friends/page · high confidence

New chat UI components for message display and conversation list

The chat interface introduces three new Flutter widgets to handle the conversation list and message details. MyConversationView renders individual items in the conversation list, displaying the user's avatar, title, and message content. ChatDetailsBody manages the scrollable list of messages in the chat detail view, utilizing a reverse ListView to show the latest messages at the bottom. ChatDetailsRow provides the interactive row for each message, supporting voice message playback, emoji insertion, and additional action menus. These components collectively replace or supplement the previous implementation of the chat view, providing a more structured and modular approach to displaying chat history and individual message interactions.

lib/ui/chat · medium confidence

New contact and chat UI components

Added new UI components for the contacts and chat features, including a contact list view with group titles and selection support, a contact card for displaying user details and image previews, a chat member display widget, a chat more icon toggle, a launch group item with search functionality, and a voice recording widget with gesture and state management.

lib/ui/item · high confidence

New contacts and group management screens

Added new pages for managing the user's social graph: a contacts list with alphabetical indexing, a detailed view for individual contacts (including options to send messages, make calls, or view moments), a group chat list, a page to initiate new group chats, and pages for new friend requests and public accounts.

lib/pages/contacts · high confidence

New dialog components for app updates, voice feedback, and friend management

The lib/ui/dialog area now includes several new UI components: an UpdateDialog for managing app version updates with download progress tracking, a voice feedback overlay that displays volume-based icons and a 'voice feature pending' message, a friend item dialog for managing contact actions like deletion, a code dialog for QR code-related options, a confirm alert for standard confirmation prompts, and a simple snack bar helper. These additions introduce new user-facing interactions for updating the app, providing voice feedback, and managing friend contacts.

lib/ui/dialog · high confidence

New group management and member selection pages

Added new Flutter pages for managing group chats, including a group details page to view and edit group information, a members list page to view all group participants, a page to modify the group name or personal nickname, a page to edit the group announcement, and a contact selection interface for inviting new members.

lib/pages/group · high confidence

New message rendering and UI components for chat

Added new UI components to support rendering various message types in the chat interface. This includes a message dispatcher (SendMessageView) that routes different message types (text, image, sound, video, group tips, red packages) to their respective display widgets. Additionally, new widgets were introduced for specific message interactions: an image message container with a long-press action menu, a sound message container, a switch widget for toggling settings, a triangle painter for UI decorations, and a loading/waiting overlay for voice messages.

lib/ui/massage · high confidence

New message types for images, text, audio, video, and group events

The message view now supports rendering a wider variety of message types. Users can view images with a zoomable preview, read text messages with copy/forward options, play audio messages, watch video messages with thumbnails, and see system notifications for group events like joining, leaving, or modifying group info. Additionally, the interface now supports red package (red envelope) messages.

_lib/ui/message\view · high confidence

New root navigation and friend recommendation features

The app now features a new root navigation structure with a bottom tab bar for switching between Home, Contacts, Discover, and Me sections. Additionally, a new 'Recommended Friends' page has been added, allowing users to view and add new friends, with a confirmation alert for support feedback.

lib/pages/root · high confidence

New settings pages for chat background and language selection

Users can now customize their chat experience with new settings pages. A 'Chat Background' page allows selecting or capturing images to use as chat backgrounds, while a 'Language' page lets users switch the app's display language between Chinese and English. These pages are now available in the settings menu.

lib/pages/settings · high confidence

Behavioural changes

Added English and Chinese (Simplified) localization strings for WeChat UI

Users will now see the WeChat interface in English and Simplified Chinese. New translation files (strings\_en.arb and strings\_zh\_CN.arb) have been added to the res/values directory, providing localized text for core navigation elements (Contacts, Discover, Me), login/registration flows, country selection, and legal agreements.

res · high confidence

Added stubs for friend management operations

A new file, fun\_dim\_friend.dart, was added to the lib/im/friend directory, introducing the DimFriend class. This class provides static methods for editing friend notes, retrieving remarks, and handling friend requests, though the underlying platform calls are currently commented out, indicating these are initial scaffolding or stub implementations for friend-related features.

lib/im/friend · medium confidence

Updated Gradle wrapper to version 7.3.3

The Android build system now uses Gradle 7.3.3 via the Gradle wrapper configuration. This update aligns the project with newer Android/Flutter compatibility requirements, ensuring the build environment matches the versions specified in the commit history (Flutter 1.12.13, 1.17, 2.5, and 3.x).

android/gradle · medium confidence

Dependencies

Updated Flutter and native build configurations for compatibility

The project's build system and dependencies have been updated to support modern Flutter versions (SDK \>=3.5.3, Flutter \>=3.24.0) and Android SDK 33. This includes new Android build scripts (build.gradle, settings.gradle, gradle.properties) and an updated pubspec.yaml with current versions of key libraries such as tencent\_cloud\_chat\_sdk, wechat\_assets\_picker, and audioplayers.

(dependencies) · medium 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

Score

  • CAI 48 → 48 (+0.0)
  • Rubric changed (rubric-2026.08.18 → rubric-2026.08.19) — scores are not directly comparable.

Lenses

  • Code Health 96 → 96 (+0.0)
  • Architecture 100 → 100 (+0.0)
  • Maturity 52 → 52 (+0.0)
  • Readiness 17 → 17 (+0.0)
  • Security 90 → 90 (+0.0)
  • Domain Modelling 100 → 100 (+0.0)

Resolved (1)

  • The README mentions 'pubspec.yaml' but does not explain what it contains or how to modify it. (README.md)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

fluttercandies/wechat_flutter 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 5 August 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit c4bf32f48d24abd292305ba2fa7dfa86cebde8eb — the exact code this score is about.
  • Scored under rubric-2026.08.19 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer latest.