Skip to content
CAI
Software that uses CAICheck a score

Sky24n/flutter_wanandroid

55.6

Adequate · 23 September 2026

7.6k

lines of production code

Dart

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a cross-platform mobile application built with Flutter, designed to consume content from the WanAndroid API. It implements a BLoC-based state management architecture to handle UI state and application-wide events. The app features a tabbed navigation structure with pages for browsing articles, repositories, and user collections, alongside utility demos for city selection, date formatting, and text processing.

How it got here

2018 — initial project scaffolding and architecture setup

10 changes.

This period established the foundational structure of the Flutter application, including platform-specific configurations for Android and iOS, alongside the implementation of a BLoC-based state management system. The work focused on setting up the core infrastructure, data models, and API integration layers to support the application's initial functionality.

2019 — initial UI and feature scaffolding

5 changes.

This period focused on establishing the application's structural foundation by introducing empty database layers, a comprehensive set of new UI pages, and reusable widget components. It also involved defining visual resources and adding utility demo pages to support the growing interface.

Features

Added UI resource definitions for colors, dimensions, strings, and styles

New files in lib/res define the app's visual and textual resources: colors (including a mapping of letters to avatar colors and theme color names to Flutter colors), dimension constants for font sizes and gaps, localized string keys and translations for English and Chinese (Simplified, Traditional, HK, TW), and text styles and decorations for list items and dividers. These resources support the app's UI by providing consistent colors, spacing, and multilingual text.

lib/res · high confidence

Added data layer for WanAndroid API integration

Introduced new data models (ReposModel, BannerModel, TreeModel, etc.) and API endpoint constants to support fetching content from the WanAndroid service. The change adds repository classes (WanRepository, UserRepository, CollectRepository) that handle network requests for banners, articles, projects, user login/registration, and favorites, enabling the application to retrieve and display this content.

lib/data · high confidence

Added empty database and dialog UI components

Introduced new, currently empty, files for the database layer (lib/db/db.dart) and a simple dialog UI component (lib/ui/dialog/simple\_dialog.dart). These changes establish the structural foundation for database interactions and a reusable dialog interface within the application.

lib/db, lib/ui/dialog · low confidence

Added iOS Flutter build configuration files

The iOS build configuration for the Flutter engine has been added, including AppFrameworkInfo.plist, Debug.xcconfig, Release.xcconfig, and flutter\_export\_environment.sh. These files configure the Xcode build settings, linking the Flutter framework and setting environment variables for the build process, which is required for the iOS platform to build and run the Flutter application.

ios/Flutter · high confidence

Added new UI widgets and a custom like button component

Added a suite of new Flutter widgets in lib/ui/widgets, including article, repository, and tree item components for displaying content lists. Introduced a reusable LikeButton widget with custom animations and a LikeBtn wrapper that handles login state and collection logic. Also added supporting components such as a RefreshScaffold for list pagination, a ComListPage for category browsing, and utility painters for the like button's visual effects.

lib/ui/widgets · high confidence

Added new utility demos: city selection, date formatting, pinyin conversion, regex validation, and more

The demos section now includes several new utility pages: a city selection list with pinyin sorting, a date formatting and weekday display page, a pinyin conversion and Chinese character simplification/traditionalization tool, a regex validation page for mobile numbers, emails, and IDs, a timer and countdown utility, a money formatting demo, a timeline/relative time display, a round/rounded portrait image demo, and an image size calculation demo. These are all registered in the main demos index and navigation list.

lib/demos · high confidence

Initial Android project scaffolding and Gradle build configuration

The Android module is initialized with the standard Flutter V2 embedding configuration, including the AndroidManifest.xml with INTERNET permission and Flutter meta-data, a MainActivity extending FlutterActivity, and Gradle wrapper scripts (gradlew/gradlew.bat) with Gradle 5.6.2. This establishes the native Android build environment and runtime configuration required for the app.

android · high confidence

Initial project scaffolding and dependency tracking

The repository was initialized with essential Flutter project configuration files, including \.flutter-plugins-dependencies\ which tracks native plugin dependencies (path\_provider, share, shared\_preferences, sqflite, url\_launcher, webview\_flutter) across iOS, Android, macOS, Linux, Windows, and Web platforms. Additionally, \.metadata\ was added to track the Flutter SDK version (beta channel, revision 5ab9e70727d858def3a586db7fb98ee580352957), and IDE/IDEA ignore rules were updated in \.gitignore\ to exclude generated files and local settings.

(repo-wide) · high confidence

Introduce core application infrastructure and data models

The lib/common area now includes foundational utilities and data models that support the application's core functionality. This includes the AppConfig class defining the app's identity and version, a Global class for initializing system-level settings like the Android status bar, and an SpHelper for managing persistent user preferences. Additionally, new data models (LanguageModel, SplashModel, ComModel) and utility classes (HttpUtils, NavigatorUtil, Utils) have been added to handle network simulation, navigation, and common operations.

lib/common · high confidence

Introduced BLoC architecture for state management

