Tencent/tdesign-flutter
50.0
Weak · 19 September 2026
71.2k
lines of production code
Dart
primary language
1
measurement over time
What this system is
This system is the TDesign Flutter component library, providing a comprehensive suite of UI widgets for building cross-platform mobile and web applications. It features a unified, token-based theming system that supports dark mode and consistent styling across components like buttons, forms, navigation bars, and data displays. The library enforces strict controlled component patterns and includes extensive tooling for documentation generation, automated testing, and visual regression verification.
How it got here
2022–2024 — TDesign Flutter v1.0.0-alpha.1 release
40 changes.
This period focused on the major API overhaul and release of TDesign Flutter v1.0.0-alpha.1, characterized by the removal of legacy TD-prefixed components and the introduction of a new T-prefixed API with a token-based theme system. The work included migrating the example application to support dark mode and HarmonyOS, establishing a new documentation site, and implementing automated tooling for API documentation and demo generation.
2026 — TDesign v1 component migration and testing
116 changes.
This period focused on migrating the tdesign-component library to a unified v1 API, introducing strict controlled state patterns and dedicated theme extensions across nearly all UI components. The work included implementing new components like TBackTop, TBadge, and TTable, while refactoring existing ones such as Button, Calendar, and Form to align with TDesign specifications. Comprehensive test coverage was established through unit, golden, and acceptance tests to ensure visual and behavioral consistency.
Features
Added HarmonyOS (OpenHarmony) example app entry module
The entry module for the TDesign Flutter example app on HarmonyOS has been added, providing the native application shell required to run the Flutter engine. This includes the EntryAbility to initialize the Flutter engine and register plugins, the main Index page to host the Flutter view, and the necessary module configuration (module.json5) and resources. Additionally, a test module (entry\_test) is included with the OpenHarmony test runner and test abilities to support automated testing of the application.
tdesign-component/example/ohos/entry · high confidence
Added HarmonyOS example application scaffolding
The tdesign-component/example/ohos directory now includes the complete project structure for a HarmonyOS-compatible example app. This addition introduces the necessary build configuration files (build-profile.json5, hvigorfile.ts), package definitions (oh-package.json5), and resource manifests (app.json5) required to compile and run the Flutter-based TDesign example on the HarmonyOS runtime using the stage mode architecture.
tdesign-component/example/ohos · high confidence
Initial public API surface for TDesign Flutter components
The library now exposes a consolidated public API via \tdesign\_flutter.dart\, exporting the core set of UI components (such as ActionSheet, Avatar, Button, Calendar, Cascader, Cell, Checkbox, Collapse, DateTimePicker, Dialog, Drawer, DropdownMenu, Empty, FAB, Footer, Form, Icon, Image, ImageViewer, Indexes, Input, Link, Loading, Message, NavBar, NoticeBar, Picker, Popover, Popup, Progress, Radio, Rate, PullDownRefresh, Result, SearchBar, Sidebar, Skeleton, Slider, Stepper, Steps, SwipeCell, Swiper, Switch, TabBar, Table, Tabs, Tag, Text, Textarea, and TimeCounter) along with their associated theme data and type definitions. This change establishes the primary entry point for importing and using the TDesign component library in Flutter applications.
tdesign-component/lib · high confidence
Initial release of the TDesign Flutter documentation site
The \tdesign-site\ directory has been added, providing the official documentation website for the TDesign Flutter component library. This includes the site configuration, ESLint and Prettier tooling, and comprehensive Markdown documentation for all components (such as ActionSheet, Avatar, Button, Calendar, and Cascader) with usage examples and API references. The site also contains contributor guidelines, a changelog, and an FAQ, establishing the foundation for the v1.0.0-alpha.1 release which requires Flutter SDK 3.32.0 or higher.
tdesign-site · high confidence
Introduce Result component with customizable status and theming
Added the TResult widget, a new component for displaying success, warning, error, or info states with corresponding icons and text. The component supports customization of the title, description, and icon, and integrates with the Flutter theme system via TResultThemeData, allowing developers to override icon size, title style, and description style.
tdesign-component/lib/src/components/result · high confidence
Introduce TBackTop component with scroll-aware visibility and theme customization
The TBackTop component is now available, allowing users to add a floating action button that scrolls the page to the top. It supports optional scroll controller binding to show/hide based on a configurable visibility offset, and offers two shapes (circle and half-circle) with light/dark color schemes. The component integrates with the theme system via TBackTopThemeData, enabling customization of background, border, content colors, and typography, while ensuring accessibility through semantic labels and tooltips.
tdesign-component/lib/src/components/backtop · high confidence
Introduce TCell and TCellGroup components for Flutter
Added the TCell and TCellGroup components to the tdesign-component library, providing a list-item style widget with support for titles, subtitles, icons, and trailing content. The TCell component allows for vertical alignment control (top, center, bottom), visual feedback on press, and optional required markers, while TCellGroup manages cell layout with dividers and supports both standard and card visual variants. A corresponding TCellThemeData class enables theme-based customization of styles, colors, padding, and borders for these components.
tdesign-component/lib/src/components/cell · high confidence
Introduce TDesign Stepper component with controlled interaction and theme interpolation
The TStepper component is now available, providing a strictly controlled numeric input widget where the value is the single source of truth and changes are requested via onChanged. It supports three sizes (small, medium, large) and three visual variants (normal, filled, outline), with comprehensive theming via TStepperThemeData that allows customization of colors, spacing, and typography. The implementation includes robust theme interpolation for smooth transitions and ensures proper vertical centering and disabled states.
tdesign-component/lib/src/components/stepper · high confidence
Introduce TFooter component with logo, links, and text support
A new TFooter widget is added to the library, allowing developers to display a page footer containing a brand logo, a list of links separated by dividers, and copyright text. The component prioritizes the logo if provided; otherwise, it renders links or text. A corresponding TFooterThemeData class enables theme-based customization of the footer's height, defaulting to content-driven sizing when not specified.
tdesign-component/lib/src/components/footer · high confidence
Introduce TNoticeBar component with status theming and marquee support
Added the TNoticeBar widget to the component library, supporting both horizontal marquee scrolling and vertical carousel modes. The component features a new TNoticeBarThemeData for consistent styling across the app, allowing customization of background colors, text styles, and icon colors. It includes built-in status handling (info, success, warning, error) that automatically applies appropriate default colors and icons, while also supporting custom prefix, operation, and suffix areas.
_tdesign-component/lib/src/components/notice\bar · high confidence
Introduce new TCheckbox and TCheckboxGroup components with card mode and theme support
The checkbox component location now contains a complete v1 implementation including TCheckbox, TCheckboxGroup, TCheckboxThemeData, and TSelectionCard. Users can now use a data-driven TCheckboxGroup that supports multi-column layouts, card mode styling, and custom item builders. The TCheckbox component itself supports controlled selection, disabled states, custom icon builders, and theme-driven styling via TCheckboxThemeData (including variant, colors, and spacing). The new TSelectionCard provides a visual container for card-mode checkboxes with selection marks and borders.
tdesign-component/lib/src/components/checkbox · high confidence
Introduction of TBadge component with multiple visual variants and RTL support
The TBadge widget has been introduced to display short text, dots, or status indicators in various shapes including normal, custom, dot, square, bubble, ribbon, and triangle variants. It supports two preset sizes (medium and large), customizable offsets for positioning, and proper handling of right-to-left (RTL) text directions. The component integrates with the existing theme system via TBadgeThemeData for border styling and respects Material theme tokens for typography and colors.
tdesign-component/lib/src/components/badge · high confidence
Introduction of automated API documentation and demo code generation tooling
This change introduces a new tooling suite within the \tdesign-component/demo\_tool\ directory to automate the generation of API documentation and demo code for the component library. The tool relies on a configuration file (\tool/components.json\) to map component sources to their API definitions and uses a Node.js script (\generate\_api.mjs\) to produce Markdown files. It also supports generating example code snippets via a Dart analyzer script, requiring developers to annotate their Dart code with \@ExampleCode\ to ensure demo consistency. A shell script (\all\_build.sh\) provides a unified entry point for these operations, and a \version\ file specifies the required Dart SDK version (3.16.9).
_tdesign-component/demo\tool · high confidence
New Image Viewer component with zoom, drag-to-dismiss, and theming
The Image Viewer component has been migrated to a new v1 implementation, introducing a command-line API (TImageViewer.show) for displaying fullscreen image previews. This update adds support for interactive gestures, including pinch-to-zoom and drag-to-dismiss, while maintaining features like looping, autoplay, and index tracking. The component now supports comprehensive theming via TImageViewerThemeData, allowing customization of background colors, icon colors, and text styles for labels and page indices.
_tdesign-component/lib/src/components/image\viewer · high confidence
New TFab floating action button with drag, snap, and theme support
The TFab component is introduced as a new floating action button that combines a positioning layer with an action layer. It supports optional dragging (with configurable axes), edge snapping (magnet), and boundary constraints, while respecting safe areas. The default action layer uses a large, filled, primary TButton (circle for icons, rounded for text+icon), but allows full customization via the \child\ property. Visual defaults (offsets, drag thresholds, snap duration) are configurable via a new \TFabThemeData\ extension.
tdesign-component/lib/src/components/fab · high confidence
New TImage component with shape and theming support
The TImage component has been introduced to display network, asset, or local images with configurable shapes (square, rounded square, circle) and dedicated theme data for visual customization. Users can now control image appearance via properties like shape, fit, and alignment, while leveraging TImageThemeData for global styling of colors, blend modes, and anti-aliasing.
tdesign-component/lib/src/components/image · high confidence
New TMessage component with theming and marquee support
Added the TMessage component for displaying top-aligned notification messages. The component supports semantic status types (info, success, warning, error), customizable icons, and a marquee configuration for scrolling text. It provides both declarative usage as a Widget and imperative control via a static \show\ method that returns a handle for programmatic dismissal. Theming is supported through a dedicated \TMessageThemeData\ extension allowing customization of background color, shape, and elevation.
tdesign-component/lib/src/components/message · high confidence
New TNavBar component with themeable styling and border support
The \tdesign-component\ library introduces a new \TNavBar\ widget, replacing the previous V1 implementation. This component provides a Material AppBar wrapper with a dedicated \TNavBarThemeData\ extension for sub-tree styling, allowing users to customize title color, background, padding, opacity, and box shadows via the Flutter Theme system. It also introduces explicit API support for border styling (width, radius, color, padding) and safe-area handling, with a constructor priority order of explicit parameters \> Theme extension \> default ThemeData.
tdesign-component/lib/src/components/navbar · high confidence
New TPullDownRefresh component with controller and state management
A new TPullDownRefresh component has been added to the refresh package, providing a pull-to-refresh interface that wraps the EasyRefresh library. This component supports pull-to-refresh and load-more-on-bottom behaviors, with configurable thresholds, timeouts, and custom text for the four refresh states (pull, release, refreshing, done). It includes a TPullDownRefreshController for programmatic refresh triggers from external pages, and exposes state changes via an onStateChanged callback that reports inactive, dragging, ready, refreshing, done, and timeout states.
tdesign-component/lib/src/components/refresh · high confidence
New TSearchBar component with customizable variants and theme support
A new TSearchBar component has been added to the library, providing a search input field based on Material TextField with support for square and round variants, text alignment options, and comprehensive theming via TSearchBarThemeData. Users can now configure input behavior including clearable states, action buttons, focus management, and input formatting, while visual aspects like height, colors, padding, and icon themes can be customized through the theme extension system.
tdesign-component/lib/src/components/search · high confidence
New TSlider and TRangeSlider components with TDesign theming
Added TSlider and TRangeSlider components that wrap Flutter's Material Slider with TDesign-specific styling. The implementation introduces a TSliderThemeData extension for custom outer decorations and a \_sliderThemeWithTokenFallback function that prioritizes TDesign theme tokens (such as brand colors and disabled states) while falling back to Material theme values, ensuring consistent visual appearance across different theme configurations.
tdesign-component/lib/src/components/slider · high confidence
New TTable component with strong typing, controlled sorting, and row selection
The table component in tdesign-component has been replaced with a new, strongly-typed implementation (TTable) that supports controlled sorting and row selection. Users can now define columns with specific data types, configure fixed column positions, and manage selection states via callbacks. The component also introduces a dedicated theme extension (TTableThemeData) for customizing visual properties like borders, striping, and cell padding, along with support for cell spanning and custom loading/empty states.
tdesign-component/lib/src/components/table · high confidence
New TTextarea component with vertical layout support
The TTextarea widget has been introduced to provide a multi-line text input component. It allows users to set an internal label and choose between horizontal or vertical layout arrangements for the label and editing area via the new TTextareaLayout enum. The component supports standard input features such as character limits (including Unicode-aware maxCharacter), line limits, clear button modes, and input formatters, while reusing the TInput implementation for core editing capabilities.
tdesign-component/lib/src/components/textarea · high confidence
New TTreeSelect component with design-aligned column widths
Introduces the TTreeSelect widget, a controlled tree-based selection component supporting both single and multi-select modes. The implementation aligns with the design specification by setting fixed default column widths (103px for root and intermediate columns, 169px minimum for leaf columns) and includes a dedicated theme data class (TTreeSelectThemeData) to allow customization of panel dimensions, colors, and text styles.
tdesign-component/lib/src/components/tree · high confidence
New example app scaffolding with routing, theming, and localization support
The example application now includes a structured base layer featuring a unified routing system that normalizes kebab-case paths to match Flutter's camelCase component names, an API documentation viewer that loads and renders Markdown content, and a dark-mode testing page for verifying theme overrides. It also introduces a dedicated internationalization resource delegate to map component strings to localized app resources, alongside a notification center for decoupled event handling and a custom Dart syntax highlighter for code display.
tdesign-component/example · high confidence
New pure wheel-based DateTimePicker component with granular mode and step control
The \t\_date\_time\_picker\ directory now contains a new, standalone \TDateTimePicker\ widget that renders a pure date/time wheel without built-in toolbars, confirmation buttons, or popups. Users can configure the column structure via \DateTimePickerMode\ (combining \DateMode\ like year/month/date/monthDay and \TimeMode\ like hour/minute/second) and define selectable ranges with \start\/\end\ bounds. The component supports granular step configuration through \DateTimePickerSteps\ for each column (year, month, day, hour, minute, second) and allows custom label rendering via \renderLabel\. It also includes a \showWeek\ option to append weekday labels to the day column. The implementation relies on an internal \DateTimePickerSnapshot\ for immutable state management and reuses the underlying \Picker\ wheel infrastructure for scrolling and selection logic.
_tdesign-component/lib/src/components/date\_time\picker · high confidence
New scripts for validating component contracts and syncing documentation
Added two new Node.js scripts to the \scripts\ directory: \check-flutter-component-contracts.mjs\ validates that site routes, component documentation, API manifests, and example registrations are consistent and present, while \sync-readme.mjs\ synchronizes README files (including the main README and Chinese version) to target locations like \tdesign-component\ and the site documentation, applying optional transformations such as removing language-switch links.
scripts · high confidence
New utility extensions and platform-aware helpers in tdesign-component
The \tdesign-component/lib/src/util\ directory now includes a suite of new utility extensions and helpers to support component development. This adds screen-width scaling extensions (\TIntScale\, \TDoubleScale\) for responsive layout calculations based on a 375px design width, and collection extensions (\IterableExt\, \ListExt\, \MapExt\) providing safe accessors, grouping, chunking, and indexed mapping. It also introduces \PlatformUtil\ with explicit support for the Ohos platform, a \Throttle\ class for rate-limiting callbacks, a \VersionUtil\ for Dart version comparison, and a \TToolbarPressable\ widget that provides a standardized press-opacity animation for toolbar buttons. Additionally, the \toColor\ utility in \string\_util.dart\ has been updated to safely handle 3-digit hex colors and return null on invalid input instead of throwing.
tdesign-component/lib/src/util · high confidence
Repository initialization and CI/CD configuration for TDesign Flutter
The repository has been initialized with the \tdesign\_flutter\ package (version 1.0.0-alpha.1) and a new CI pipeline defined in \.cnb.yml\ that automates analysis, testing, and web/APK builds across Flutter 3.32.0 and latest versions. The project now enforces Flutter 3.32.0 via \.fvmrc\, standardizes contributor workflows through \AGENTS.md\ and \CONTRIBUTING.md\, and includes documentation for publishing (\PUBLISH.md\) and code of conduct. The README has been expanded to detail installation, theme configuration (including dark mode support), and internationalization setup.
(repo-wide) · high confidence
Removals
Removal of Android and iOS native plugin implementations
The native platform-specific code for the Android and iOS integrations has been removed. This includes the Android Kotlin plugin class, Gradle wrapper configuration, and manifest, as well as the iOS Objective-C plugin implementation and associated asset directories. Users relying on these native modules for platform-specific functionality (such as retrieving the OS version) will no longer have access to this native bridge.
android, ios · high confidence
Removal of TDTag component
The TDTag widget, which previously rendered styled tags with configurable types (such as NORMAL, SUCCESS, WARNING, ERROR, MESSAGE, WIREFRAME, and LIGHT\_BACKGROUND), sizes (LARGE, MIDDLE, SMALL, CUSTOM), and visual properties (border radius, padding, colors, and fonts), has been removed from the codebase.
lib/src/components/tags · high confidence
Removal of custom icon wrapper and icon set definitions
The \TDIcon\ wrapper component and the \TDIcons\ icon set definition file have been removed from the library. This eliminates the custom abstraction layer that previously mapped specific icon data to a custom font family, allowing consumers to use the standard Flutter \Icon\ widget directly with system or other icon sets without needing the framework-specific wrapper.
lib/src/components/icon · high confidence
Removal of legacy Avatar component implementation
The legacy \TDAvatar\ widget and its associated enums (\TDAvatarSize\, \TDAvatarType\) have been removed from the codebase. This deletion eliminates the previous implementation that handled avatar rendering via specific size presets (Large, Medium, Small) and types (Default, User, Circle, Square, CustomText), effectively cleaning up the component library to prepare for or reflect a newer API structure.
lib/src/components/avatar · high confidence
Removal of legacy Flutter example application
The \example\ directory's legacy Flutter application has been completely removed. This includes the deletion of the entry point (\main.dart\), the routing configuration (\example\_route.dart\), all individual component demo pages (such as Avatar, Badge, Button, Input, Picker, TabBar, Tag, Theme, Toast, and Image), and the associated unit test file (\widget\_test.dart\). This cleanup eliminates the old demo infrastructure that previously demonstrated the \flutter\_component\ plugin.
example · high confidence
Removal of legacy ImageWidget and TDImage components
The \lib/src/components/image\ directory has removed the legacy \ImageWidget\ and \TDImage\ components. This deletion eliminates the custom image loading logic that previously handled network requests, loading states, and error fallbacks via a dedicated stateful widget, as well as the \TDImage\ wrapper that provided predefined sizes (XS through XL) and shape types (clip, fitHeight, stretch, square, roundedSquare, circle). Users relying on these specific components will need to migrate to the current image implementation.
lib/src/components/image · high confidence
Removal of legacy Picker components and internal helpers
The \lib/src/components/picker\ directory has removed the legacy \TDDatePicker\, \TDMultiPicker\, and \TDPicker\ implementation files, along with the internal \NoWaveBehavior\ scroll behavior and \TDItemWidget\ helper. This change eliminates the previous picker UI components and their associated styling logic from this location, likely as part of a migration to a new component structure or library version.
lib/src/components/picker · high confidence
Removal of legacy TDBadge component
The legacy TDBadge widget (td\_badge.dart) has been removed from the codebase. This component previously provided badge indicators with support for red point, remind, and message types, featuring size-based styling for single, double, and triple-digit counts, as well as configurable border radii and colors. Its removal indicates a shift in the component library's architecture, likely replacing this implementation with a new or standardized badge component elsewhere in the package.
lib/src/components/badge · high confidence
Removal of legacy TDButton component
The legacy \TDButton\ widget implementation has been removed from the codebase. This deletion eliminates the previous button component, which previously supported specific sizes (Small, Medium, Large), themes (Default, Primary, Light, Danger), shapes (Square, Round), and types (Normal, Loading, Progress). Users relying on this specific class will need to migrate to the current button implementation.
lib/src/components/button · high confidence
Removal of legacy TDEmpty component
The legacy \TDEmpty\ widget (previously located at \lib/src/components/empty/td\_empty.dart\) has been removed from the codebase. This component previously rendered an empty state with configurable images, text, and operation buttons, utilizing the older \TDTheme\ and \TDButton\ APIs. Its removal aligns with the broader refactoring of the empty state component to match updated design specifications and the new \tdesign\_flutter\ package structure.
lib/src/components/empty · high confidence
Removal of legacy TDNavBar component
The legacy TDNavBar widget and its associated TDNavBarItem class have been removed from the library. This change eliminates the custom navigation bar implementation that previously relied on internal theme tokens and custom icon wrappers, simplifying the component structure.
_lib/src/components/nav\bar · high confidence
Removal of legacy TDRadio component
The legacy \TDRadio\ widget (td\_radio.dart) has been removed from the library. This component previously provided a basic radio button with Circle, Square, and Check visual types, relying on a custom \TDIcon\ wrapper and a fixed 24x24 size. Its removal indicates a shift toward newer component implementations or standard Flutter widgets, requiring users to migrate any direct usage of this specific class.
lib/src/components/radio · high confidence
Removal of legacy TDSearchBar component
The legacy \TDSearchBar\ widget has been removed from the codebase. This component previously provided a search input with a clear button, cancel button, and theme-based styling. Its removal indicates a shift in the search UI implementation, likely replaced by a newer or standardized search component elsewhere in the library.
lib/src/components/search · high confidence
Removal of legacy TDTab and TDTabBar components
The legacy \TDTab\ and \TDTabBar\ widget implementations located in \lib/src/components/tabbar\ have been removed from the codebase. This change eliminates the custom wrapper classes that previously extended Flutter's standard \Tab\ and \TabBar\ widgets, effectively cleaning up the component library by discarding these specific deprecated or internal UI elements.
lib/src/components/tabbar · high confidence
Removal of legacy TDText component
The legacy \TDText\ widget has been removed from the codebase. This component previously wrapped Flutter's native \Text\ widget with custom styling defaults (such as a default font size of 16 and line height of 24) and specific design tokens like \isTextThrough\ for strikethrough effects. Users relying on this specific wrapper implementation will need to migrate to the updated text handling logic or the new \TDText\ implementation provided in subsequent changes.
lib/src/components/text · high confidence
Removal of legacy TDToast component
The legacy \TDToast\ class and its internal \\_TDTextToast\ widget have been removed from the codebase. This change eliminates the previous implementation that displayed text-based toasts using a hardcoded font size and specific theme color references, effectively cleaning up the component library to make way for updated toast implementations.
lib/src/components/toast · high confidence
Removal of legacy input components
The legacy input components \TDInputView\ and \TDInput\ have been removed from the codebase. This change eliminates the previous implementation of the input field widget, which previously wrapped a standard Flutter \TextField\ with custom styling and layout support for left/right labels and buttons.
lib/src/components/input · high confidence
Removal of the main library export file
The \lib/td\_export.dart\ file, which previously served as the single entry point to re-export all public components (such as Avatar, Button, Icon, Input, TabBar, Tag, etc.) and theme definitions, has been deleted. Users can no longer import the entire library via this single file and must instead import individual component or theme files directly from their respective source paths.
lib · high confidence
Behavioural changes
Action Sheet now supports paginated and scrollable grid layouts
The Action Sheet component has been refactored to support three grid layout modes: fixed, paged, and horizontally scrollable. Users can now display action items in a grid with pagination indicators for paged layouts or continuous horizontal scrolling for scroll layouts, in addition to the existing list mode. The component also introduces a dedicated theme extension for customizing visual properties such as grid item height, icon sizes, and panel radius, while aligning the popup behavior and spacing with the updated design system.
_tdesign-component/lib/src/components/action\sheet · high confidence
Android example app rebranded, permissions expanded, and Gradle upgraded
The Android example application has been rebranded from 'flutter\_component\_example' to 'tdesign\_flutter\_example', including the package name, app label, and source directory structure. To support file upload and media capture demos, the app now requests storage (read/write/external storage) and camera/microphone permissions, and enables legacy external storage access. The Android build environment has been upgraded from Gradle 6.7 to 8.14, and the debug splash screen metadata has been removed.
tdesign-component/example/android · high confidence
Avatar component API alignment and v1 migration
The Avatar component has been migrated to a v1 implementation that aligns with mobile design standards. The API now uses \TAvatarShape\ (circle or square) instead of the deprecated \TAvatarVariant\, and introduces \TAvatarGroupCascading\ to control the stacking direction of overlapping avatars. Visual defaults for size, icon, and font dimensions are now centralized in \TAvatarDefaults\, and the component supports full theme customization via \TAvatarThemeData\ for properties like background/foreground colors, text styles, and group spacing.
tdesign-component/lib/src/components/avatar · high confidence
Calendar component refactored into a pure, strictly controlled UI with new theming and selection modes
The Calendar component has been completely rewritten to function as a pure, strictly controlled UI panel that no longer includes its own popup, toolbar, or confirmation actions. It now supports three selection modes—single, multiple, and range—via the \TCalendarVariant\ enum, and exposes a comprehensive set of customization options including \cellBuilder\, \subtitleBuilder\, and \monthTitleBuilder\. The component is now fully themeable through a dedicated \TCalendarThemeData\ extension, allowing developers to override styles for weekdays, month titles, and date cells. Additionally, the internal scrolling performance has been optimized using prefix sums and binary search for month index lookups, and the component prefix has been updated from \TD\ to \T\.
tdesign-component/lib/src/components/calendar · high confidence
Dialog component redesign with new theming and action styling
The Dialog component has been migrated to a new implementation that introduces a dedicated TDialogThemeData for controlling default styles (background, shape, elevation, text styles, padding, width) via ThemeExtension. The action system now uses semantic roles (normal, primary, destructive) to determine default button colors (light fill, brand fill, danger fill) and variants, with specific layout behaviors for one or two text-button actions (footer style) versus multiple actions. A new TConfirmDialog convenience wrapper is provided for single-action confirmations. The close button result and action spacing/padding fields are now nullable, allowing them to fall back to theme defaults.
tdesign-component/lib/src/components/dialog · high confidence
Divider component migrated to custom T3 rendering with updated default styles
The Divider component has been rewritten from scratch to use a custom T3 self-drawing layer instead of wrapping the Material Divider, introducing new enums TDividerLayout and TDividerAlign to control orientation and content positioning. This change updates the default geometry and theme contract: vertical dividers now have a fixed height of 14dp with 16dp horizontal margins, and horizontal dividers support dashed lines and configurable gap padding (default 12dp) via the new TDividerThemeData extension. The component also renames its prefix from TD to T and implements a specific priority chain for resolving styles (constructor \> theme \> Material DividerTheme \> tokens).
tdesign-component/lib/src/components/divider · high confidence
Example app assets updated for version 1.0.0-alpha.1 with dark mode theme support
The example application's asset files have been updated to reflect version 1.0.0-alpha.1 and include a new publish timestamp. A new theme configuration file (theme.json) has been added, defining color palettes for both light ('green') and dark ('greenDark') modes, enabling the app to support dark mode theming.
tdesign-component/example/assets · high confidence
Form and Input components migrated to new v1 implementation with redesigned theming and validation
The form and input components have been completely rewritten (migrated from v1) to introduce a new validation and theming architecture. For forms, a new \TForm\ and \TFormField\ system now manages field lifecycle and validation, utilizing a new \TFieldScope\ to pass display states (like required status and error text) to child components. The \TFormItem\ layout has been updated with new theming options via \TFormThemeData\, allowing control over label width, alignment, required mark position, and spacing. For inputs, the \TInput\ component now integrates with this new form scope to display validation errors directly within the input field when configured. Theming has been expanded with \TInputThemeData\ and \TFormThemeData\ to allow granular control over styles such as border radius, content padding, and text styles, while the component prefix has been standardized from \TD\ to \T\.
tdesign-component/lib/src/components/form · high confidence
Indexes component migrated to v2 with safe area support and theme fixes
The Indexes component has been replaced with a new v2 implementation (TIndexes) that introduces a safe area adaptation option (useSafeArea) to prevent layout overlap on devices with notches or dynamic islands. The component now features a refined interaction contract, including distinct callbacks for scroll-derived changes (onChanged) versus direct user selection (onSelect), and supports sticky anchor positioning with configurable offsets. Additionally, visual rendering issues with Indexes and SideBar theme interpolation have been resolved, and the component now supports a capsule-style anchor theme for consistent styling.
tdesign-component/lib/src/components/indexes · high confidence
Introduce TIcon component with theme-aware styling
The Icon component has been migrated to a new implementation (TIcon) that acts as a thin wrapper around Material's Icon, providing TDesign-specific default colors and component-level theme injection via TIconThemeData. Users can now control icon size and color through a dedicated theme extension, with a defined priority chain where constructor arguments take precedence over the theme, explicit IconTheme, and finally TDesign tokens. The component also supports construction by icon name via TIcon.fromName and ensures accessibility by exposing semantic labels to assistive technologies.
tdesign-component/lib/src/components/icon · high confidence
Introduce new TCollapse component with controlled state and theming
The \t\_collapse\ directory now contains a new implementation of the collapse panel component (\TCollapse\ and \TCollapsePanel\). This update replaces the previous v1 implementation with a new architecture that uses a controlled state pattern, requiring users to manage the \value\ (list of expanded panel identifiers) and handle changes via \onChanged\. The component supports both \multiple\ and \accordion\ modes, and introduces visual variants (\block\ and \card\) with configurable elevation, animation duration, and custom header/body builders. Theming is handled via \TCollapseThemeData\, allowing customization of colors, text styles, and spacing.
tdesign-component/lib/src/components/collapse · high confidence
Migrated Loading component to TDesign v1 API with new indicator types and theming
The Loading component has been migrated to the v1 implementation, renaming the class from TLoading to TLoading and prefixing indicator classes with T (e.g., TCircleIndicator, TCupertinoActivityIndicator). The size parameter is now a double representing logical pixels (default 20), and the component supports three icon types: circle, point (bouncing dots), and activity (iOS-style spinner). A new TLoadingThemeData allows customization of icon color, text color, layout axis, and animation duration via ThemeExtension. A TLoadingController provides imperative show/dismiss methods for overlay-based loading states.
tdesign-component/lib/src/components/loading · high confidence
New TCascader component with controlled selection and theme support
The cascader component has been migrated to a new v1 implementation that enforces strict controlled selection: the component requires an explicit \value\ (selected path) and an \onChanged\ callback, where clicking a branch emits a candidate path that the caller must write back to \value\ to advance the active level. It supports two navigation variants (\step\ and \tab\) and exposes a comprehensive \TCascaderThemeData\ for customizing height, background color, border radius, text styles, indicator color, navigation padding, and divider color.
tdesign-component/lib/src/components/cascader · high confidence
New TSwiper component with controller-driven state and themeable pagination
The Swiper component has been migrated to a new implementation that uses a dedicated TSwiperController for programmatic navigation (jumpTo, animateTo, next, previous) and state management, replacing the previous internal state handling. The component now supports multiple pagination variants (dots, dotsBar, fraction, controls) with configurable placement (overlay or outside) and alignment, all customizable via a new TSwiperThemeData extension. Visual defaults for dot sizes, spacing, colors, and control icon sizes are now themeable, and page transition effects (cardMargin, scale, scaleAndFade) are supported.
tdesign-component/lib/src/components/swiper · high confidence
New TSwitch component with loading state and variant support
The switch component in the tdesign-component library has been replaced with a new implementation (TSwitch) that introduces a dedicated loading state, which displays an indicator and disables interaction while loading. It also supports multiple content variants (filled, text, and icon) and configurable sizes (small, medium, large), allowing for more flexible UI customization. The component now uses a platform-aware underlying switch (TCupertinoSwitch) and integrates with the theme system via TSwitchThemeData for consistent styling.
tdesign-component/lib/src/components/switch · high confidence
New TTimeCounter component with precise display and control
The \TTimeCounter\ widget in \tdesign-component\ has been migrated to a new implementation that aligns the visual countdown display with the actual timing behavior. Users can now configure the timer direction (countdown or count-up), customize the time format (supporting days, hours, minutes, seconds, and milliseconds), and control the update precision (frame-based for milliseconds, or value-change-based for coarser units). The component exposes a \TTimeCounterController\ for programmatic start, pause, and reset actions, and supports visual variants (plain, highlight, round, square) and sizes (small, medium, large) via theme extensions.
_tdesign-component/lib/src/components/time\counter · high confidence
Picker component rewritten with strict controlled selection and new wheel layout
The Picker component in tdesign-component has been completely refactored to support strict controlled selection, where the component's internal state is fully driven by the parent's \value\ prop and \onChanged\ callback. This update introduces a new \MultiWheelLayout\ for rendering multi-column wheels with a central highlight bar and gradient fade effects, and a dedicated \WheelColumn\ widget for individual column behavior. The API now includes \onColumnScrollEnd\ for detecting when scrolling stops, enabling features like on-demand loading. The component also supports both independent multi-column (\TPickerColumns\) and hierarchical linked (\TPickerLinked\) data sources, with a new \TPickerPopup\ helper for standard bottom-sheet presentation. Theme customization is now handled via \TPickerThemeData\, allowing control over wheel height and item count.
tdesign-component/lib/src/components/picker · high confidence
Popover component refactored with anchor-based control and theme support
The Popover component has been restructured to use a new anchor-based architecture, introducing TPopoverAnchor to bind the trigger area and TPopoverController to manage open/close states and query status from outside the trigger. This replaces the previous implementation, allowing for more robust lifecycle management and external control. The component now supports a comprehensive set of placement options (top, bottom, left, right, and their combinations) and visual configurations including color schemes (default, light, primary, success, warning, danger), arrow visibility and size, padding, and border radius. A new TPopoverThemeData extension allows default styling to be applied via the Flutter theme tree, covering background color, padding, dimensions, and shadow. The public API has been aligned with documentation and demo standards, consolidating content and positioning options.
tdesign-component/lib/src/components/popover · high confidence
Popup component rewritten with new layout, safe area, and overlay APIs
The Popup component has been completely refactored to align with official design behavior. It now supports five placement directions (top, bottom, left, right, center) with specific default dimensions (e.g., 240px height for edges, 280px width for drawers). A new \useSafeArea\ option allows the popup to respect device notches and safe zones. The overlay behavior is now controlled via a unified \TPopupOverlayConfig\ that decouples visual visibility from interaction blocking. Additionally, the component supports a customizable header for bottom placements and a close control slot for center placements, with styling and dimensions now configurable via a dedicated \TPopupThemeData\ extension.
tdesign-component/lib/src/components/popup · high confidence
Progress component migrated to v1 with new variants and theming
The TProgress component has been rewritten to support a broader set of visual styles, including linear, plump, circular, microCircular, button, and microButton variants, allowing for more flexible UI representations of task progress. The component now exposes granular theming via TProgressThemeData, enabling developers to customize stroke width, colors, border radius, circle radius, and animation durations (both determinate and indeterminate) through the Flutter Theme extension. Additionally, interactive capabilities have been added for button-style variants, supporting onTap and onLongPress callbacks, while accessibility is enhanced with configurable semantics labels and values.
tdesign-component/lib/src/components/progress · high confidence
Radio component refactored to use explicit group state management
The TRadio widget has been redesigned to no longer manage its own selection state; it now requires a TRadioGroup ancestor to control the selected value and change callbacks. This change introduces a new TRadioThemeData for centralized styling of colors and spacing, and adds support for multiple visual variants (inline, block, card) and icon types (dot, check, fill) to align with updated design specifications.
tdesign-component/lib/src/components/radio · high confidence
Rate component migrated to new v1 implementation with updated API and theming
The Rate component in tdesign-component has been replaced with a new v1 implementation (TRate). This change introduces a strictly controlled API where the rating value is managed via a required 'value' property and 'onChanged' callback, replacing previous patterns. It adds support for half-star ratings via the 'allowHalf' flag, value indicators on interaction, and customizable icon builders. Theming is now handled through a dedicated TRateThemeData extension, allowing customization of star colors, icon sizes, gaps, and text styles.
tdesign-component/lib/src/components/rate · high confidence
Redesigned Link component with unified theming and interaction states
The Link component has been migrated to a new v1 implementation that consolidates API and theme contracts. Users can now control link appearance via a dedicated TLinkThemeData extension, allowing default size, color scheme, underline, and icon settings to be applied at the theme level. The component supports five semantic color schemes (primary, default, danger, warning, success) and three sizes (small, medium, large), with colors and styles resolving dynamically based on interaction states (hover, focus, press) and disabled status. It also supports optional prefix/suffix icons, tooltips, and semantic labels for accessibility.
tdesign-component/lib/src/components/link · high confidence
Redesigned TButton and TTag components with unified theming and variant support
The TButton widget has been completely rewritten to align with TDesign specifications, introducing explicit variant (fill, outline, text, ghost), color scheme, and size controls, along with a dedicated \TButtonResolve\ engine for consistent style merging and gradient support. The TTag component has been updated to support multiple variants (dark, light, outline, lightOutline) and shapes (square, round, mark), with a new \TSelectTag\ for controlled selection states. Both components now use dedicated \ThemeExtension\ classes (\TButtonThemeData\, \TTagThemeData\) for centralized styling, replacing previous ad-hoc implementations.
tdesign-component/lib/src/components/button · high confidence
Redesigned TDrawer component with declarative content and showTDrawer API
The TDrawer component has been refactored to separate content definition from presentation logic. The TDrawer widget now acts as a declarative content container supporting items, titles, footers, and custom children, while the showTDrawer function handles the floating layer behavior, including placement (left/right), overlay visibility, safe area usage, and lifecycle management. This change aligns the drawer's API with the updated popup system and provides more explicit control over drawer appearance and interaction.
tdesign-component/lib/src/components/drawer · high confidence
Redesigned TEmpty component with consolidated API and theme support
The TEmpty component has been rewritten to provide a cleaner, more flexible API for displaying empty states. The new implementation consolidates content composition by accepting an optional \image\ widget (which takes precedence over the default \icon\) and an \operation\ widget for actions like buttons. It also introduces theme support via \TEmptyThemeData\, allowing developers to customize the description text color and font through the Flutter theme extension, ensuring consistent styling across the application.
tdesign-component/lib/src/components/empty · high confidence
Redesigned TSideBar with variant support and theme integration
The TSideBar component has been refactored to support two visual variants: 'line' (default, with a left indicator line) and 'tag' (rounded label style). The API now uses a controlled pattern where the selected value is held by the caller and reported via onChanged. Styling is managed through a new TSideBarThemeData extension, allowing theme-level configuration of colors, text styles, and padding, while instance properties can override theme defaults. The component also includes improved badge-to-label spacing and proper handling of loading states.
tdesign-component/lib/src/components/sidebar · high confidence
Redesigned TabBar with new theming and double-layer menu support
The TabBar component has been migrated to a new implementation that introduces a dedicated TTabBarThemeData for managing sub-tree visual defaults (such as height, colors, and dividers) and adds support for double-layer text tabs with expandable pop-up menus. This change updates the public API to include new configuration options for item styles (normal vs. label), container styles (filled vs. capsule), and indicator animations, while also fixing the default width behavior for double-layer menus.
tdesign-component/lib/src/components/tabbar · high confidence
Refactored text component with new font loading and style resolution contracts
The text component location has been migrated to a new implementation that introduces explicit contracts for font loading and style resolution. A new \TFontLoader\ utility allows applications to dynamically download and register fonts before rendering, ensuring fonts are available without implicit downloads during paint. The \TText\ widget now delegates layout and accessibility to Flutter's native \Text\ while applying a strict style resolution priority (instance style \> instance parameters \> theme data \> ambient defaults) via \TTextResolve\. Additionally, a new \TTextThemeData\ extension enables configuring default font tokens, text styles, strut styles, and text height behaviors at the theme level, providing a more robust and predictable text styling system.
tdesign-component/lib/src/components/text · high confidence
Removal of legacy theme data files and core theme classes
The theme module has removed several internal implementation files, including \td\_colors.dart\, \td\_corners.dart\, \td\_font\_family.dart\, \td\_fonts.dart\, and \td\_default\_theme.dart\, along with the core \TDTheme\ widget and \TDThemeData\ class definitions. This cleanup eliminates the previous Map-based theme data structure and its associated extension getters, signaling a structural shift in how theme data is managed and accessed within the library.
lib/src/theme · high confidence
Skeleton component migrated to new v1 API with preset variants and custom layouts
The Skeleton component has been replaced with a new implementation that introduces preset visual variants (avatar, image, text, paragraph) and a flexible custom layout system using rows and blocks. Users can now choose between predefined shapes or define their own grid structures via TSkeletonLayout. The component also supports two animation styles (gradient sweep and opacity flash) and includes a delay property to prevent flickering on fast loads. Theme customization is handled via TSkeletonThemeData, allowing control over block colors, highlight colors, border radius, and row spacing.
tdesign-component/lib/src/components/skeleton · high confidence
Sticky header component migrated to a new v1 implementation
The sticky header logic in the indexes component has been completely rewritten (migrated to v1) to fix anchor jump positioning errors when the target is outside the visible area. This change replaces the previous implementation with a new set of internal classes (\ConstrainedLayoutBuilder\, \StickyHeaderValueLayoutBuilder\, \RenderSliverStickyHeader\) that handle layout constraints and pinning behavior differently, ensuring more accurate scroll-to-anchor positioning.
_tdesign-component/lib/src/components/dropdown\_menu, tdesign-component/lib/src/components/indexes/sticky\header · high confidence
Swipe cell component restructured with new theming and action API
The swipe cell component has been migrated to a new implementation that introduces a dedicated \TSwipeCellThemeData\ extension, allowing developers to customize action item styles (background, icon, text, spacing, padding) via the theme tree. The API now uses \TSwipeCellAction\ widgets for individual buttons and \TSwipeCellPanel\ to group them, replacing previous structural approaches. Additionally, the component class and enum prefixes were updated from \TD\ to \T\ (e.g., \TSwipeCell\, \TSwipeCellSide\), and a new \TSwipeCellController\ was added for programmatic control of the open/close state.
_tdesign-component/lib/src/components/swipe\cell · high confidence
TDesign Flutter v1.0.0-alpha.1: Major API overhaul and theme system migration
The \tdesign-component\ package has been updated to version 1.0.0-alpha.1, introducing a significant behavioral change through a complete API migration. Components now use the \T\ prefix (e.g., \TSwiper\, \TBadge\) instead of the previous \TD\ prefix, and visual defaults are unified via Flutter's \ThemeData\ and TDesign \ThemeExtension\. This release enforces stricter controlled component patterns: \TSwiper\ is now driven by \TSwiperController\, \Calendar\ uses \DateTime\ for state, and \Picker\/\DateTimePicker\/\Cascader\ no longer manage their own titles or popups, requiring business logic to handle these aspects. Additionally, the package now includes a \.pubignore\ file to exclude build artifacts and examples from the published library, and the minimum supported Flutter version is explicitly set to 3.32.0.
tdesign-component · high confidence
TSteps component migrated to v1 with three distinct usage modes
The Steps component has been completely rewritten to support three specific modes via named constructors: \TSteps.progress\ for standard progress tracking, \TSteps.selectable\ for vertical step selection with dot indicators, and \TSteps.display\ for read-only presentation. This change introduces a new \TStepsItemData\ model for step configuration, adds \TStepsIndicator\ (standard vs. dot) and \TStepsStatus\ (process vs. error) enums, and implements separate horizontal and vertical rendering logic that respects the selected mode and theme colors.
tdesign-component/lib/src/components/steps · high confidence
Tabs component migrated to TDesign v2 with new variants and theming
The tabs components have been completely rewritten to align with TDesign v2 standards. The main entry point is now \TTabsBar\, which supports three distinct visual variants: Line (default indicator), Tag (capsule style), and Card (container style). Users can now control the text size via a \size\ property (small/large) and customize appearance through the new \TTabsBarThemeData\ theme extension, which manages colors, padding, and indicator styles. The underlying implementation uses \THorizontalTabBar\ and \TTab\ widgets, replacing the previous \TD\-prefixed components. The view component \TTabsBarView\ has also been updated to use a \physics\ property instead of a boolean \isSlideSwitch\ for controlling scrollability.
tdesign-component/lib/src/components/tabs · high confidence
Theme system restructured with new token-based architecture and dark mode support
The theme infrastructure has been completely refactored to support dark mode and a unified token system. A new \TResourceManager\ and \TResourceDelegate\ handle internationalized strings, while \TThemeData\ now exposes structured tokens for colors (\TColors\), typography (\TFonts\, \TFontFamily\), spacing (\TSpacers\), and radii (\TRadius\). The default theme configuration is centralized in \TDefaultTheme\, and component-specific styles are managed via \TComponentThemeData\. This change also includes renaming internal theme classes from the \TD\ prefix to \T\ and updating the \Font\ and \FontFamily\ models to support font weight and package specifications.
tdesign-component/lib/src/theme · high confidence
Toast component migration with configurable overlay and placement
The Toast component has been migrated to a new implementation that introduces explicit control over the overlay behavior and display position. Users can now configure a visible semi-transparent mask via the new \TOverlayConfig\ (separating \showOverlay\ from \preventTap\), and choose where the toast appears on screen using the new \TToastPlacement\ enum (top, middle, or bottom). The component also supports a themeable style configuration via \TToastThemeData\ for background color, text style, and icon properties.
tdesign-component/lib/src/components/toast · high confidence
Updated example shell icons to new design system
The example application shell now uses a refreshed set of SVG icons. These assets have been replaced with new 16x16 designs that feature a consistent 0.9 black fill-opacity, providing a uniform visual style across the interface.
tdesign-component/example/shell · high confidence
Updated iOS example configuration and file structure
The iOS example project has been updated with a new ExportOptionsDemoPlist.plist file to configure enterprise distribution settings, including manual signing and specific provisioning profiles. Additionally, the .gitignore file has been moved to the tdesign-component/example/ios directory and updated to ignore dgph files.
tdesign-component/example/ios · high confidence
Upload component migrated to a new controlled API with grid/list layouts and drag-and-drop support
The TUpload component has been replaced with a new implementation that uses a strictly controlled file list model. Users must now manage the file state via the required \files\ property and the \onChanged\ callback, rather than relying on internal state. The component supports two display modes—grid and list—configurable via the \layout\ property, and allows reordering of files via long-press drag-and-drop when \draggable\ is enabled. It introduces a \TUploadFileStatus.retryableError\ state to indicate upload failures that can be retried by the application, and provides granular theming through \TUploadThemeData\ for customizing item size, spacing, colors, and variants (square or circle).
tdesign-component/lib/src/components/upload · high confidence
iOS example app configuration and metadata updates
The iOS example app bundle has been renamed from 'flutter\_component\_example' to 'tdesign\_flutter\_example' with the display name 'Tdesign Flutter Example'. The app now requests camera, microphone, and photo library permissions required by the upload component demo, and enables view controller-based status bar appearance. Additionally, the app supports indirect input events and disables the minimum frame duration on iPhone to align with modern iOS requirements.
tdesign-component/example/ios/Runner · high confidence
iOS example project updated for Xcode 15 and minimum iOS 12
The iOS example project configuration has been updated to require a minimum deployment target of iOS 12 (up from 9.0) and upgraded to Xcode 15.10 project format. The build system now explicitly includes CocoaPods resource copying and uses a modern manifest lock check script, while the Xcode scheme enables GPU validation mode and configures the LLDB init file for improved debugging support.
tdesign-component/example/ios/Runner.xcodeproj · high confidence
iOS example storyboard files relocated and minor ID corrected
The iOS example project's storyboard files (LaunchScreen.storyboard and Main.storyboard) have been moved from the root example directory to the tdesign-component/example directory. Additionally, a minor identifier typo in Main.storyboard was corrected, changing the scene ID from 'tne-QT-ifu' to 'the-QT-ifu'.
tdesign-component/example/ios/Runner/Base.lproj · high confidence
macOS example app plugin registration updated
The macOS example application now explicitly registers the file\_selector, shared\_preferences, and url\_launcher plugins via the generated Flutter plugin registrant, ensuring these dependencies are correctly initialized at runtime.
tdesign-component/example/macos · high confidence
Test coverage
Added acceptance tests for Theme token reading and priority override behavior; Added comprehensive test coverage for TSteps and Theme infrastructure; Added comprehensive test coverage for the BackTop component; Added comprehensive test suite for TButton component; Added comprehensive unit and visual regression tests for TNavBar; Added comprehensive widget tests for TForm and TFormField; Added golden and unit tests for the TImage component; Added golden and unit tests for the TTable component; Added golden and unit tests for the Upload component; Added integration and golden tests for example pages; Added test coverage for Calendar, DateTimePicker, Popup, and Theme components; Added test coverage for TPicker component behavior and theming; Added test helpers for Popup component; Added tests for Popup theme data, options contracts, and widget behavior; Added tests for TImageViewer component behavior; Added tests for component regression and coverage tooling; Added unit and golden tests for TPullDownRefresh; Added unit and golden tests for TSlider and TRangeSlider; Added unit and golden tests for TStepper component; Added unit and golden tests for TSwipeCell component; Added unit and golden tests for TTabBar; Added unit tests for Action Sheet components; Added unit tests for Indexes component sticky header and theme data; Added unit tests for TAvatar component; Added unit tests for TCell component; Added unit tests for TCheckbox and TCheckboxGroup components; Added unit tests for TDialog component behavior; Added unit tests for TDivider component; Added unit tests for TDropdownMenu and TDropdownItem components; Added unit tests for TFab component and layout logic; Added unit tests for TFooter component behavior and theming; Added unit tests for TIcon widget behavior; Added unit tests for TInput component behavior and theme data; Added unit tests for TMessage component behavior; Added unit tests for TNoticeBar component; Added unit tests for TPopover component; Added unit tests for TProgress widget variants and behavior; Added unit tests for TRadio component behavior and theme contract; Added unit tests for TResult component; Added unit tests for TSearchBar component behavior; Added unit tests for TSideBar component and theme data; Added unit tests for TSkeleton component variants and custom layouts; Added unit tests for TSwiper component behavior; Added unit tests for TSwitch and TCupertinoSwitch components; Added unit tests for TTag and TSelectTag components; Added unit tests for TText component, font loading, and text resolution logic; Added unit tests for TTextarea component behavior and styling; Added unit tests for TTimeCounter widget; Added unit tests for misc components and theme extensions; Added unit tests for the TEmpty component; Added unit tests for the TLink component and its theme resolution logic; Added unit tests for the TRate component; Added visual regression and unit tests for TCascader; Added visual regression and unit tests for base and navigation components; Added visual regression and unit tests for the TBadge component; Added visual regression evidence and acceptance tests for Table design alignment; Added widget tests for TCollapse and TNonAnimatedExpandIcon; Added widget tests for TDateTimePicker and DateTimePickerWheel; Added widget tests for TLoading and its indicator components; Added widget tests for TToast component; Added widget tests for TTreeSelect component; New component regression and coverage tooling; Removal of flutter\_component\_test.dart.
Dependencies
Migrate example app to TDesign Flutter and upgrade build toolchains
The example application has been renamed from 'flutter\_component' to 'tdesign\_flutter\_example' and updated to depend on the 'tdesign\_flutter' package. The project now targets Flutter SDK 3.32.0+ and Dart 3.8.0+, requiring an upgrade of the Android build configuration to AGP 8.11.1 and Kotlin 2.2.20, and the iOS platform minimum to 12.0. Additionally, the site's development dependencies have been updated, including '@tdesign/site-components' to 0.18.1 and 'prismjs' to 1.30.0.
(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 50.
Lenses
- Code Health 66
- Architecture 98
- Maturity 61
- Readiness 37
- Security 50
- Domain Modelling 100
Changes since last survey
- 300 commits — 225 feature/other, 75 fixes
By area
- tdesign-component/example — 157 commits
- tdesign-component/lib — 33 commits
- .github/workflows — 19 commits
- (root) — 18 commits
- (repo) — 15 commits
- tdesign-site/site — 9 commits
- tdesign-component/test — 7 commits
- .harness/cursor — 5 commits
- tdesign-component/CHANGELOG.md — 4 commits
- tdesign-site/src — 4 commits
- .agents/skills — 3 commits
- requirements/issue-900-tab-bar — 2 commits
- specs/030-indexes-design-alignment — 2 commits
- tdesign-component/pubspec.yaml — 2 commits
- tdesign-site/package-lock.json — 2 commits
- tdesign-site/package.json — 2 commits
- specs/004-swipe-cell-theme-review-fixes — 1 commit
- specs/004-toast-contract-alignment — 1 commit
- specs/005-swipe-cell-theme-review-fixes — 1 commit
- specs/016-checkbox-theme-token-sizes — 1 commit
Notable commits
- fix: Feature/td dropdown item fix (#846)
- fix: Merge branch 'develop' into fix/bottom_tab_bar
- fix: Merge pull request #885 from ccXxx1aoBai/fix/bottom_tab_bar
- fix: Revert "ci(test-build): 恢复3.x 编译测试" (#908)
- fix: Revert "feat(ios): 迁移ios,采用 UISceneDelegate" (#849)
- fix: Revert "fix:TDCell的note过长时溢出问题 (#769)"
- fix: [autofix.ci] apply automated fixes
- fix: [autofix.ci] apply automated fixes
- fix: [autofix.ci] apply automated fixes
- fix: chore: fix init.sh (#813)
- fix: chore: fix surge preview deploy mode
- fix: chore: update site components to fix algolia search (#786)
- fix: ci(auto-fix): 添加 site 文档同步 (#878)
- fix: fix(ActionSheet): 补齐分页宫格并修正视觉间距 (#1123)
- fix: fix(Calendar): 修复日期文字颜色并完善演示 (#1118)
- fix: fix(Demo): 对齐 PullDownRefresh 骨架模块顺序 (#1130)
- fix: fix(Demo): 对齐移动端示例页布局与 Search 视觉 (#1110)
- fix: fix(Dialog): 修正滚动条与示例像素差异 (#1124)
- fix: fix(DropdownMenu): 修复 item 的 label 过长时导致显示不完全的 bug (#823)
- fix: fix(DropdownMenu): 修复分栏禁用项背景色 (#1125)
- …and 280 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
Tencent/tdesign-flutter was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 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 cec91a382c868cf0eeed8b6156fb596f25a4a197 — 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.