Skip to content
CAI
Software that uses CAICheck a score

simplezhli/flutter_deer

60.2

Adequate · 23 September 2026

17.8k

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 Flutter application designed for store management and operations, supporting Android, iOS, macOS, and Windows. It provides comprehensive features for managing goods, orders, and shop settings, alongside user account management and statistical reporting. The application includes a suite of UI demonstrations for Flutter capabilities and is supported by extensive integration and accessibility testing.

How it got here

2019 — Flutter 3 migration and architectural overhaul

62 changes.

The project underwent a comprehensive migration to Flutter 3 and Dart 3, upgrading the Android and iOS native layers to modern standards and replacing legacy navigation with a centralized Fluro routing system. This period introduced a new MVP architecture, a robust Dio-based network layer with isolate parsing, and extensive dark mode support across all modules. Concurrently, the codebase was refactored for null safety and modern widget patterns, accompanied by the addition of extensive integration and accessibility tests.

2020–2025 — Platform expansion and demo library

27 changes.

The project expanded its desktop support by adding native runners for macOS and Windows, while simultaneously migrating its localization and JSON serialization systems to modern, null-safe standards. A comprehensive demo library was built to showcase various Flutter capabilities, including Navigator 2.0 routing, animations, and custom UI widgets, accompanied by extensive accessibility and integration testing across the application.

Features

Add Flutter Navigator 2.0 delegate demo implementation

The demo now includes a functional example of the declarative Navigator 2.0 API, featuring a \BookRouterDelegate\ that manages the top-level navigation state (switching between a book list and settings) and an \InnerRouterDelegate\ that handles nested navigation within the book list, including a custom fade animation for page transitions.

lib/demo/navigator/delegate · high confidence

Add login, registration, and password management pages

The login module now includes dedicated UI pages for password-based login, SMS code login, user registration, password reset, and password updates. These pages provide the user-facing forms for entering credentials, requesting verification codes, and managing account security, utilizing localized strings for labels and hints.

lib/login/page · high confidence

Add overlay-based bottom navigation demo

A new demo page has been added that demonstrates a fixed floating BottomNavigationBar using Flutter's Overlay API. The navigation bar remains visible while scrolling and includes an animation on tab switches. It also handles state restoration when navigating to secondary pages and allows direct return to the main view from within those pages.

lib/demo/overlay/page · high confidence

Added Focus management demo page

A new demo page has been added to the application that demonstrates Flutter focus management. It includes a TextField connected to a FocusNode and buttons to dump the current focus tree and navigate to a test page, allowing users to inspect how focus nodes behave within the widget hierarchy.

lib/demo/focus · high confidence

Added Lottie animation demo with interactive bunny character

A new demo page has been added to showcase Lottie animations, featuring an interactive bunny character that reacts to user input. The implementation includes a state machine (\bunny.dart\) that manages transitions between neutral, tracking, shy, and peek states based on focus and text input in the demo form (\lottie\_demo.dart\). The demo also demonstrates a workaround for a Flutter issue where \selectionHandleColor\ does not apply as expected by explicitly setting it in the theme.

lib/demo/lottie · high confidence

Added SelectedDateButton widget for statistics date selection

A new \SelectedDateButton\ widget has been introduced in the statistics module to handle date selection interactions. This component supports configurable text, font size, and selection states, applying specific visual styles such as gradients and shadows when selected. It also includes logic to format text ending in month or day characters with distinct styling and respects accessibility labels for screen readers.

lib/statistics/widgets · high confidence

Added macOS platform support

The application now supports macOS, allowing users to run the app on Apple desktop systems. This change introduces the native macOS project structure, including the Xcode project configuration, app icon assets, and the main menu interface. It also registers essential plugins such as device info, file selection, shared preferences, and window management to ensure core functionality works on the new platform.

macos · high confidence

Added navigator demo screens and shell

The demo application now includes a set of new screens and an app shell to demonstrate the Flutter Navigator 2.0 pattern. This location contributes the UI components for the books feature, including a list view (BooksListScreen), a details view (BookDetailsScreen), and a placeholder settings view (SettingsScreen). These are wrapped in an AppShell that manages the bottom navigation bar and integrates with the inner router delegate to handle back-button dispatching and state synchronization.

lib/demo/navigator/screen · high confidence

Added nested navigation demo using Flutter's new Router API

A new demo application for nested navigation has been added to the library under lib/demo/navigator. This example demonstrates the modern Flutter routing approach by implementing a Books app that uses MaterialApp.router with a custom BookRouterDelegate and BookRouteInformationParser. The demo includes state management via BooksAppState to handle book selection and navigation between list, settings, and detail views, serving as a reference implementation for developers migrating from the old Navigator 1.0 API.

lib/demo/navigator · high confidence

