# UI Basic 基础UI组件模块 ## 模块概述 `ui_basic` 是 OneApp 基础UI模块群中的核心组件库,提供了应用开发中常用的基础UI组件和交互元素。该模块封装了通用的界面组件、布局容器、表单元素等,为整个应用提供统一的设计语言和用户体验。 ### 基本信息 - **模块名称**: ui_basic - **版本**: 0.2.45 - **仓库**: https://gitlab-rd0.maezia.com/dssomobile/oneapp/dssomobile-oneapp-ui-basic - **Flutter 版本**: >=1.17.0 - **Dart 版本**: >=2.17.0 <4.0.0 - **发布服务器**: http://175.24.250.68:4000/ ## 功能特性 ### 核心功能 基于实际项目的UI组件库,包含丰富的组件和第三方集成。 1. **基础组件库** - 按钮组件(OneIconButton、CommonButton) - 输入组件(BasicTextField、BasicMultiTextField、VehiclePlateField) - 展示组件(OneTag、OneCard、ProgressWidget) - 导航组件(CommonTitleBar、CommonTabbar) 2. **交互组件** - 上拉下拉刷新(pull_to_refresh集成) - 轮播图组件(OneSwiper、carousel_slider集成) - 对话框和弹窗(OneDialogX、CommonBottomSheet) - 加载指示器(LoadingWidget、CommonLoadingWidget) 3. **多媒体组件** - 图片组件(GlinettImage、ImageWidget、CachedNetworkImage集成) - 扫码组件(QrScannerWidget、flutter_scankit集成) - 相机组件(CameraWidget、camera集成) - SVG支持(flutter_svg集成) 4. **富文本和图表** - HTML富文本渲染(flutter_html集成) - 图表组件(OneChart、fl_chart集成) - ECharts集成(FlutterEcharts) - 评分组件(RatingWidget、flutter_rating_bar集成) ## 技术架构 ### 目录结构 ``` lib/ ├── ui_basic.dart # 模块入口文件 ├── src/ # 源代码目录 │ ├── components/ # 基础组件 │ ├── containers/ # 布局容器 │ ├── interactions/ # 交互组件 │ ├── themes/ # 主题配置 │ ├── utils/ # 工具类 │ └── constants/ # 常量定义 ├── widgets/ # 组件导出 └── themes/ # 主题文件 ``` ### 依赖关系 基于实际项目的pubspec.yaml配置,展示真实的依赖架构。 #### 框架依赖 ```yaml # 核心框架依赖 dependencies: basic_network: ^0.2.3+4 # 网络通信基础 basic_modular: ^0.2.3 # 模块化框架 basic_modular_route: ^0.2.1 # 路由管理 basic_intl_flutter: ^0.2.2+1 # 国际化支持 basic_theme_core: ^0.2.5 # 主题核心 ui_basic_annotation: ^0.2.0 # UI框架注解 ``` #### UI和交互依赖 ```yaml # UI组件和交互依赖 dependencies: provider: ^6.0.5 # 状态管理 flutter_html: ^3.0.0-beta.2 # HTML富文本渲染 badges: ^3.1.1 # 角标组件 pull_to_refresh: ^2.0.0 # 上拉下拉刷新 carousel_slider: ^4.2.1 # 轮播图组件 cached_network_image: ^3.3.0 # 缓存网络图片 flutter_svg: ^2.0.6 # SVG图片支持 flutter_smart_dialog: ^4.9.1 # 智能对话框 visibility_detector: ^0.4.0+2# 可见性检测 fl_chart: ^0.x.x # 图表组件 ``` #### 多媒体和工具依赖 ```yaml # 多媒体和工具依赖 dependencies: camera: ^0.10.5+2 # 相机功能 image_picker: ^1.1.2 # 图片选择 image_cropper: ^9.1.0 # 图片裁剪 flutter_image_compress: ^2.0.3# 图片压缩 flutter_scankit: 2.0.3+1 # 扫码工具 url_launcher: ^6.1.11 # URL跳转 flutter_rating_bar: ^4.0.1 # 评分组件 sprintf: ^7.0.0 # 字符串格式化 dartz: ^0.10.1 # 函数式编程 rxdart: ^0.27.7 # 响应式编程 ``` ## 核心组件分析 ### 1. 模块入口 (`ui_basic.dart`) 基于真实项目的模块导出结构,包含大量第三方库集成和自定义组件。 **功能职责**: - 统一导出所有UI组件和第三方库 - 集成badge、cached_network_image、flutter_html等核心UI库 - 导出自定义组件如OneColors、OneTextStyle、OneIcons - 提供car_func_block等车辆相关UI组件 ```dart // 实际的模块导出结构(ui_basic.dart) library ui_basic; // 第三方UI库集成 export 'package:badges/badges.dart'; export 'package:cached_network_image/cached_network_image.dart'; export 'package:flutter_html/flutter_html.dart'; export 'package:flutter_svg/flutter_svg.dart'; export 'package:visibility_detector/visibility_detector.dart'; export 'package:bottom_sheet/bottom_sheet.dart'; export 'package:fl_chart/fl_chart.dart'; // 自定义组件导出 export 'src/colors/colors.dart' show OneColors; export 'src/fonts/fonts.dart' show OneTextStyle, TextFont, OneBasicText; export 'src/icon/icon.dart' show OneIcons; // UI组件导出 export 'src/components/appbar/common_title_bar.dart'; export 'src/components/button/buttons.dart'; export 'src/components/dialog/dialog_export.dart'; export 'src/components/loading/loading_widget.dart'; export 'src/components/text_field/basic_text_field.dart'; export 'src/components/cards/cards_export.dart'; // 车辆功能组件 export 'src/car_func_block/car_func_block_class.dart'; export 'src/car_func_block/car_func_block_manager.dart'; // 工具类导出 export 'src/utils/qr_scanner_util/qr_scanner_util.dart'; export 'src/utils/image_util/image_util.dart'; export 'src/utils/launcher/launch_util.dart'; ``` ### 2. 主题颜色系统 (`src/colors/colors.dart`) 基于主题核心框架的动态颜色系统,支持主题切换和自定义颜色。 ```dart // 实际的颜色系统实现 class OneColors { /// 主题色 Primary Color static Color get primary => theme.ofStandard().themeData?.appColors?.primary ?? const Color(0xFFEED484); /// 背景色 Bgc static Color get bgc => theme.ofStandard().themeData?.appColors?.backgroundColors.bgc ?? const Color(0xFFFFFFFF); /// 背景色 辅助1-5 static Color get bgcSub1 => theme.ofStandard().themeData?.appColors?.backgroundColors.bgcSub1 ?? const Color(0xFFFFFFFF); // ... 更多背景色变体 /// 动态主题获取 static ITheme get theme => uiBasicPlatformInfoDeps.theme != null ? uiBasicPlatformInfoDeps.theme! : DefaultTheme( DefaultStandardResource(), DefaultUiKitResource(), ); } ``` ### 4. 按钮组件 (`src/components/button/buttons.dart`) 基于真实项目的按钮组件实现,支持多种按钮类型和状态管理。 ```dart // 实际的按钮状态枚举 enum BtnLoadingStatus { /// 初始化 idle, /// 加载中 loading, } /// 按钮类型枚举 enum BtnType { /// TextButton text, /// ElevatedButton elevated, /// OutlineButton outline, } /// 实际的图标按钮组件 class OneIconButton extends StatelessWidget { const OneIconButton({ required this.child, this.iconSize, this.cubit, this.onPress, this.style, Key? key, }) : super(key: key); /// 按钮内容 final Widget child; /// 字体大小 final double? iconSize; /// 状态管理 final OneIconButtonCubit? cubit; /// 点击回调 final VoidCallback? onPress; /// 样式配置 final ButtonStyle? style; @override Widget build(BuildContext context) { // 实际的按钮实现逻辑 // 支持状态管理和样式定制 } } /// 通用按钮组件 class CommonButton extends StatelessWidget { // 支持加载状态、不同按钮类型、自定义样式等 // 集成BLoC状态管理和主题系统 } ``` ### 5. 文本输入组件 (`src/components/text_field/`) 包含多种文本输入组件的真实实现。 ```dart // 基础文本输入字段 export 'src/components/text_field/basic_text_field.dart'; export 'src/components/text_field/basic_multi_text_field.dart'; export 'src/components/text_field/clear_text_field.dart'; export 'src/components/text_field/edit_text/edit_text.dart'; // 特殊用途文本字段 export 'src/components/text_field/vehicle_plate_field/vehicle_plate_field_widget.dart'; // 实际支持的功能: // - 基础文本输入 // - 多行文本输入 // - 带清除按钮的文本输入 // - 车牌号输入专用组件 // - 集成表单验证和状态管理 ``` ### 7. 第三方UI库集成 ui_basic模块集成了大量优秀的第三方UI库,提供开箱即用的功能。 ```dart // 图标和标记组件 export 'package:badges/badges.dart'; // 角标组件 export 'package:font_awesome_flutter/font_awesome_flutter.dart'; // FontAwesome图标 // 图片和多媒体 export 'package:cached_network_image/cached_network_image.dart'; // 缓存网络图片 export 'package:flutter_svg/flutter_svg.dart'; // SVG支持 export 'package:dd_js_util/dd_js_util.dart'; // 九宫格图片选择 // 富文本和格式化 export 'package:flutter_html/flutter_html.dart'; // HTML渲染 export 'package:sprintf/sprintf.dart'; // 字符串格式化 export 'package:auto_size_text/auto_size_text.dart'; // 自适应文本 // 交互组件 export 'package:bottom_sheet/bottom_sheet.dart'; // 底部弹出框 export 'package:visibility_detector/visibility_detector.dart'; // 可见性检测 export 'package:extended_tabs/extended_tabs.dart'; // 扩展Tab组件 // 图表组件 export 'package:fl_chart/fl_chart.dart'; // Flutter图表库 // 轮播组件 export 'package:flutter_swiper_null_safety_flutter3/flutter_swiper_null_safety_flutter3.dart'; ``` ### 8. 工具类组件 (`src/utils/`) 丰富的工具类支持,涵盖图片处理、扫码、启动器等功能。 ```dart // 图片相关工具 export 'src/utils/image_util/image_util.dart'; export 'src/utils/image_solution/image_solution_tools.dart'; export 'src/utils/image_cropper_util/nativate_image_cropper.dart'; // 扫码相关 export 'src/utils/qr_processor/qr_processor.dart'; export 'src/utils/qr_scanner_util/qr_scanner_util.dart'; // 系统交互 export 'src/utils/launcher/launch_util.dart'; // URL启动器 export 'src/utils/imm/custom_imm.dart'; // 输入法管理 // 订单管理 export 'src/utils/order_category_manager/order_category_factory.dart'; export 'src/utils/order_category_manager/order_category_manager.dart'; // 其他工具 export 'src/utils/keep_alive.dart'; // KeepAlive包装器 export 'src/utils/widget_utils.dart'; // Widget工具类 export 'src/utils/methods.dart' show formatDate; // 格式化方法 ``` ### 9. 特色组件 针对OneApp应用特点开发的专用组件。 ```dart // 车牌号相关 export 'src/components/one_license_plate_number/one_license_plate_number.dart'; export 'src/components/text_field/vehicle_plate_field/vehicle_plate_field_widget.dart'; // 车辆HVAC相关 export 'src/components/widgets/car_hvac_other_widget.dart'; // 香氛组件 export 'src/components/fragrance/fragrance_widget.dart'; // 步进器组件 export 'src/components/stepper/stepper_widget.dart'; // 验证码组件 export 'src/components/verification_code/verification_box.dart'; export 'src/components/verification_code/code_widget.dart'; // 时间选择器 export 'src/components/time_picker/common_time_picker.dart'; export 'src/components/time_picker/ym_time_picker.dart'; // 可扩展GridView export 'src/components/gridview/expandable_gridview.dart'; // 瀑布流ScrollView export 'src/components/widgets/staggered_scrollview_widget.dart'; export 'src/components/widgets/reorderable_staggered_scroll_view_widget.dart'; ``` ## 性能优化 ### 组件优化策略 - **Widget缓存**: 缓存不变的Widget实例 - **局部更新**: 使用Consumer精确控制更新范围 - **延迟构建**: 使用Builder延迟构建复杂组件 - **内存管理**: 及时释放资源和控制器 ### 渲染优化 - **RepaintBoundary**: 隔离重绘区域 - **ListView.builder**: 使用懒加载列表 - **Image优化**: 合理使用缓存和压缩 - **动画优化**: 使用硬件加速动画 ## 测试策略 ### Widget测试 - **组件渲染测试**: 验证组件正确渲染 - **交互测试**: 测试用户交互响应 - **主题测试**: 验证主题正确应用 - **响应式测试**: 测试不同屏幕尺寸适配 ### 单元测试 - **工具类测试**: 测试工具方法功能 - **状态管理测试**: 测试状态变化逻辑 - **数据模型测试**: 测试数据序列化 ## 最佳实践 ### 组件设计原则 1. **单一职责**: 每个组件功能单一明确 2. **可复用性**: 设计通用的可复用组件 3. **可配置性**: 提供丰富的配置选项 4. **一致性**: 保持设计风格一致 ### 使用建议 1. **主题使用**: 优先使用主题颜色和样式 2. **响应式设计**: 考虑不同屏幕尺寸适配 3. **无障碍访问**: 添加语义标签和辅助功能 4. **性能考虑**: 避免不必要的重建和重绘 ## 总结 `ui_basic` 模块作为 OneApp 的基础UI组件库,提供了丰富的界面组件和交互元素。通过统一的设计语言、灵活的主题系统和完善的组件生态,为整个应用提供了一致的用户体验。模块具有良好的可扩展性和可维护性,能够满足各种界面开发需求。