Added a new BLoC (Business Logic Component) implementation in the lib/blocs directory, including a BlocProvider widget for dependency injection, an ApplicationBloc for global app events, and specific BLoCs for managing the state of the main screen, tabs, collections, and category lists. This change introduces a reactive, stream-based approach to handling UI state and data flow within the application.

lib/blocs · high confidence

New UI pages and navigation structure for the app

The app now includes a suite of new UI pages including AboutPage, AuthorPage, CollectionPage, EventsPage, HomePage, LanguagePage, MainLeftPage, MainPage, OtherPage, RecHotPage, ReposPage, SearchPage, SettingPage, SharePage, SplashPage, and SystemPage. These pages are wired into the main navigation via a tabbed layout in MainPage, with a side drawer for navigation. The AboutPage displays app version, GitHub links, and an update check feature. The HomePage features a banner carousel, recommended repos, and wx articles. The SettingPage allows theme and language selection. The SplashPage handles app onboarding and splash screen logic. The MainLeftPage provides a side menu with navigation to various sections. The page\_index.dart exports all these new pages.

lib/ui/pages · high confidence

iOS app bundle and UI assets added

The iOS project now includes the core application files: the Objective-C entry point (main.m), the AppDelegate implementation, and the Info.plist configuration. Additionally, the default app icon set and launch screen resources (storyboards, images, and localized strings) have been added to the iOS Runner target, enabling the app to build and run on iOS devices.

ios/Runner · high confidence

iOS build system and project configuration initialized

The iOS build environment has been established with the addition of the Xcode project file (project.pbxproj), workspace configuration, and scheme definitions. This includes the integration of the Flutter framework, the App framework, and CocoaPods dependencies (libPods-Runner.a), enabling the iOS application to be built and run on iOS devices and simulators.

ios/Runner.xcodeproj · high confidence

Behavioural changes

Introduce Flutter 2.0 compatibility and BLoC-based state management

The application has been updated to be compatible with Flutter 2.0, as indicated by the commit message. The core of the app has been refactored to use the BLoC pattern for state management, with \ApplicationBloc\ and \MainBloc\ now driving the UI state. The \main.dart\ entry point initializes these BLoCs and sets up the \MaterialApp\ with dynamic theming and localization support. A new \event.dart\ file introduces a centralized event handling mechanism, allowing components to send and listen for application-wide events, such as locale changes, via the \ApplicationBloc\. This shift to BLoC provides a more structured and predictable way to manage app state and side effects.

lib · medium confidence

Test coverage

Added initial widget test for the Flutter application

A new test file (test/widget\_test.dart) has been added to the project. It includes a smoke test that verifies the app's counter functionality, ensuring the initial state shows '0' and that tapping the increment button correctly updates the display to '1'.

test · 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

Score

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

Lenses

  • Code Health 97 → 97 (-0.6)
  • Architecture 100 → 97 (-3.3)
  • Maturity 32 → 45 (+12.3)
  • Readiness 26 → 36 (+10.3)
  • Security 100 → 100 (+0.0)
  • Domain Modelling 100 → 100 (+0.0)

Resolved (7)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • No exposed public API
  • Test reliability not included
  • The README mentions FlutterRepos side projects (base_library, login_demo, flutter_gallery) but does not link to them or describe how to consume their code in this project. (README.md)
  • complexity unreadable for .dart — churn × complexity hotspots could not be measured
  • single-maintainer — knowledge-concentration (bus factor) risk

New (38)

  • 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 (10 lines × 2) (lib/ui/pages/user/user_login_page.dart)
  • Duplicated block (10 lines × 3) (lib/ui/pages/collection_page.dart)
  • Duplicated block (11 lines × 22) (lib/demos/date_page.dart)
  • Duplicated block (11 lines × 3) (lib/data/repository/wan_repository.dart)
  • Duplicated block (11 lines × 7) (lib/demos/date_page.dart)
  • Duplicated block (11–12 lines × 3) (lib/demos/date_page.dart)
  • Duplicated block (12 lines × 2) (lib/ui/pages/author_page.dart)
  • Duplicated block (12 lines × 5) (lib/demos/date_page.dart)
  • Duplicated block (12–13 lines × 2) (lib/demos/date_page.dart)
  • Duplicated block (13 lines × 2) (lib/demos/date_page.dart)
  • Duplicated block (13 lines × 2) (lib/demos/money_page.dart)
  • Duplicated block (13 lines × 2) (lib/ui/pages/user/user_login_page.dart)
  • Duplicated block (13 lines × 3) (lib/data/repository/wan_repository.dart)
  • Duplicated block (13 lines × 3) (lib/demos/date_page.dart)
  • Duplicated block (14 lines × 2) (lib/demos/timer_page.dart)
  • Duplicated block (14 lines × 2) (lib/ui/widgets/article_item.dart)
  • Duplicated block (14–15 lines × 3) (lib/blocs/com_list_bloc.dart)
  • …and 18 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

Sky24n/flutter_wanandroid 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 51061b34a4923bfeaad02f9d1fa53f296391d9e7 — 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.