Added neumorphic container demo widget

A new NeumorphicContainer widget has been added to the demo widgets library, providing a neumorphic design style with interactive press states. This widget supports customizable bevel size, background color, and child content, utilizing gradient and shadow effects to create the characteristic soft UI appearance.

lib/demo/widgets · high confidence

Added order search presenter with provider-based state management

Introduced a new OrderSearchPresenter that handles order search logic by fetching data via the network and updating the UI state through a provider. The presenter manages pagination, clears the list on refresh, and handles empty or network error states, marking the completion of the order module's presenter layer.

lib/order/presenter · high confidence

Added overlay demo application entry point

A new entry point file for the overlay demo has been added, initializing the Flutter application with a blue-themed Material app and registering a custom navigator observer to track navigation state within the demo.

lib/demo/overlay · high confidence

Added ripple animation demo page

A new demo page has been added to the application that showcases a ripple animation effect. The page features a central button with a pulsating scale transition and a custom painter that renders expanding, fading circular waves around the button, providing a visual example of Flutter animation capabilities for users.

lib/demo/ripple · high confidence

Added route tracking demo components

The demo now includes a navigator observer and application state holder to track route changes, enabling users to see how route stacks are managed and cleared within the overlay context.

lib/demo/overlay/route · high confidence

Added scratch card demo page

A new demo page has been added to the application that showcases the scratch card widget functionality. Users can now view an interactive example where they can scratch off a grey overlay to reveal a logo underneath, with controls to reset the card or manually reveal the content.

lib/demo/scratcher · high confidence

Added search result data models

New model classes (SearchEntity, SearchItems, SearchItemsOwner) have been added to the order models layer to represent GitHub search API responses, enabling the application to parse and handle search result data.

lib/order/models · high confidence

Introduce MVP presenter for the shop page

Added ShopPagePresenter to manage the shop page's business logic using the MVP pattern. This presenter handles initial network requests for user data and provides a method for testing list data parsing, integrating with the existing network utility and view interfaces.

lib/shop/presenter · high confidence

Introduce state management for goods page tabs and category selection

Added two new provider classes, GoodsPageProvider and GoodsSortProvider, to manage the state of the goods page. GoodsPageProvider tracks the current tab index, the selected category sort index, and the count of items in each tab, notifying listeners when these values change. GoodsSortProvider handles the logic for a three-level category selection interface, including loading static JSON data for categories, managing the active list based on the selected tab level, and updating the tab bar labels dynamically as the user navigates through the hierarchy.

lib/goods/provider · high confidence

Introduction of Home, Splash, and WebView modules with dark mode and restoration support

The app now includes a new Home module featuring a tabbed interface (Order, Goods, Statistics, Shop) that supports dark mode and preserves the selected tab across app restarts via Flutter's restoration API. A Splash page has been added to handle onboarding, preloading guide images to prevent visual flicker, and managing Android quick actions. Additionally, a WebView page is introduced that displays web content with a progress indicator and handles back-navigation logic.

lib/home · high confidence

Introduction of MVP architecture pattern

The library now includes a new Model-View-Presenter (MVP) implementation to structure Flutter application logic. This adds core infrastructure files including lifecycle interfaces, base presenter and view abstractions, and a \PowerPresenter\ for managing multiple presenters. It also provides a \BasePagePresenter\ that encapsulates network request handling using Dio and includes a utility for image uploads, allowing developers to adopt this architectural pattern for new or refactored screens.

lib/mvp · high confidence

New Demo page with updated navigation and new effect examples

The demo section now features a consolidated DemoPage that serves as the entry point for various UI examples. This page has been updated to use Flutter 3.0.0 compatible syntax (super parameters) and includes new demonstrations for Lottie animations and a ScratchCard effect. Existing demo links for Overlay, Focus, RipplesAnimation, and Navigator 2.0 have been retained, providing users with a centralized location to explore these specific Flutter capabilities.

lib/demo · high confidence

New account widgets and refactored password dialog

This change introduces three new widgets in the account module: RiseNumberText for animated number transitions, SMSVerifyDialog for secure code entry with keyboard handling, and WithdrawalAccountItem featuring a 3D flip animation for payment methods. Additionally, the withdrawal password setting logic has been refactored from a dialog into a new widget (WithdrawalPasswordSetting) with improved UI structure and accessibility support via Semantics.

lib/account/widgets · high confidence

New demo component for custom bottom navigation bar with animated indicator

Added a new demo widget, MyBottomNavigationBar, which implements a custom bottom navigation bar featuring an animated indicator that slides between selected items. The component supports configuration for the indicator's visibility, icon colors, and icon sizes, and includes proper resource disposal in its state lifecycle.

_lib/demo/overlay/bottom\navigation · high confidence

New exit and update dialogs in settings

The settings area now includes dedicated UI components for user actions: an exit dialog that prompts users to confirm logout before redirecting them to the login screen, and an update dialog that manages app version checks. The update dialog allows users to decline or proceed with updates, displaying a progress bar during Android APK downloads and directing iOS users to the App Store, while preventing dismissal during the download process to enforce upgrades.

lib/setting/widgets · high confidence

New goods management pages and QR scanning capability

This change introduces the complete UI layer for the goods module, adding pages for listing, editing, searching, and managing product specifications (sizes), along with a new QR code scanner page. Users can now add and edit product details (name, price, barcode), view goods in a tabbed list with pull-to-refresh, and manage size variants with swipe-to-delete actions. The goods edit page integrates a QR scanner to auto-populate barcodes, and the list page includes Hero animations for smooth image transitions when navigating to edit views.

lib/goods/page · high confidence

New locale and theme providers for app settings

Added LocaleProvider and ThemeProvider classes to manage application language and appearance settings. The LocaleProvider handles switching between Chinese (zh\_CN) and English (en\_US) locales, persisting the choice via shared preferences. The ThemeProvider manages light, dark, and system theme modes, providing a ThemeData configuration that explicitly disables Material 3, sets primary and background colors based on the active theme, and configures text selection colors using the modern TextSelectionThemeData API to ensure compatibility with newer Flutter versions.

lib/setting/provider · high confidence

New order management screens and state providers

The order module now includes dedicated pages for viewing order details (OrderInfoPage), tracking order status (OrderTrackPage), searching orders (OrderSearchPage), and managing the main order list with tabs (OrderPage and OrderListPage). These pages are backed by new ChangeNotifier providers (OrderPageProvider and BaseListProvider) to handle tab state and list data, and they incorporate accessibility improvements such as MergeSemantics and SelectableText for better screen reader support.

lib/order/page · high confidence

New reusable login input field widget

Added a new \MyTextField\ widget in the login module that encapsulates common input behaviors for login screens, including password visibility toggling, input clearing, and SMS code countdown functionality. The widget handles specific Android keyboard issues and supports localization for accessibility labels.

lib/login/widgets · high confidence

New settings pages for theme, locale, and account management

The settings area now includes dedicated pages for managing the application's theme (dark/light/system), language locale (Chinese/English/system), and account details. Users can navigate to these new screens from the main Settings page to customize their appearance and language preferences, with changes persisted via local storage. The Account Manager page allows users to view their bound account and navigate to password update functionality. Additionally, the About page has been reorganized to support web navigation on non-mobile platforms.

lib/setting/page · high confidence

Windows desktop application support added

The Windows desktop runner is now available, allowing the app to run as a native Windows application. This includes a single-instance check that brings an existing window to the foreground if a second instance is launched, a custom run loop to integrate Flutter with the Windows message pump, and high-DPI awareness for proper scaling on different monitors.

windows/runner · high confidence

Removals

Removal of legacy constant definitions

The \lib/common/common.dart\ file containing the \Constant\ class (which previously defined \key\_guide\ and \phone\ constants) has been removed from the codebase. This cleanup eliminates unused or legacy shared constants, likely as part of ongoing code style improvements and refactoring efforts.

lib/common · high confidence

Behavioural changes

11 commits (0 fixes) modifying preview

A change to existing behaviour in preview — 11 commits, 31 files.

preview · medium confidence · unverified

Account module pages migrated to new layout and navigation patterns

The account module pages (including Account, Withdrawal, and Record lists) have been reorganized under the lib/account/page directory. This change replaces the legacy app\_bar and sticky\_headers widgets with the shared MyAppBar and native Flutter slivers (SliverMainAxisGroup, SliverPersistentHeader) for sticky headers, and updates navigation to use the centralized fluro\_navigator. Additionally, accessibility is improved via MergeSemantics and IndexedSemantics, and UI consistency is enhanced by adopting theme-aware colors and the LoadAssetImage widget.

lib/account/page · high confidence

Added ProGuard rules for AMap components

The app now includes a proguard-rules.pro file that preserves specific AMap (Gaode Map) classes, including location, search, and 2D map APIs, ensuring these libraries function correctly after code shrinking and obfuscation.

android/app · high confidence

App initialization and navigation architecture overhaul

The application's startup sequence and navigation structure have been significantly restructured. The entry point in main.dart now initializes core services (Dio, SpUtil, window management for desktop) within a centralized error-handling zone before launching the app, replacing the previous direct runApp call. Navigation has shifted from a hardcoded BottomNavigationBar in a deleted home\_page.dart to a router-based system using the 'routers' package, with the splash page now handling initial routing logic. Additionally, the app now supports dynamic theming and localization via Provider, integrating ThemeProvider and LocaleProvider to manage UI appearance and language settings at runtime.

