ByteNoteByteNote

字节笔记本

2026年2月19日

Bruno:链家开源的企业级 Flutter 组件库

API中转
¥120

本文介绍 Bruno,一套由链家(LianjiaTech)开源的企业级 Flutter 组件库,提供高质量的移动端 UI 组件和主题定制能力。

Bruno 简介

Bruno 是链家技术团队开源的企业级 Flutter 组件库,提炼自企业级移动端产品的交互和视觉风格,提供开箱即用的高质量 Flutter 组件。该项目在 GitHub 上拥有 3.4k stars 和 516 forks,采用 MIT 许可证。

核心定位:An enterprise-class package of Flutter components for mobile applications.

核心特性

  • 企业级设计:提炼自企业级移动端产品的交互和视觉风格
  • 开箱即用:高质量的 Flutter 组件,直接可用
  • 主题定制:提供满足业务差异的主题定制能力
  • 设计工具赋能:开发全链路支持

基本信息

技术栈

语言占比
Dart99.8%
其他0.2%

版本适配

Bruno 版本Flutter SDK 版本
3.4.2 (最新)3.10.0
3.3.03.7.0
3.0.03.0.3

安装方法

pubspec.yaml 中添加依赖:

yaml
dependencies:
  bruno: ^3.4.2

然后执行:

bash
flutter pub get

导入包:

dart
import 'package:bruno/bruno.dart';

组件分类

Bruno 提供丰富的组件类别:

基础组件

  • 按钮 (BrnButton) - 多种样式的按钮组件
  • 文本 (BrnText) - 富文本、标题等文本组件
  • 图标 (BrnIcon) - 图标组件

表单组件

  • 输入框 (BrnTextInput) - 文本输入组件
  • 选择器 (BrnPicker) - 日期、时间、选项选择器
  • 单选/多选 (BrnRadio/BrnCheckbox) - 选择组件
  • 开关 (BrnSwitch) - 开关组件

导航组件

  • 导航栏 (BrnAppBar) - 应用导航栏
  • 标签栏 (BrnTabBar) - 底部/顶部标签栏
  • 步骤条 (BrnStep) - 步骤进度组件

反馈组件

  • 对话框 (BrnDialog) - 弹窗对话框
  • Toast (BrnToast) - 轻提示
  • 加载 (BrnLoading) - 加载指示器
  • 骨架屏 (BrnSkeleton) - 加载占位

展示组件

  • 卡片 (BrnCard) - 卡片容器
  • 列表 (BrnList) - 列表组件
  • 折叠面板 (BrnExpansionPanel) - 可折叠内容
  • 标签 (BrnTag) - 标签组件

业务组件

  • 空状态 (BrnEmpty) - 空数据展示
  • 错误页 (BrnError) - 错误状态页
  • 搜索栏 (BrnSearchBar) - 搜索组件

使用示例

主题配置

dart
void main() {
  // 初始化 Bruno 主题
  BrnInitializer.register(
    allThemeConfig: BrnDefaultConfigUtils.defaultAllConfig,
  );

  runApp(MyApp());
}

按钮组件

dart
BrnSmallMainButton(
  title: '确定',
  onTap: () {
    print('按钮点击');
  },
)

BrnBigMainButton(
  title: '提交',
  onTap: () {
    print('提交表单');
  },
)

对话框

dart
BrnDialogManager.showConfirmDialog(
  context,
  title: "确认删除",
  message: "确定要删除这条记录吗?",
  onConfirm: () {
    print('确认删除');
  },
  onCancel: () {
    print('取消');
  },
);

Toast 提示

dart
BrnToast.show("操作成功", context);

BrnToast.showError("操作失败", context);

选择器

dart
BrnPicker.show(
  context,
  pickerTitleConfig: BrnPickerTitleConfig(
    title: '选择城市',
  ),
  items: ['北京', '上海', '广州', '深圳'],
  onConfirm: (index, item) {
    print('选择了: $item');
  },
);

列表组件

dart
BrnNormalListTile(
  title: '标题文本',
  describe: '描述文本',
  onTap: () {
    print('列表项点击');
  },
)

主题定制

Bruno 支持深度主题定制:

dart
// 自定义主题配置
BrnAllThemeConfig customConfig = BrnAllThemeConfig(
  commonConfig: BrnCommonConfig(
    brandPrimary: Color(0xFF3072F6),
    colorTextBase: Color(0xFF222222),
    fontSizeBase: 16,
  ),
  buttonConfig: BrnButtonConfig(
    bigButtonHeight: 48,
    bigButtonFontSize: 16,
  ),
);

// 注册主题
BrnInitializer.register(allThemeConfig: customConfig);

依赖的开源库

Bruno 参考和依赖了多个优秀的开源库:

  • flutter_gifimage - GIF 图片支持
  • photo_view - 图片预览
  • flutter_intro - 引导页
  • flutter_badges - 徽章组件
  • lpinyin - 拼音处理
  • azlistview - 字母索引列表

适用场景

企业级应用

  • 房产类应用(源自链家业务)
  • 电商类应用
  • O2O 服务应用

中后台移动端

  • 管理后台移动端
  • 数据展示应用
  • 业务工具应用

快速原型开发

  • MVP 产品快速搭建
  • 原型验证
  • 演示应用

设计原则

Bruno 遵循以下设计原则:

  1. 一致性:保持视觉和交互的一致性
  2. 简洁性:界面简洁,信息层级清晰
  3. 可用性:注重用户体验,操作直观
  4. 扩展性:支持主题定制,适应不同业务

项目信息

总结

Bruno 是一套成熟的企业级 Flutter 组件库,其核心优势包括:

  • 企业级品质:源自链家真实业务场景验证
  • 组件丰富:覆盖移动端常用组件场景
  • 主题定制:灵活的主题系统,适应不同品牌
  • 中文友好:国内团队维护,文档完善
  • 持续更新:与 Flutter 版本同步更新

对于需要构建企业级 Flutter 应用的开发者来说,Bruno 是一个值得信赖的选择。

分享: