iotjin/jh_flutter_demo
55.6
Adequate · 19 September 2026
42.4k
lines of production code
Dart
primary language
1
measurement over time
What this system is
This system is a Flutter-based demonstration application designed to showcase a comprehensive library of reusable UI components, utilities, and architectural patterns. It implements a WeChat-style interface to provide interactive examples for features such as authentication, social feeds, contact management, and complex list interactions. The codebase serves as a technical reference for integrating third-party libraries for networking, state management, and device capabilities within a Material 3 design system.
How it got here
2020 — Initial project scaffolding and demo library creation
34 changes.
The project was initialized with a complete Flutter structure for Android and iOS, establishing a WeChat-style navigation framework and a centralized design system. A comprehensive suite of reusable UI components, utilities, and form widgets was developed alongside extensive demo pages covering charts, lists, animations, and authentication flows.
2022 — WeChat-style UI implementation
13 changes.
This period focused on building a comprehensive set of demo pages and widgets that replicate WeChat's interface, including features for contacts, social feeds, payments, and navigation. The work also expanded the library's core capabilities by adding interactive demos for charts, drag-and-drop sorting, and base UI components, alongside state management for themes and tabs.
2023–2026 — Web support and UI enhancements
4 changes.
The project expanded its platform capabilities by adding web support for the Flutter application, enabling it to run in browsers as a PWA. Significant UI improvements were implemented, including a Material 3 styled search bar with debounced input and internationalization for Chinese and English locales. Additionally, demo pages were created to showcase signature capture functionality using specific libraries.
Features
Add 'Mine' tab page to the application navigation
The application now includes a new 'Mine' tab (FourPage) in its bottom navigation structure. This page serves as the entry point for user profile and account management features, rendering the WxMinePage widget. The implementation ensures the tab state is preserved when switching between tabs by utilizing AutomaticKeepAliveClientMixin.
lib/project/four · high confidence
Add Chinese and English language support
The app now supports Chinese (Simplified) and English locales. This change introduces the internationalization configuration using the GetX framework, including translation files for UI strings and a utility class to manage language switching between system default, Chinese, and English settings.
lib/intl · high confidence
Add GridView demo pages
Added a new set of demo pages in the \lib/demos/gridView\ directory to showcase various GridView implementations. This includes a main list page (\GridViewDemoListPage\) that navigates to specific demos, and five distinct test pages: a basic grid with fixed column count, two variations of a 'Moments-style' nine-picture grid layout using \JhNinePicture\, a complex grid with a stacked bottom list view, and a grid with rounded corners and network images.
lib/demos/gridView, lib/demos/swiper · high confidence
Add OnePage entry point for WeChat-style home
The application now includes a new OnePage widget that serves as the entry point for the main interface, rendering the WxHomePage component. This change establishes the primary navigation target for the app's home screen.
lib/project/one · high confidence
Add SearchBarView widget with Material 3 styling
A new SearchBarView widget has been added to the project, providing a search input field that integrates with the JhSearchBar component. The widget supports customizable text, hint text, maximum length, and background colors, and includes a search button that triggers data requests. It also features debounced input handling for real-time search suggestions and respects Material 3 design principles through dynamic color theming.
lib/project/widgets · high confidence
Add WeChat Pay cell widget
A new WxPayCell widget has been introduced to display WeChat payment options. This component renders a card containing a title and a grid of function items, each featuring an icon and text, which trigger a callback when tapped.
lib/project/four/widgets · high confidence
Add WeChat-style Discover and Friends Circle pages
The app now includes a new Discover page featuring a list of social features (such as Moments, Channels, and Scan) and two implementations of a Friends Circle feed. The feed pages demonstrate a scroll-driven header expansion effect where the header image grows during pull-to-refresh and the navigation bar becomes transparent, along with support for pull-to-refresh, infinite scroll loading, and displaying user posts with images.
lib/project/three/pages · high confidence
Add WeChat-style contacts and friend management pages
New pages have been added to the 'two' project area to replicate WeChat's contact and friend interaction flows. This includes WxContactsPage (an alphabetically sorted contact list with suspension tags and star grouping), WxAddFriendPage (options for radar, QR scan, and phone contacts), WxNewFriendPage (pending friend requests), WxGroupChatPage (group chat list), WxUserInfoPage (detailed user profile view), and WxInfoSetPage (settings for labels, star status, and blacklisting). The contacts page also integrates an index bar for quick navigation.
lib/project/two/pages · high confidence
Add WeChat-style demo pages for home, motion, subscriptions, and QQ mail
New UI pages have been added to the app to demonstrate WeChat-like interfaces: a home page with a slidable list and pop-up menu, a WeChat Motion page showing step rankings, a motion leaderboard with a parallax header, a subscription number list with a search bar, a subscription news feed, and a QQ mail reminder screen. These pages use localized strings via GetX (e.g., IntlKeys) and rely on shared components from jh\_common (BaseAppBar, JhSearchBar, JhToast, JhNavUtils, JhPopMenus, JhQrCodeUtils).
lib/project/one/pages · high confidence
Add WeChat-style list item widgets
Added new UI components for displaying various WeChat-style list items, including home cells with swipe actions, motion ranking cells, QQ message cells, and subscription number cells.
lib/project/one/widgets · high confidence
Add base component demo pages for refresh, shimmer, empty view, and navigation
The lib/demos/base directory now includes a suite of demonstration pages showcasing the library's base UI components. These include BaseListView and BaseGridView with optional shimmer (skeleton) loading states, BaseRefreshView with configurable header/footer behaviors (fixed vs. following scroll), JhEmptyView for displaying empty or error states, and BaseAppBar for customizable navigation bars. These pages serve as interactive examples and integration tests for the underlying widgets in jh\_common.
lib/demos/base · high confidence
Add contacts page to the application
A new TwoPage widget has been introduced to serve as a tab or section for the application, specifically rendering the WxContactsPage. This page is implemented as a StatefulWidget that maintains its state using AutomaticKeepAliveClientMixin, ensuring that the contacts list view persists its state when navigated away from and back to, providing a smoother user experience for this specific section.
lib/project/two · high confidence
Add demo application navigation and routing structure
The demo application now includes a central navigation hub and a comprehensive routing configuration. A new \DemoListPage\ provides a categorized list of available demos (such as UI, charts, forms, and animations) that users can browse and select. The \demos\_router.dart\ file establishes the navigation infrastructure using the Fluro library, defining routes and handlers for all individual demo pages, enabling seamless navigation between these demonstration components.
lib/demos · high confidence
Add drag-and-drop sorting demos for lists and grids
New demo pages have been added to the dragSort section, providing interactive examples of reordering items in both list and grid layouts. The collection includes a navigation entry point, a vertical list sort using ReorderableListView, a grid sort using ReorderableWrap, and a table-based list sort using ReorderableTable. These demos illustrate how to implement drag-to-reorder interactions, handle reordering callbacks, and manage state for sorting actions within the application.
lib/demos/dragSort · high confidence
Add graphic chart demo pages and data
Added new demo pages for bar, line, and pie charts in the graphic module, along with supporting data files (basic, complex, time-series, and echarts-style datasets) to showcase chart rendering capabilities.
lib/demos/chart/graphic · high confidence
Add login, registration, code login, and password recovery pages
The app now includes a complete authentication flow with four new screens: a standard login page (with username/password, auto-fill, and validation), a code-based login page (phone number + SMS verification code with countdown), a registration page (phone, verification code, password, and terms agreement), and a password recovery page (username and password reset). All pages use the shared JhLoginTextField and JhButton components, support internationalization via GetX, and handle navigation to the home screen or back upon completion.
lib/project/login/pages · high confidence
Add new feature onboarding screen with image carousel
Users are now presented with a new feature onboarding page that displays a full-screen, swipeable carousel of images. The implementation uses a custom JhSwiperView component to handle the sliding interaction and includes a dot indicator at the bottom to show the current slide. The final slide features a 'Start Now' button that navigates the user to the login screen upon tapping.
_lib/project/new\feature · high confidence
Add top tab bar demo pages with scroll and refresh behaviors
The lib/demos/topTabBar area now includes a suite of demo pages showcasing the JhTopTabBar and JhTabBar widgets. These demos illustrate various scroll and refresh patterns: basic tab switching (TopTabBarTest1-2), badge indicators (TopTabBarTest3), and header/footer following scroll (TopTabBarTest4). Additionally, personal center demos (PersonalCenterPage1-5) demonstrate advanced behaviors such as background image expansion on pull-to-refresh, custom refresh indicators, and cached scrolling with nested scroll views.
lib/demos/topTabBar · high confidence
Added WeChat-style contact and friend request UI widgets
New Flutter widgets have been introduced to render WeChat-style list items: WxAddFriendCell for displaying friend request cells, WxNewFriendCell for handling new friend notifications with accept/add buttons, and WxContactsCell for the contacts list with support for slidable actions (like renaming) and search functionality. These components utilize the project's color configuration and internationalization keys for consistent styling and localized text.
lib/project/two/widgets · high confidence
Added data models for WeChat feature modules
Introduced new data model classes to support various WeChat-related features, including WxPayModel for payment interactions, WxHomeModel and WxMotionModel for the home screen and fitness tracking, WxFriendsCircleModel for social feeds, and WxContactsModel (integrating ISuspensionBean for alphabetical sorting) for the contact list. Additional models such as WxSubscriptionNumberModel, WxAddFriendModel, and WxQQMessageModel were also added to handle subscription content, friend requests, and email notifications respectively.
(repo-wide) · high confidence
Added demo pages for SlideMenu, Collapse, and Tag components
New demonstration pages have been added to the components section, providing interactive examples for the horizontal sliding menu (JhSlideMenuView), the collapsible panel (JhCollapseView), and the tag view (JhTagView). These pages showcase various styling options, data binding, and interaction callbacks for each widget, and are now accessible via the updated component demo list.
lib/demos/components · high confidence
Added demo pages for hand\_signature and signature libraries
New demo pages have been added to the \lib/demos/signature\ directory to showcase the \hand\_signature\ and \signature\ libraries. The \HandSignatureTestPage\ demonstrates the \hand\_signature\ library with a custom drawer and specific export dimensions (1000x400), while the \SignatureTestPage\ demonstrates the standard \signature\ library using its default controller. Both pages provide a UI for capturing signatures, rotating the output for landscape orientation, and exporting the result as a PNG image.
lib/demos/signature · high confidence
Added route navigation demo pages for value passing and lifecycle management
The \lib/demos/route\_test\_page\ directory now includes a set of demonstration pages (\RouteDemoListPage\, \PassValuePage\, \PassValuePage2\, \PassValuePage3\, \RouteTestPage1\, \RouteTestPage2\) that showcase navigation patterns. These pages demonstrate passing arguments between routes using both custom \JhNavUtils\ wrappers and standard Flutter \Navigator\ methods, handling return values, and managing page lifecycle events like appearance and disappearance via \RouteAware\. Additionally, \RouteTestPage2\ illustrates how to intercept and disable system back gestures and Android hardware back buttons using \PopScope\.
_lib/demos/route\_test\page · high confidence
Added search demo pages with debounce and throttle controls
The lib/demos/search area now includes a navigation list (SearchDemoListPage) and six demo pages (SearchTest1Page through SearchTest5Page, plus DebounceThrottleTestPage) that showcase various search bar implementations. These demos demonstrate how to integrate JhTextField, JhLoginTextField, JhSearchBar, and a custom SearchBarView, while explicitly applying debouncing and throttling logic via JhCommonUtils to input callbacks and button presses to optimize performance.
lib/demos/search · high confidence
Added static resource files for UI data and documentation
The lib/res directory now includes several new static files to support application data and development guidance. This includes JSON fixtures for mock data such as Chinese city lists (china.json), WeChat-style contacts (wx\_contacts.json), social feed posts (wx\_friends\_circle.json), and step-count leaderboards (wx\_motion\_top.json), alongside Dart data structures (list\_data.dart) and other JSON samples (JsonData, JsonData2, test.json). Additionally, developer documentation (note.md, note2.md) has been added, covering Flutter CLI commands, Android APK build configurations (including ABI splitting and Fat APK considerations), and Web build instructions.
lib/res · high confidence
Added theme and tabbar state management providers
New provider classes have been introduced to manage application state: \ThemeProvider\ handles theme selection (light, dark, blue, purple, and system mode) with persistence and Material 3 support, while \TabbarProvider\ manages the currently selected tab index. These changes enable users to customize the app's appearance and navigation state, with theme preferences saved locally and applied via Material 3 styling.
lib/project/provider · high confidence
Added web platform support for the Flutter application
The application now supports running in web browsers. This change introduces the standard web entry point files, including \index.html\ for bootstrapping the Flutter engine and \manifest.json\ for configuring the app as a standalone PWA with specific icons and theme colors.
web · high confidence
Initial Android application scaffolding for the Flutter demo
The Android module has been initialized with the standard Flutter project structure, including the main AndroidManifest.xml, MainActivity, and resource files. This setup configures the app to run as a Flutter application (embedding v2) and declares necessary permissions for internet access, camera, storage, and media on modern Android versions, while also setting up a FileProvider for file sharing.
android/app · high confidence
Initial iOS project scaffolding for Flutter app
The iOS directory has been initialized with the standard Flutter project structure, including the Xcode workspace, project configuration, and build schemes. This setup establishes the native iOS host application (Runner) that embeds the Flutter engine, defines the app icon and launch screen assets, and configures the Info.plist with necessary permissions (camera, photo library, microphone) and URL scheme queries for map applications.
ios · high confidence
Initial project scaffolding and documentation
The repository has been initialized with the core Flutter project structure, including the \.metadata\ file for Flutter tooling, \analysis\_options.yaml\ for linting, and an updated \.gitignore\. Comprehensive documentation has been added, with \README.md\ and \README.zh-CN.md\ detailing the project's capabilities (such as Material3 support, dark mode, and various UI components), the required environment (Flutter 3.38.2, Dart 3.10.0), and the BSD 2-Clause license.
(repo-wide) · high confidence
Introduction of centralized design system and configuration layer
The application now includes a dedicated configuration layer in lib/project/configs that centralizes UI assets and settings. This introduces a comprehensive color palette (KColors) with explicit support for dark mode adaptation, standardizing typography and spacing through KDimens and KStyles, and providing reusable layout widgets via KGaps. Additionally, project\_config.dart serves as a central export hub, integrating internationalization support via GetX and exposing common utilities, HTTP helpers, and navigation utilities to simplify access across the codebase.
lib/project/configs · high confidence
New HTTP demo pages for Dio usage and paginated list views
Added a new HTTP demo section featuring a list page that navigates to three specific demos: a basic Dio request page (HttpTest1Page) demonstrating GET/POST calls with a mock interceptor, a standard paginated list page (HttpPageTestPage) using EasyRefresh 2.x for pull-to-refresh and load-more, and a paginated list page with header/footer following (HttpPageTestHeaderFollowPage) using EasyRefresh 3.x builder API. Includes supporting model and cell widgets for displaying paginated data.
lib/demos/http · high confidence
New JhForm UI component library for Flutter forms
The lib/jh\_common/jh\_form package now provides a comprehensive set of reusable form widgets, including JhCountDownBtn for SMS verification code timers, JhFormInputCell and JhFormSelectCell for structured input and selection rows, JhLoginTextField and JhTextField for customizable text entry, JhSearchBar for search interfaces, and JhSetCell for settings-style list items. It also includes JhFormUtils for input validation strategies (e.g., phone, password, length limits) and JhKeyboardUtils for keyboard management. These components support dark mode theming via the project's ThemeProvider and are exported via jh\_form.dart.
_lib/jh\_common/jh\form · high confidence
New JhForm demo pages added
Added a set of demonstration pages for the JhForm component library, including a main list page and specific test pages for JhLoginTextField, JhTextField, JhFormInputCell, JhFormSelectCell, JhSetCell, and form validation scenarios. These pages showcase various configuration options such as input formatting, styling, and validation rules.
lib/demos/form · high confidence
New ListView demo pages with grouping, sticky headers, and pagination
The \lib/demos/listView\ area now includes a comprehensive set of demo pages showcasing various ListView patterns. These include basic list displays (\listview\_test\ through \listview\_test5\), a card-based layout (\listview\_test\_card\), and custom cell implementations (\listview\_test\_custom\_cell\, \listview\_test\_custom\_vc\). New additions feature grouped lists with sticky headers (\listview\_group\_page\, \listview\_group\_page2\, \listview\_group\_page3\), utilizing the \sticky\_headers\ package for section titles that remain visible during scroll. Additionally, \listview\_header\_page\ demonstrates sliver-based scrolling with fixed headers and footers, while \listview\_test\_pull\_down\_vc\ implements pull-to-refresh and infinite scroll loading using \EasyRefresh\.
lib/demos/listView · high confidence
New UI demonstration pages added to the demo app
Added several new demo pages under lib/demos/ui to showcase Flutter UI components and patterns. UIDemoListPage serves as the entry point, listing links to UIPage, UIPage2, UIPage3, ScrollPage, and GrammarTestPage. UIPage demonstrates various Material widgets including buttons, images, and lists. UIPage2 focuses on stateful controls like Switches, Checkboxes, and Radio buttons. UIPage3 provides a Material 3 test environment, displaying text themes and a comprehensive set of button styles (Text, Elevated, Outlined, Filled, Tonal, and Floating Action Buttons). ScrollPage illustrates scrolling behavior with a Scrollbar and SingleChildScrollView, while GrammarTestPage demonstrates class inheritance in Flutter widgets.
lib/demos/ui · high confidence
New UI demonstration pages for scrolling effects, theming, and app information
This change introduces a suite of new Flutter pages in the 'four' project section to demonstrate specific UI behaviors and application settings. Users can now view and interact with 'About' pages (including a dedicated iOS version) that display app versioning and check for updates via the App Store or Android APIs. A new 'Theme' page allows toggling between system-follow and light modes, while a 'Locale' page enables language selection. Additionally, several pages demonstrate advanced scrolling and layout techniques, including parallax image expansion on pull-down, fade-in/fade-out app bars, and sticky tab bars within sliver lists.
lib/project/four/pages · high confidence
New animation demo pages for shake, 3D tag cloud, Lottie, and wave effects
The app now includes a dedicated Animation demo section with a navigation list and several new demonstration pages. Users can explore a shake animation demo (AnimationTestPage) featuring pulse, shake, and scale effects, as well as multiple 3D tag cloud variations (Ball3DPage, Ball3DPage2, Ball3DPage3, Ball3DPage4) that allow interactive rotation and speed control. Additionally, new pages demonstrate Lottie animations (LottiePage) and wave animations (WavePage), providing visual examples of these capabilities within the app.
lib/demos/other/animation · high confidence
New chart demo pages and navigation list added
The chart demo section now includes a navigation list page (ChartDemoListPage) that routes to various chart implementations. New demo pages have been added for community\_charts\_flutter (bar and line charts with selection handling) and flutter\_echarts (smooth line charts with gradient areas, multi-chart layouts, dynamic data binding, and time-series data). Additionally, placeholder pages for mp\_chart (bar, line, and combined charts) have been added, though their content is currently commented out.
lib/demos/chart · high confidence
New common widget library for Flutter applications
The lib/jh\_common/widgets directory now includes a comprehensive suite of reusable UI components, introducing features such as BaseRefreshView for list-based data with pull-to-refresh and skeleton screens, BaseWebView for handling web content with progress indicators, and various selection tools including JhAssetPicker (image/video), JhCascadePicker, and JhCascadeTreePicker. The update also adds utility widgets like JhAlert and JhBottomSheet for native-style dialogs, JhButton and ClickItem for interactive elements, JhBadge for notifications, GradientAppBar for styled headers, and JhCollapseView for expandable content sections.
_lib/jh\common/widgets · high confidence
New demo pages for alert, bottom sheet, and picker components
Added a new set of demonstration pages in the alert demo location to showcase the behavior of various UI components. This includes an alert demo list page, specific test pages for JhAlert (center and bottom sheets with various button configurations), JhDialog (including input fields, custom content, and event interception), JhBottomSheet, JhPickerTool (single/multi-column, date pickers), JhCascadePicker (up to five columns), and JhCascadeTreePicker (tree-structured data with search and default selection). These pages serve as interactive examples for developers to understand how to integrate and configure these specific widgets.
lib/demos/alert · high confidence
New demo pages for encryption, media, and device utilities
Added several new demonstration pages in the lib/demos/other directory to showcase various utility capabilities. The aes\_test\_page demonstrates Base64, AES, and MD5 encryption/decryption along with local encrypted storage. The media\_preview\_test\_page provides a list-based interface for previewing images and videos using JhMediaBrowser. The device\_info\_test page displays detailed platform-specific device information for Android, iOS, Linux, Windows, macOS, and Web. Additionally, new pages were added for QR code scanning and generation (qr\_code\_test), city selection lists with pinyin sorting (city\_select\_list\_page), form input handling with keyboard management (form\_test), map navigation integration (map\_jump\_test\_page), permission requests (permission\_test), photo/video asset picking (photo\_select\_test), red dot badges (red\_dot\_page), and list item side-swipe actions (sideslip\_test\_page).
lib/demos/other · high confidence
New local mock API layer and HTTP utilities
The lib/http directory now includes a complete HTTP abstraction layer built on Dio, featuring a centralized API definition (apis.dart) with a local mock switch (kEnableLocalMock) that intercepts requests via MockInterceptor to return fake data instead of hitting the real backend. This setup includes Dio configuration utilities (dio\_utils.dart), a high-level request wrapper (http\_utils.dart) with loading indicators and error handling, authentication and token-refresh interceptors (intercept.dart), and a logging utility (log\_utils.dart), allowing developers to toggle between mock and real endpoints without changing application code.
lib/http · high confidence
New login and onboarding route definitions
The application now defines specific navigation routes for the login module and new feature onboarding. Users can navigate to the login, registration, password recovery, and code-based login pages, as well as the new feature introduction page and its full-screen swiper widget, via the fluro router.
lib/project/login · high confidence
New utility library for Flutter app development
Added a comprehensive set of utility classes in lib/jh\_common/utils to streamline common development tasks. These include JhColorUtils for color manipulation and Material theme generation, JhCommonUtils for random number generation and debounce/throttle operations, JhDeviceUtils for platform detection and package info retrieval, and JhEncryptUtils for Base64, MD5, and AES encryption. Additional utilities cover image handling (JhImageUtils), map navigation (JhMapUtils), network monitoring (JhMonitorNetworkUtils), navigation routing (JhNavRouterUtils), permission management (JhPermissionUtils), QR code generation and scanning (JhQrCodeUtils), screen adaptation (JhScreenUtils), status bar configuration (JhStatusBarUtils), encrypted storage (JhAESStorageUtils), string manipulation (JhStringUtils), theme management (JhThemeUtils), and time formatting (JhTimeUtils, JhUTCTimeUtils).
_lib/jh\common/utils · high confidence
Behavioural changes
Introduce BotToast for in-app notifications and add BaseAppBar for consistent navigation headers
The application now uses the BotToast library to display toast messages and loading indicators throughout the UI, replacing previous notification mechanisms. Additionally, a new BaseAppBar widget has been added to provide a standardized, customizable navigation bar with support for gradient backgrounds, dark mode, and flexible left/right content, ensuring a consistent look and feel across all screens.
lib · high confidence
Introduction of WeChat-style navigation and routing structure
The application now features a four-tab bottom navigation bar (Home, Contacts, Discover, Me) that mirrors a WeChat-style interface. This change introduces a new \BaseTabBar\ component managing the tab state and page switching, alongside a \MainRouter\ that registers routes for the new tab pages and associated sub-pages (such as Friends Circle, Pay, and Theme settings). The 'Discover' tab specifically renders a \WxDiscoverPage\, establishing the new visual and navigational layout for these core sections.
lib/project · high confidence
Migrate navigation to Fluro router with modular route registration
The application's navigation system has been replaced with the Fluro routing library, introducing a new modular architecture where route definitions are split across dedicated providers (LoginRouter, DemosRouter, MainRouter) rather than a single monolithic map. This change adds a centralized route observer for tracking page visibility, a navigation utility class (JhNavUtils) supporting various transition types and argument passing, and a dedicated 404 page for undefined routes, while the previous static route map is preserved in a legacy file.
lib/project/routes · high confidence
Updated Gradle wrapper to version 8.14
The Android build system now uses Gradle 8.14 (via a mirror distribution) instead of the previous version 7.5. This change updates the underlying build tooling used to compile and package the Android application, which may affect build performance and compatibility with existing Gradle plugins.
android/gradle · high confidence
Test coverage
Added smoke test for the main application widget
Added a new widget test in test/widget\_test.dart that verifies the basic functionality of the MyApp component, specifically checking that the counter starts at 0 and increments correctly when the add icon is tapped.
test · high confidence
Dependencies
Initial project setup with Flutter 3.38 and extensive dependency library integration
This change introduces the foundational configuration for the JH Flutter Demo application, establishing a baseline environment with Flutter SDK 3.38.0+ and Dart 3.10.0+. It configures the Android build system to use Android Gradle Plugin 8.11.1 with Java 17 and Kotlin 2.2.20, and sets the iOS deployment target to 13.0. The project integrates a comprehensive suite of third-party libraries for core functionality, including Dio for networking, Provider for state management, and GetX for internationalization. It also adds support for UI components (EasyRefresh, StickyHeaders, Lottie, Shimmer), media handling (Video Player, Chewie, WeChat Asset Picker), device capabilities (Permission Handler, Device Info, Webview), and utilities (QR Code scanning, Encryption, Shared Preferences).
(dependencies) · 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 56.
Lenses
- Code Health 93
- Architecture 97
- Maturity 85
- Readiness 18
- Security 86
- Domain Modelling 100
Changes since last survey
- 127 commits — 123 feature/other, 4 fixes
By area
- lib/demos — 39 commits
- (root) — 25 commits
- lib/jh_common — 23 commits
- lib/project — 13 commits
- lib/demoLists — 7 commits
- android/app — 4 commits
- lib/JhTools — 4 commits
- assets/images — 3 commits
- assets/wechat — 3 commits
- (repo) — 2 commits
- ScreenShot/JhSwiperView.gif — 1 commit
- ios/Runner — 1 commit
- lib/http — 1 commit
- lib/res — 1 commit
Notable commits
- fix: Fix #20
- fix: JhForm fix
- fix: fix JhForm
- fix: fix bug
- change: Add BaseRefreshView and JhEmptyView
- change: Add BotToast
- change: Add Internationalization (use GetX)
- change: Add JhCascadePicker
- change: Add JhMediaBrowser
- change: Add JhSlideMenuView
- change: Add JhSwiperView
- change: Add ScreenShot
- change: Add ScreenShot
- change: Add animation
- change: Add example of cross sliding
- change: Add lottie、wave animation
- change: Add theme settings
- change: Add web platform support
- change: Android supports flavors
- change: Dark mode adaptation
- …and 107 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
iotjin/jh_flutter_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 bddf9b4b69054a7c4616ac299d7895774b32fe00 — 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.