lib · high confidence

Bezier chart widget gains hourly scale, data aggregation, and extensive configuration options

The bezier chart widget in lib/widgets/bezier\_chart has been significantly updated to support new data visualization capabilities and finer control over appearance. A new HOURLY scale has been added to BezierChartScale, and a BezierChartAggregation enum (supporting AVERAGE, SUM, FIRST, COUNT, MAX, MIN) allows users to define how data points are aggregated. The widget now exposes numerous configuration options via BezierChartConfig, including toggles for displaying the Y-axis and vertical lines, custom text styles for bubbles and axes, and options to update the bubble indicator on tap instead of long press. Additionally, the BezierLine class now supports custom fill and stroke colors for data points, and the underlying scroll view implementation has been updated to use null safety and modern Flutter APIs.

_lib/widgets/bezier\chart · high confidence

Dark mode support and UI resource refactoring

The \lib/res\ module has been updated to support a dark theme by introducing \dark\_\ prefixed color constants in \colors.dart\ (e.g., \dark\_bg\_color\, \dark\_text\) and corresponding dark-mode text styles in \styles.dart\. Additionally, spacing utilities have been consolidated into a new \gaps.dart\ file, dimension constants in \dimens.dart\ have been standardized to doubles, and a new \constant.dart\ file was added to centralize app-wide constants such as environment flags and storage keys.

lib/res · high confidence

Home provider now persists page state using RestorableInt

The new HomeProvider class in the home provider module extends RestorableInt, enabling the application to automatically save and restore the current page index across app restarts or lifecycle events. This ensures that users return to the same tab or view they were previously on, rather than resetting to the default initial state.

lib/home/provider · high confidence

Introduce order item widgets and refactor payment dialog

The order module now includes dedicated widgets for displaying order details (OrderItem) and date-grouped order summaries (OrderTagItem), providing a structured UI for order lists. Additionally, the payment type selection dialog (PayTypeDialog) has been refactored to use modern Flutter APIs (such as super parameters and null-safe callbacks), replaced Offstage with Visibility for better performance, and migrated to use the centralized router for navigation, ensuring consistent behavior across the app.

lib/order/widgets · high confidence

Login module migrated to Fluro routing

The login area now uses the Fluro library for navigation instead of the previous AppNavigator utility. This change introduces a new LoginRouter that registers routes for the login, registration, SMS login, password reset, and password update pages, while the corresponding page files have been removed from this location as their routing logic is now centralized in the router definition.

lib/account, lib/goods, lib/login · high confidence

Migrate order module to fluro routing

The order module now uses the fluro library for navigation. A new OrderRouter class defines routes for the order list, order details, search, and tracking pages, replacing the previous direct navigation approach.

lib/order · high confidence

Migrate routing to Fluro with unified navigation utilities

The application now uses the Fluro library for route management, replacing the previous navigation approach. This introduces a centralized routing configuration in \lib/routers/routers.dart\ that defines core routes (home, web view) and delegates module-specific route registration (shop, login, goods, order, store, account, setting, statistics) to individual providers. A new \NavigatorUtils\ class provides a consistent API for navigation, including methods to push pages, handle results, go back, and navigate to web views, while automatically unfocusing the keyboard to improve user experience. Additionally, a \NotFoundPage\ is displayed for undefined routes, and a \NoTransitionsOnWeb\ theme is applied to disable page transition animations on the web platform for better performance.

lib/routers · high confidence

Migrate statistics navigation to Fluro router

The statistics module now uses the Fluro library for navigation. A new StatisticsRouter class has been introduced to define routes for the order and goods statistics pages, replacing the previous direct file-based or alternative routing approach. This change centralizes the navigation logic for these specific statistics views within the lib/statistics directory.

lib/statistics · high confidence

Migrated to new Flutter localizations implementation

The app's localization system in lib/l10n has been replaced with a new implementation using the standard Flutter intl package. This change introduces generated Dart classes (DeerLocalizations, DeerLocalizationsEn, DeerLocalizationsZh) and corresponding ARB resource files (intl\_en.arb, intl\_zh.arb) to manage English and Chinese translations for login and registration screens. The new setup provides a structured delegate and supported locales list, ensuring consistent internationalization support across the application.

lib/l10n · high confidence

Migration to Flutter 2 embedding and Android 13 compatibility

The Android application has been upgraded to the Flutter 2 embedding system, replacing the deprecated FlutterApplication and GeneratedPluginRegistrant with the new FlutterActivity and configureFlutterEngine lifecycle. This change introduces a custom Application class (MyApp) and a native plugin (InstallAPKPlugin) to handle APK installation via a new FileProvider (DeerPickerProvider). To support modern Android versions (up to Android 13), the app now enforces portrait orientation, configures adaptive launch icons, enables notch support, and declares required intent queries for viewing web links and dialing numbers. Additionally, network security is configured to permit cleartext traffic, and the UI theme has been updated to support transparent status bars and dark mode backgrounds.

android/app/src · high confidence

Model code style and constructor ordering updates

The model files in lib/shop/models have been updated to follow consistent code style guidelines. Specifically, constructors are now sorted before other members, and map literal syntax has been standardized (e.g., using \<String, dynamic\>{} instead of new Map\<String, dynamic\>()). These changes improve code readability and maintainability without altering runtime behavior.

lib/shop/models · high confidence

New goods management interaction widgets and refactored size dialog

The goods module introduces several new UI components for product management: a GoodsAddMenu for adding items via scan or manual entry, a GoodsDeleteBottomSheet for safe deletion confirmation, a GoodsSortMenu for sorting lists, and a GoodsSortBottomSheet for managing product categories. The existing GoodsSizeDialog has been moved to the widgets folder and updated to support dark mode theming, proper resource disposal, and modern Flutter syntax. Additionally, the shared MenuReveal animation widget was relocated to the goods directory and refactored to use named parameters and type-safe variable declarations.

lib/goods/widgets · high confidence

New network layer with Dio, RxDart, and isolate-based parsing

The \lib/net\ module has been replaced with a new HTTP client implementation built on Dio and RxDart. This change introduces a centralized \DioUtils\ singleton that manages request configuration, interceptors (including authentication, token refresh, logging, and response adaptation), and error handling. A key behavioral improvement is that JSON data parsing is offloaded to a background isolate for responses larger than 10KB, preventing UI jank during large data loads. The layer also standardizes response formats via \BaseEntity\ and provides unified error codes for network, timeout, and parsing issues.

lib/net · high confidence

Pie chart animation, dark mode support, and accessibility improvements

The pie chart widget now features a smoother, faster animation (reduced from 1800ms to 800ms) that only triggers when data actually changes, improving performance. It supports dark mode by adapting background and shadow colors based on the current theme. Accessibility is enhanced by excluding static text labels from the semantics tree, and the code has been updated to modern Dart standards (null safety, super parameters, and explicit types).

_lib/widgets/pie\chart · high confidence

Project documentation and configuration overhaul

The repository has been updated with a comprehensive English README (README-EN.md) detailing the project's features, such as the use of Provider 6.x for state management and Dio 5.x for networking, along with download links and usage instructions. The project's configuration files have been significantly expanded: analysis\_options.yaml now enforces a strict set of Dart lints and language standards (strict-casts, strict-inference, etc.), devtools\_options.yaml has been added for DevTools configuration, and l10n.yaml defines the localization setup. Additionally, .gitignore has been updated to exclude Flutter-specific build artifacts and generated files, and .metadata has been refreshed to track the current Flutter SDK revision and migration state.

(repo-wide) · high confidence

Refactored bank and city models to use generated JSON serialization

The bank and city entity models in the account module have been replaced with new classes that utilize the FlutterJsonBeanFactory for JSON serialization, moving away from the previous manual implementation. This change updates the data models to support null safety and aligns with the plugin's 4.2.8 version requirements, while also reordering constructors to appear first in the file for better code organization. Additionally, the withdrawal account model had its constructor and fromJsonMap methods reordered for consistency.

lib/account/models · high confidence

Refactored number input formatter and added iOS-specific input fix

The number input formatter has been moved to a dedicated input\_formatter directory and refactored to support configurable decimal places and maximum value limits, replacing the previous hardcoded behavior. Additionally, a new FixIOSTextInputFormatter has been introduced to address a known iOS crash when using native Chinese input with maxLength, although it is marked as deprecated since the underlying Flutter issue was fixed in version 1.22.

_lib/util/input\formatter · high confidence

Refactored utility library with new helpers and removed legacy code

The \lib/util\ package has been reorganized to improve code structure and maintainability. A new \ChangeNotifierMixin\ was added to simplify the lifecycle management of \ChangeNotifier\ instances in State classes. Several new utility classes were introduced: \Device\ for platform and device information detection, \HandleErrorUtils\ for centralized global exception handling, \ImageUtils\ for unified image loading, \Log\ for structured JSON and map logging, \Screen\ for screen size and orientation calculations, and \ThemeUtils\ for dark mode color and system UI overlay management. The legacy \SpUtil\ class was removed in favor of the \sp\_util\ package, and the old \Utils\ class was split into \OtherUtils\ (containing URL launching and keyboard actions) and \ImageUtils\. The \Toast\ utility was renamed to \ToastUtils\ and updated to support nullable messages and custom durations, while \AppNavigator\ was updated to use strict generic types and added \goBack\ methods. Finally, \DateUtils\ was expanded with comprehensive calendar logic (week/month navigation, day ranges) and no longer depends on the external \date\_utils\ package.

lib/util · high confidence

Refined goods model constructors and code style

The goods models have been updated to improve code structure and consistency. The GoodsItemEntity now explicitly defines its constructor and JSON serialization logic, while the GoodsSortEntity utilizes the FlutterJsonBeanFactory for serialization. In the GoodsSizeModel, the constructor and fromJsonMap methods have been moved to the top of the class for better readability, and the toJson method now uses the modern Dart empty map literal syntax.

lib/goods/models · high confidence

Rewritten widget library with modern Flutter patterns and new components

The widget library has been significantly refactored to use modern Flutter practices, converting stateful widgets like BaseDialog, ClickItem, and MyButton to stateless implementations and adopting super parameters. Several new components have been introduced: DoubleTapBackExitApp for app exit handling, FractionallyAlignedSizedBox for relative positioning, and DeerListView for unified pull-to-refresh and load-more behavior. Image loading is now centralized in LoadImage and LoadAssetImage, which support cache dimensions, while MyAppBar and MySearchBar provide customizable, theme-aware navigation bars. Additionally, MyScrollView handles keyboard interactions and bottom buttons, SelectedImage manages image picking with Hero animations, and ProgressDialog displays loading states. Legacy files such as app\_bar.dart, search\_bar.dart, and text\_field.dart have been removed or replaced.

lib/widgets · high confidence

Settings navigation refactored to use Fluro router

The settings module now uses the Fluro library for navigation instead of direct page instantiation. A new \SettingRouter\ defines specific routes for the main settings, about, theme, locale, and account manager pages. The previous \SettingPage\ implementation, which used a custom navigator for direct pushes, has been removed, along with the unused \WebViewPage\ component.

lib/setting · high confidence

Shop configuration dialogs refactored for dark mode and modern Flutter standards

The shop configuration dialogs (price, range price, payment type, and shipping type) have been reorganized into the widgets directory and updated to support dark mode via theme-aware colors. These changes also modernize the codebase by adopting null safety, using const constructors, replacing deprecated navigation calls with a custom navigator utility, and improving resource handling with a dedicated image loader widget.

lib/shop/widgets · high confidence

Shop module pages reorganized and enhanced with accessibility and dark mode support

The shop module's page files have been reorganized into a dedicated \lib/shop/page\ directory, with legacy files like \input\_text\_page.dart\ and \message\_page.dart\ moved and updated to use modern Flutter patterns (e.g., \super.key\, \MyAppBar\). New pages for freight configuration (\freight\_config\_page.dart\) and address selection (\select\_address\_page.dart\) have been added, integrating the AMap2D plugin for map-based address picking. The shop interface now supports dark mode via theme-aware assets and includes accessibility improvements such as \Semantics\ labels and \MergeSemantics\ wrappers. Additionally, the message page now features a visible scrollbar, and the text input page enforces input formatters for phone numbers.

lib/shop/page · high confidence

Shop module refactored to use Provider and Fluro routing

The shop module has been restructured to adopt Provider for state management and Fluro for navigation. A new UserProvider has been introduced to manage user entity state, while shop\_router.dart now centralizes route definitions for pages such as Shop, ShopSetting, and FreightConfig, including support for passing class arguments. Several legacy UI components, including Shop, FreightConfigPage, and ShopSettingPage, have been removed from this location as part of the migration.

lib/shop · high confidence

Statistics module restructured with dark mode support and accessibility improvements

The statistics module has been reorganized by moving page-level widgets (OrderStatisticsPage, GoodsStatisticsPage, StatisticsPage) into a dedicated \page\ subdirectory, replacing legacy navigation utilities with the Fluro router, and updating imports to use the new \common\_utils\ and \theme\_utils\. The UI now fully supports dark mode, adapting colors, backgrounds, and overlay styles for both light and dark themes. Accessibility has been enhanced by adding Semantics labels to interactive elements (such as the expand/collapse toggle) and wrapping time-selection rows in MergeSemantics for better screen reader support. Additionally, code quality and modernization changes include adopting \super\ parameters, using \FractionallySizedBox\ for layout, and replacing generic containers with more specific widgets.

lib/statistics/page · high confidence

Store audit flow restructured with new page and navigation updates

The store audit feature has been reorganized: a new StoreAuditPage was added to handle store and owner information submission, including image selection and address picking, while the previous result page was renamed to StoreAuditResultPage and moved into the page directory. Navigation now uses the Fluro router instead of the previous AppNavigator, and UI components were updated to use the new MyAppBar and LoadAssetImage widgets, with text styles adjusted to use Theme.of(context) for better theme support.

lib/store/page · high confidence

Store audit module migrated to fluro routing

The store audit feature has been restructured to use the fluro routing library. The previous implementation in \store\_audit\_page.dart\ has been removed and replaced with a new \store\_router.dart\ that defines navigation routes for the store audit and audit result pages, integrating them into the application's central routing provider.

lib/store · high confidence

Updated JSON serialization code to FlutterJsonBeanFactory 4.2.8 with null safety

The auto-generated JSON serialization files in lib/generated have been regenerated using FlutterJsonBeanFactory version 4.2.8, migrating the generated code to support null safety. This update ensures that JSON parsing for entities such as BankEntity, CityEntity, GoodsSortEntity, SearchEntity, and UserEntity correctly handles nullable fields and integrates with the updated base conversion utilities.

lib/generated · high confidence

Updated Xcode scheme for Flutter tooling and debugging enhancements

The iOS build scheme has been upgraded to Xcode 15.1, introducing a pre-action script to prepare the Flutter framework before building. Debugging capabilities are improved by loading a custom LLDB initialization file and enabling GPU validation mode during launch. Additionally, the scheme now explicitly includes the RunnerTests target for testing.

ios/Runner.xcodeproj/xcshareddata · high confidence

Updated iOS storyboards for modern Xcode compatibility and dark mode support

The LaunchScreen and Main storyboards have been updated to use modern Xcode tooling (version 19162 and 14490.70 respectively) and iOS 11+ system colors. Specifically, the launch screen now uses \systemBackgroundColor\ instead of a hardcoded white color, enabling proper support for dark mode on the splash screen. The main storyboard has been updated to target the iPhone 11 (6.1-inch) layout dimensions and uses standard sRGB colors, ensuring consistent appearance across different iOS versions and device sizes.

ios/Runner/Base.lproj · high confidence

Web entry points updated with AMap security config and PWA service worker improvements

The web entry points (index.html and index1.html) now include the AMap JavaScript API loader and a security configuration object (window.\_AMapSecurityConfig) to support the AMap Web plugin. Additionally, index1.html implements a more robust service worker loading mechanism that waits for worker activation before loading the main Dart script, includes a fallback to a plain script tag if registration fails, and supports versioned service worker updates, while index.html retains a simpler registration approach.

web · high confidence

Windows build configuration and plugin registration updated

The Windows build system now includes a CMakeLists.txt file that configures the Flutter library and C++ wrappers, alongside generated files that register the active plugins. Specifically, the application now integrates the window\_manager plugin for window control, along with file\_selector\_windows, screen\_retriever\_windows, and url\_launcher\_windows, ensuring these capabilities are available in the Windows desktop environment.

windows/flutter · high confidence

iOS app lifecycle and configuration modernization

The iOS native layer has been updated to support modern iOS lifecycle patterns, specifically UIScene support, by replacing the Objective-C AppDelegate with a Swift implementation that handles the implicit Flutter engine initialization. This change also introduces an app store update capability, allowing users to jump directly to the App Store from within the app. Additionally, the app's configuration has been refined to support multiple languages (English and Simplified Chinese), restrict the interface orientation to portrait mode only, and update permission descriptions for camera, photo library, and location access to provide clearer context to users.

ios/Runner · high confidence

iOS build configuration and minimum OS version adjustments

The iOS build configuration has been updated to remove the explicit MinimumOSVersion setting from AppFrameworkInfo.plist, reverting to the default minimum version. Additionally, the order of includes in Debug.xcconfig and Release.xcconfig has been swapped so that Generated.xcconfig is included before the Pods configuration, and file permissions for these configuration files have been normalized.

ios/Flutter · high confidence

iOS project migrated to Swift and modernized build configuration

The iOS build system has been updated to use Swift instead of Objective-C, replacing AppDelegate.m with AppDelegate.swift and introducing a bridging header. The project structure now includes a dedicated RunnerTests group with a Swift test file and test framework, and CocoaPods support has been modernized with separate debug, release, and profile xcconfig files for both the main app and tests. Additionally, the build process now links FlutterGeneratedPluginSwiftPackage and Pods\_Runner.framework, removing the older libPods-Runner.a and direct Flutter.framework embedding in favor of a cleaner framework integration.

ios/Runner.xcodeproj · high confidence

iOS workspace configuration and file permissions updated

The iOS workspace configuration has been updated to include standard Xcode workspace settings, specifically adding an IDE workspace check file and disabling previews in workspace settings. Additionally, the file permissions for the workspace data file were corrected from executable to standard read/write, and the workspace reference was updated to point to the local project location.

ios/Runner.xcodeproj/project.xcworkspace · high confidence

iOS workspace configuration updated

The iOS workspace settings have been updated to disable Xcode Previews (PreviewsEnabled set to false), and the executable permissions on the workspace data and settings files have been removed. A new IDEWorkspaceChecks.plist file has been added to track the workspace state.

ios/Runner.xcworkspace · high confidence

Test coverage

Added accessibility test suite and updated widget test; Added accessibility tests for account and store pages; Added accessibility tests for goods and statistics pages; Added accessibility tests for setting pages; Added initial iOS test target scaffold; Added integration test infrastructure and entry point; Added integration tests for login and goods flows; Added integration tests for order and statistics modules; Added integration tests for the Goods feature; Added integration tests for the Settings module; Added integration tests for the shop module; Added integration tests for the splash and login screens; Added integration tests for the store audit page; Added network integration tests for Dio; Added test utility helpers for order module integration tests.

Dependencies

Gradle wrapper upgraded to version 9.3.1

The Android build system now uses Gradle 9.3.1 (previously 4.10.2) via the wrapper configuration. This ensures that builds are executed with the newer Gradle distribution, which may affect build performance and compatibility with existing plugins or scripts.

android/gradle · high confidence

Major dependency upgrade and Flutter 3.19+ migration

The project has been upgraded to support Flutter 3.19+ and Dart 3.4+, requiring a significant update to the dependency ecosystem. Key library upgrades include dio to 5.9.0, provider to 6.1.2, webview\_flutter to 4.13.0, image\_picker to 1.2.0, and keyboard\_actions to 4.2.1. The build system has been modernized with Android Gradle Plugin 9.1.0, Kotlin 2.4.0, and a new Gradle plugin management structure, while iOS deployment targets have been raised to iOS 15.0. New dependencies such as flutter\_localizations, url\_strategy, and window\_manager have been added, and legacy packages like flustars and flutter\_swiper have been replaced with their maintained Flutter 3-compatible alternatives.

(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

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 48 → 60 (+12.2)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 99 → 90 (-8.6)
  • Architecture 100 → 98 (-2.4)
  • Maturity 57 → 57 (+0.0)
  • Readiness 46 → 50 (+3.9)
  • Security 29 → 62 (+32.9)
  • Domain Modelling 100 → 100 (+0.0)
  • Accessibility 100 → 100 (+0.0)

Resolved (18)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • No exposed public API
  • Test reliability not included
  • complexity unreadable for .dart, .java, .swift — churn × complexity hotspots could not be measured
  • dormant codebase — no living knowledge left to concentrate

New (98)

  • AdapterInterceptor.adapterData (cognitive 34) (lib/net/intercept.dart)
  • BezierChartState._computeSeries (cognitive 59) (lib/widgets/bezier_chart/bezier_chart_widget.dart)
  • BezierChartState._computeSeries (cyclomatic 29) (lib/widgets/bezier_chart/bezier_chart_widget.dart)
  • BezierChartState._onLayoutDone (cognitive 29) (lib/widgets/bezier_chart/bezier_chart_widget.dart)
  • BezierChartState._onLayoutDone (cyclomatic 19) (lib/widgets/bezier_chart/bezier_chart_widget.dart)
  • BezierChartState._onPinchZoom (cognitive 24) (lib/widgets/bezier_chart/bezier_chart_widget.dart)
  • BezierChartState.build (cognitive 71) (lib/widgets/bezier_chart/bezier_chart_widget.dart)
  • BezierChartState.build (cyclomatic 38) (lib/widgets/bezier_chart/bezier_chart_widget.dart)
  • Change coupling: login_page.dart ↔ register_page.dart (lib/login/page/login_page.dart)
  • Change coupling: my_app_bar.dart ↔ my_search_bar.dart (lib/widgets/my_app_bar.dart)
  • Change coupling: register_page.dart ↔ sms_login_page.dart (lib/login/page/register_page.dart)
  • ClassTooLong: BezierChartState (lib/widgets/bezier_chart/bezier_chart_widget.dart)
  • ClassTooLong: _BezierChartPainter (lib/widgets/bezier_chart/bezier_chart_widget.dart)
  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (11 lines × 2) (lib/goods/widgets/goods_item.dart)
  • Duplicated block (11 lines × 2) (lib/shop/page/freight_config_page.dart)
  • Duplicated block (11 lines × 3) (lib/order/widgets/pay_type_dialog.dart)
  • Duplicated block (12 lines × 2) (lib/goods/page/goods_size_page.dart)
  • …and 78 more

Changes since last survey

  • 3 commits — 2 feature/other, 1 fixes

By area

  • (root) — 1 commit
  • .github/workflows — 1 commit
  • ios/Runner — 1 commit

Notable commits

  • fix: fix CI
  • change: UIScene lifecycle support
  • change: flutter 3.47.4

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

Survey your own repository

simplezhli/flutter_deer 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 23 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 720e8d21d1452ce18ee9046cca6519a61694bc03 — 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-955b9cee9818.