An enterprise-class package of Flutter components for mobile applications.

Related tags

Templates dart flutter
Overview

Bruno

一套企业级移动端 Flutter 组件库

license

简体中文 | English

特性

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

Demo 下载

适配 Flutter 版本

Bruno 版本 Flutter SDK 版本
1.0.0 1.22.4
2.0.0 2.2.2

请注意,虽然我们适配了 2.2.2 版本,但空安全的支持,正在进行中。我们会第一时间在 github 同步进展,请保持关注 🙂

接入

Flutter 工程中 pubspec.yaml 文件里加入以下依赖:

dependencies:
  bruno: version
     

示例

import 'package:bruno/bruno.dart';
...
BrnBubbleText(
  maxLines: 3,
  text: 'I am first bubble text',
)

🌈 主题定制

参考 主题定制 文档

参与贡献

贡献之前请先阅读 贡献指南

感谢所有为 Bruno 做出贡献的开发者!

🔗 链接

致谢

Bruno 作为整套标准组件,参考和引用部分开源库如下:

感谢以上开源库的作者

Comments
  • 空安全迁移认领

    空安全迁移认领

    感谢参与迁移共建,在认领前请确保你认领的类别在project todo 进度中

    在确定没有其他人在迁移后回复:

    申请迁移[组名] eg:apply migrate text

    请注意:我们建议一次迁移一类组件,因此认领建议一次认领一个类别

    我们会按照时间顺序将对应 card 关联上申请的开发者 迁移工作预计将在 1月31号左右完成,如有特殊情况中途无法完成,还请在回复中及时同步我们~

    最后,再次感谢大家参与 :heart:

    :+1: top 
    opened by zhoujuanjuan 43
  • BrnTextSelectFormItem的布局字看上去是偏上的

    BrnTextSelectFormItem的布局字看上去是偏上的

    BrnTextSelectFormItem的布局字看上去是偏上的,希望作者改一下,源码中有个布局是这样的,我不知道我的想法对不对,因为我是个初学者,其中的crossAxisAlignment: CrossAxisAlignment.start,导致的偏上,整体看上起很难受,给不了图片,唉不然很明显看出来往上面偏了。希望能改进,希望能做出国产的好用的组件库。

    Widget build(BuildContext context) {
        return Container(
          color: widget.themeData!.backgroundColor,
          padding: BrnFormUtil.itemEdgeInsets(widget.themeData!),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              widget._isAutoLayout ?? false
                  ? _buildAutoLayoutTitleWidget(context)
                  : _buildTitleWidget(context),
    
              // 副标题
              BrnFormUtil.buildSubTitleWidget(widget.subTitle, widget.themeData!),
    
              // 错误提示
              BrnFormUtil.buildErrorWidget(widget.error, widget.themeData!)
            ],
          ),
        );
      }
    
    opened by DaYang816 11
  • 引入broun文件就会报错

    引入broun文件就会报错

    问题提交

    标题格式:[BUG]: 问题简介

    内容需包含:

    1、BUG 描述

    ../../flutter/.pub-cache/hosted/pub.flutter-io.cn/bruno-2.0.0/lib/src/components/form/items/group/element_expand_widget.dart:275:31: Error: The getter 'subhead' isn't defined for the class 'TextTheme'.

    • 'TextTheme' is from 'package:flutter/src/material/text_theme.dart' ('../../flutter/packages/flutter/lib/src/material/text_theme.dart'). Try correcting the name to the name of an existing getter, or defining a getter or field named 'subhead'. ..end = theme.textTheme.subhead.color;

    2、复现步骤

    3、期望行为

    4、运行环境 flutter 2.5.3

    • 运行设备
    • 系统
    • Bruno 版本 2.0.0
    • Flutter Doctor 信息

    5、附加信息

    包括视频、图片等补充信息

    opened by xuejingpeng 10
  • BrnCheckbox首次加载,切换选中状态时右侧文字会有跳动问题

    BrnCheckbox首次加载,切换选中状态时右侧文字会有跳动问题

    问题提交

    标题格式:[BUG]: 问题简介

    内容需包含:

    1、BUG 描述

    BrnCheckbox首次加载时存在: 1、点击切换选中状态因为没有给icon宽高占位 右侧文字位置会有跳动 2、使用官方example示例注释未选中状态icon代码亦可复现

    5、附加信息 example代码示例: image

    https://user-images.githubusercontent.com/28921455/168942368-ed1d1183-cde0-440f-9490-6f0d648f249f.mp4

    版本 bruno 2.2

    opened by wxuonline 7
  • Null safe calendar

    Null safe calendar

    • 弃用startEndDateChange
    • 单选日期
        BrnCalendarView.single(
          displayMode: DisplayMode.Week,
          showControllerBar: false,
          dateChange: (date) {
            BrnToast.show('选中的时间: $date', context);
          },
        )
    
    • 范围选择日期
        BrnCalendarView.range(
          displayMode: DisplayMode.Week,
          rangeDateChange: (rangeDate) {
            BrnToast.show(
                '开始时间: ${rangeDate.start} , 结束时间:${rangeDate.end}', context);
          },
        )
    
    opened by laiiihz 6
  • 无法自定义BrnCommonCardTitle主题

    无法自定义BrnCommonCardTitle主题

    1、BUG 描述

    无法设置BrnCommonCardTitle的主题,用全局的配置和widget中的themedata均无效。设置对BrnActionCardTitle有效。

    2、复现步骤 在main.dart中设置全局: BrnInitializer.register( allThemeConfig: BrnAllThemeConfig(
    cardTitleConfig: BrnCardTitleConfig( titleTextStyle: BrnTextStyle(fontSize: 14, fontWeight: FontWeight.normal,color: const Color(0xAAFFBBFF)), ), ) ); 在widget中设置: BrnCommonCardTitle( title: 'test', themeData: BrnCardTitleConfig( titleTextStyle: BrnTextStyle(fontSize: 14, fontWeight: FontWeight.normal, color: const Color(0xFFAAFFBB)) ), ),

    3、期望行为 改变字体大小和颜色

    4、运行环境

    • Bruno 版本 bruno: ^3.0.0 *系统 android-arm64 • Android 8.1.0 (API 27)

    • Flutter Doctor 信息 [✓] Flutter (Channel stable, 3.0.4, on Deepin 20.6 5.10.101-amd64-desktop, locale zh_CN.UTF-8) • Flutter version 3.0.4 at • Upstream repository https://github.com/flutter/flutter.git • Framework revision 85684f9300 (8 周前), 2022-06-30 13:22:47 -0700 • Engine revision 6ba2af10bb • Dart version 2.17.5 • DevTools version 2.12.2

    [✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0) • Android SDK
    • Platform android-33, build-tools 33.0.0 • ANDROID_HOME = • Java binary at: • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840) • All Android licenses accepted.

    [✓] Android Studio (version 2021.2) • Android Studio at • Flutter plugin version 69.0.2 • Dart plugin version 212.5744 • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840) [✓] Connected device (2 available) • PDA (mobile) • 384ssGNOPQ7201XGBXX570L3803214 • android-arm64 • Android 8.1.0 (API 27)

    opened by flywithme2006 5
  • BrnBottomWritePicker 调用异常

    BrnBottomWritePicker 调用异常

    问题提交

    标题格式:[BUG]: Unhandled Exception: BrnBottomPickerWidgetState#01adf(tickers: tracking 1 ticker) was disposed with an active Ticker.

    内容需包含:

    1、BUG 描述

    V/AudioManager( 6577): querySoundEffectsEnabled...
    W/InputMethodManager( 6577): startInputReason = 3
    W/HwRemoteInputMethodManager( 6577): isCasting false because IHwDistributedWindowManager is invalid.
    I/InputMethodManager( 6577): showSoftInput
    I/InputMethodManager( 6577): showSoftInput
    I/AssistStructure( 6577): Flattened final assist data: 492 bytes, containing 1 windows, 3 views
    E/flutter ( 6577): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: BrnBottomPickerWidgetState#01adf(tickers: tracking 1 ticker) was disposed with an active Ticker.
    E/flutter ( 6577): BrnBottomPickerWidgetState created a Ticker via its TickerProviderStateMixin, but at the time dispose() was called on the mixin, that Ticker was still active. All Tickers must be disposed before calling super.dispose().
    E/flutter ( 6577): Tickers used by AnimationControllers should be disposed by calling dispose() on the AnimationController itself. Otherwise, the ticker will leak.
    E/flutter ( 6577): The offending ticker was:
    E/flutter ( 6577):   _WidgetTicker(created by BrnBottomPickerWidgetState#01adf)
    E/flutter ( 6577):   The stack trace when the _WidgetTicker was actually created was:
    E/flutter ( 6577):   #0      new Ticker.<anonymous closure> (package:flutter/src/scheduler/ticker.dart:67:40)
    E/flutter ( 6577):   #1      new Ticker (package:flutter/src/scheduler/ticker.dart:69:6)
    E/flutter ( 6577):   #2      new _WidgetTicker (package:flutter/src/widgets/ticker_provider.dart:385:81)
    E/flutter ( 6577):   #3      TickerProviderStateMixin.createTicker (package:flutter/src/widgets/ticker_provider.dart:295:34)
    E/flutter ( 6577):   #4      new AnimationController (package:flutter/src/animation/animation_controller.dart:246:21)
    E/flutter ( 6577):   #5      BrnBottomPickerWidgetState.initState (package:bruno/src/components/picker/brn_bottom_picker.dart:109:9)
    E/flutter ( 6577):   #6      StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4893:57)
    E/flutter ( 6577):   #7      ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729:5)
    E/flutter ( 6577):   ...     Normal element mounting (198 frames)
    E/flutter ( 6577):   #205    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790:14)
    E/flutter ( 6577):   #206    MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6422:36)
    E/flutter ( 6577):   #207    Element.updateChild (package:flutter/src/widgets/framework.dart:3540:18)
    E/flutter ( 6577):   #208    RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5845:32)
    E/flutter ( 6577):   #209    MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6445:17)
    E/flutter ( 6577):   #210    Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
    E/flutter ( 6577):   #211    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
    E/flutter ( 6577):   #212    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4928:11)
    E/flutter ( 6577):   #213    Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
    E/flutter ( 6577):   #214    StatefulElement.update (package:flutter/src/widgets/framework.dart:4960:5)
    E/flutter ( 6577):   #215    Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
    E/flutter ( 6577):   #216    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
    E/flutter ( 6577):   #217    Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
    E/flutter ( 6577):   #218    ProxyElement.update (package:flutter/src/widgets/framework.dart:5108:5)
    E/flutter ( 6577):   #219    Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
    E/flutter ( 6577):   #220    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
    E/flutter ( 6577):   #221    Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
    E/flutter ( 6577):   #222    ProxyElement.update (package:flutter/src/widgets/framework.dart:5108:5)
    E/flutter ( 6577):   #223    _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:111:11)
    E/flutter ( 6577):   #224    Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
    E/flutter ( 6577):   #225    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6291:14)
    E/flutter ( 6577):   #226    Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
    E/flutter ( 6577):   #227    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780:16)
    E/flutter ( 6577):   #228    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4928:11)
    E/flutter ( 6577):   #229    Element.rebuild (package:flutter/src/widgets/framework.dart:4477:5)
    E/flutter ( 6577):   #230    StatefulElement.update (package:flutter/src/widgets/framework.dart:4960:5)
    E/flutter ( 6577):   #231    Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
    E/flutter ( 6577):   #232    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6291:14)
    E/flutter ( 6577):   #233    Element.updateChild (package:flutter/src/widgets/framework.dart:3501:15)
    E/flutter ( 6577):   #234    Sin
    

    2、复现步骤 BrnBottomWritePicker.show( context, title: '这里是标题', hintText: '请输入', cancelDismiss: true, confirmDismiss: false, onConfirm: (context, string) { BrnToast.show(string ?? '', context); return; }, onCancel: (_) { Navigator.of(context).pop(); return; }, defaultText: "", );

    点击空白处关闭弹窗异常

    3、期望行为

    4、运行环境

    • 运行设备
    • 系统
    • Bruno 版本 ^2.2.0
    • Flutter Doctor 信息

    5、附加信息

    包括视频、图片等补充信息

    opened by MeiChao 5
  • 当BrnMultiSelectTagsPicker的layoutStyle设置为BrnMultiSelectTagsLayoutStyle.auto时,很多异常。

    当BrnMultiSelectTagsPicker的layoutStyle设置为BrnMultiSelectTagsLayoutStyle.auto时,很多异常。

    问题提交

    标题格式:当BrnMultiSelectTagsPicker的layoutStyle设置为BrnMultiSelectTagsLayoutStyle.auto时,很多异常。

    内容需包含:

    1. 选择的tag颜色异常 image

    2. 设置了只能选择一个,却可以选两个 image

    3. 上下两行tag没有间隙

    问题的描述,请尽量使用简短、准确的语言

    2、复现步骤

    3、期望行为

    4、运行环境

    • 运行设备
    • 系统
    • Bruno 版本 3.0.0
    • Flutter Doctor 信息

    5、附加信息

    包括视频、图片等补充信息

    opened by gkdgo 4
  • xml版本升级一下吧

    xml版本升级一下吧

    Because flutter_svg >=1.1.0 depends on xml ^6.0.1 and bruno 3.0.0 depends on xml ^5.1.2, flutter_svg >=1.1.0 is incompatible with bruno 3.0.0. And because no versions of bruno match >3.0.0 <4.0.0, flutter_svg >=1.1.0 is incompatible with bruno ^3.0.0. So, because vrtap depends on both bruno ^3.0.0 and flutter_svg ^1.1.1+1, version solving failed. pub get failed (1; So, because vrtap depends on both bruno ^3.0.0 and flutter_svg ^1.1.1+1, version solving failed.)

    opened by git91895 4
  • type 'Null' is not a subtype of type 'BrnIntl'

    type 'Null' is not a subtype of type 'BrnIntl'

    问题提交

    标题格式:[BUG]: 问题简介

    type 'Null' is not a subtype of type 'BrnIntl'
    

    内容需包含:

    1、BUG 描述

    本地化报错

    2、复现步骤 控制台输出

    ======== Exception caught by widgets library =======================================================
    The following _TypeError was thrown building BrnTextInputFormItem(dirty, dependencies: [_LocalizationsScope-[GlobalKey#bf07c]], state: BrnTextInputFormItemState#a4080):
    type 'Null' is not a subtype of type 'BrnIntl'
    
    The relevant error-causing widget was: 
      BrnTextInputFormItem BrnTextInputFormItem:file:///Users/Gitee/zqne/lib/widgets/pages/device/install/device_install.dart:837:30
    When the exception was thrown, this was the stack: 
    #0      BrnIntl.of (package:bruno/src/l10n/brn_intl.dart:42:26)
    #1      BrnTextInputFormItemState.build (package:bruno/src/components/form/items/general/brn_text_input_item.dart:214:55)
    

    相关代码

    /// 获取[BrnIntl]实例
      static BrnIntl of(BuildContext context) {
        return Localizations.of(context, BrnIntl);
      }
    

    3、期望行为 不报错

    4、运行环境

    • 运行设备 honor 6A
    • 系统 7.0
    • Bruno 版本 3.2.0
    • Flutter Doctor 信息

    5、附加信息

    包括视频、图片等补充信息 IMG_1371

    opened by Story5 3
  • Brntabbar 距离过长问题

    Brntabbar 距离过长问题

    brntab bar 设置4个的时候 同时设置 mode 为 BrnTabBarBadgeMode.origin 禁止滑动。就会出现距离越界

    The following assertion was thrown during layout: A RenderFlex overflowed by 4.8 pixels on the right.

    附上代码 tabs.add(BadgeTab(text: "All",topText: "1")); tabs.add(BadgeTab(text: "Order",topText: "2")); tabs.add(BadgeTab(text: "Order received".replaceAll(' ', "\u200B"),topText: "2")); tabs.add(BadgeTab(text: "Completed",topText: "2"));

    BrnTabBar(tabs:logic.tabs.value,controller:logic.tabController,hasIndex: true,mode: BrnTabBarBadgeMode.origin,isScroll: false,);

    opened by zhaoweiguo5505 3
  • 问题提交

    问题提交

    问题提交

    标题格式:[BUG]: BrnTabBar点击more展开点击里面的选项未触发onTap回调

    内容需包含:

    1、BUG 描述 BrnTabBar点击more展开,点击more中的选项未触发onTap回调,导致在处理不了tabBar切换后的事件。

    2、复现步骤

    3、期望行为 点击more展开的选项能触发onTap事件

    4、运行环境

    • 运行设备 iOS设备
    • 系统
    • Bruno 版本 3.2.0
    • Flutter Doctor 信息

    5、附加信息

    包括视频、图片等补充信息

    opened by devbravesy 0
  • [Feature]: 大部分弹窗控件的背景色应该可以配置,而不是写死为白色

    [Feature]: 大部分弹窗控件的背景色应该可以配置,而不是写死为白色

    功能需求

    如题 在提功能需求之前,建议先查询组件文档,考虑你需要的功能是否可以通过组件其他属性完成。如无法解决 ,issue 参考:

    标题格式:[Feature]: 需求描述 发现一些控件的背景色无法被控制,建议检查一下所有的弹窗widget的背景色是不是写死为Colors.white,目前看到的有BrnCommonActionSheetBrnSelectionMenuWidget,这样就没办法适配深色主题,希望可以做成可配置或者跟随系统背景色

    return GestureDetector(
          child: Container(
              decoration: ShapeDecoration(
               // 应该在themeData添加可配置的背景色,或者使用commonConfig或者dialogConfig的背景色
                color: Colors.white,
                shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.only(
                    topLeft: Radius.circular(themeData!.topRadius),
                    topRight: Radius.circular(themeData!.topRadius),
                  ),
                ),
              ),
              child:
                  SafeArea(child: _configActionWidgets(context, _maxSheetHeight))),
          onVerticalDragUpdate: (v) => {},
        );
    

    内容需包含:

    1、运行环境

    • 运行设备
    • 系统
    • Bruno 版本
    • Flutter Doctor 信息

    2、是否有与之关联的 issue

    3、描述你期望的解决方案

    4、附加信息

    包括视频、图片等补充信息

    opened by lvyandev 1
Releases(3.2.0)
  • 3.2.0(Dec 29, 2022)

    Changed

    base

    • support for localization capabilities.
    • add pad theme configuration.
    • expend title click area in pickers #369.

    components

    • BrnMultiSelectListPicker : add generics for more flexible data transfer #336 .
    • BrnLinePainter : add the limit of yDialMax > yDialMin to fix the NaN error when calculating the path 359.
    • BrnTabBar : fix the overflow error when setting BrnTabBarBadgeMode.origin mode #340.
    • BrnAppraise: fix gif file error #372.
    • BrnTextInputFormItem: fix attribute textInputAction does not take effect and add attribute obscureText, thank to echo-LuGuang.
    • BrnAppBar: expand BrnTextAction click area.
    • BrnEnhanceNumberCard: fix the number card is not centered #380.
    Source code(tar.gz)
    Source code(zip)
    bruno_3.2.0_release.apk(9.56 MB)
  • 3.1.0(Oct 1, 2022)

    Changed

    base

    • Adapt flutter sdk 3.3.0 and update dart sdk version to >=2.17.0.
    • add BrnSafeDialog[dismiss] instead of Navigator.pop to close the Dialog #317.
    • optimize the upper font of form items #330.

    components

    • BrnPageLoading : calculated the range of loading based on screen width #295 .
    • BrnBottomTabBar : fix attributes selectedTextStyle and unSelectedTextStyle do not take effectc #285 , thanks to JunCaiLi .
    • BrnSearchText : fix an abnormal display when BrnSearchText sets the innerColor property #275, thanks to xyhuangjia.
    • BrnBrokenLine: xDial support selected style #282.
    • BrnMultiSelectTagsPicker: fix when setting properties layoutStyle value of BrnMultiSelectTagsLayoutStyle. Auto display abnormal #316, thanks to JunCaiLi.
    • BrnCommonCardTitle: fix the theme customization does not take effect, thanks to JunCaiLi.
    • BrnMiddleInputDialog: add attribute keyboardType, thanks to moqi2011.
    • BrnCheckbox: fix unsynchronized internal and external check states #333, thanks to moqi2011.
    • BrnTextInputFormItem: add attribute focusNode, thanks to Ives7.
    • BrnProgressChart: fix invalid setting color, background color, and animation #322.
    • BrnToast: fix default value error in attribute gravity #341.
    • BrnTextInputFormItem: add attribute textInputAction , thanks to Ives7.
    • BrnIconButton: fix setting attribute fontsize does not take effect #345 and tag deprecated it use style is recommended.
    • .BrnSingleSelectCityPage: add attribute emptyImage #329 and optimize default images of BrnAbnormalStateWidget.
    Source code(tar.gz)
    Source code(zip)
    bruno_3.1.0_release.apk(23.64 MB)
  • 3.0.0(Jul 8, 2022)

    Changed

    base

    • Adapt flutter sdk 3.0.3.
    • Add the attribute backgroundColor to the form item and fix issue #260 , thanks to Kingtous find it.
    • pubspec.yaml : upgrade photo_view version to v0.14.0 and remove provider.

    components

    • BrnBottomPicker : fix the title setting in the show method does not take effect #212 , thanks to laiiihz .
    • BrnStepInputFormItem : fix cursor confusion #235 , thanks to jixiaoyong .
    • BrnSmallOutlineButton : fix attribute lineColor does not take effect,thanks to Story5 .
    • BrnAddLabel : support theme config.
    • BrnBigMainButton : fix the theme configuration borderRadius and fontSize does not take effect #214 .
    • BrnCalendarView : optimizes the time range selection supports selecting the same day #200 .
    • BrnProgressBarChart:remove useless attribute hasMark in class ChartAxis.
    • BrnSmallOutlineButton : fix attribute fontWeight does not take effect #233 .
    • BrnDialog : fix themeData does not take effec #259 .
    Source code(tar.gz)
    Source code(zip)
    bruno_3.0.0_release.apk(22.99 MB)
  • 2.2.0(Apr 29, 2022)

    Changed

    base

    • Adapt flutter sdk 2.10.5.
    • Fix flutter analyze issues.
    • Fixed some component theme configurations customization not taking effect #177 .

    components

    New components BrnSwitchFormItem BrnGeneralFormItem BrnMetaSwitch.

    • BrnTitleFormItem: fix isRequire parameter invalid #179.
    • BrnTextBlockInputFormItem : change the minLines and maxLines attributes to be nullable #181 thanks to xiao luobei.
    • BrnSelectionView : fix "unlimited" option not taking effect .
    • BrnBottomTabBar: remove the restriction on type by item.length in the construction method.
    • BrnPairInfoTable adds a callback attribute onFolded for expanding and collapsing state changes.
    • BrnCheckbox: add attribute crossAxisAlignment.
    • BrnRadioButton: add attribute crossAxisAlignment.
    • BrnMiddleInputDialog: add attribute themeData support theme.
    • BrnTextButtonPanel: optimize button display, fix the space cannot be filled in some cases.
    • BrnCommonCardTitle: add attribute titleMaxLines and titleOverflow.
    • BrnMultiSelectDialog: uses the default contentStyle of BrnDialogConfig.
    • BrnScrollableTextDialog: optimize ScrollBar placement and styling.
    • BrnSingleSelectDialog: Add click callback for closeIcon.
    • BrnSelectionView: optimizes the data display of the [More] filter page, and supports the display of up to 2 rows.
    • BrnTextInputFormItem BrnTextBlockInputFormItem BrnTitleSelectInputFormItem : add attribute autofocus and default value is false.
    • BrnAppBar theme customization BrnAppBarConfig supports the attribute showDefaultBottom to control the bottom dividing line of the AppBar
    • BrnMultiDataPicker: add default delegate implementationBrnDefaultMultiDataPickerDelegate.
    • BrnStepInputFormItem: add attribute canManualInput and controller to support manual input function.
    • BrnSearchText: add attribute inputFormatterstextInputType.
    • BrnAnchorTab: support content dynamic change.
    • BrnProgressBarChart: when barChartStyle is BarChartStyle.horizontal support item click callback.
    Source code(tar.gz)
    Source code(zip)
    bruno_2.2.0_release.apk(22.99 MB)
  • 2.1.1(Apr 2, 2022)

    Changed

    components

    • BrnSingleSelectDialog : add attribute messageText and messageWidget.

    Fixed

    • Fix themeData.titlePaddingLg configuration does not work for 'BrnTextSelectFormItem' #108
    • Fix the bottom text of BrnBottomTabBar cannot be displayed in some cases #141.
    Source code(tar.gz)
    Source code(zip)
  • 2.1.0-nullsafty.1(Mar 11, 2022)

    Changed

    base

    • Breaking change: Sound null safety support, thanks to @leftcoding #39#33 @donywan #20 @laiiihz #80#64#59#32#14 @kalifun #36 @jojinshallar #81#75#65#62#56#42 @junlandroid #73 @Kenneth #53 @HappyImp #55 @kkkman22 #23 @AlexV525 #30
    • Breaking change: Refer to the dart language specification to optimized constant and enum naming.
    • Replace DIN Font with Bebas Font .

    components

    • Breaking change: remove BrnHorizontalStepsManager and put function forwardStep() backStep() into BrnStepsController thanks to leftcoding.
    • Breaking change: remove BrnDialogStyle and replace with BrnDialogConfig.
    • BrnCalendarView: add BrnCalendarView.single() and BrnCalendarView.range() constructor and had its argument startEndDateChange removed.
    • BrnSelectionEntityListBean: fromMap is renamed to fromJson.
    • BrnRadioButton: optimize click area #31 , thanks to a1017480401 .
    • BrnScrollableTextDialog: remove Navigator.pop(context) in onSubmit() and hand it over to external processing (user).
    • BrnBubbleText: add attribute bgColor and textStyle.
    • BrnPairInfoTable: add attribute defaultVerticalAlignment.

    Fixed

    • Fix example error #71 thanks to leftcoding fixing this issue.
    • Fix BrnPickerTitleConfig titleContent setting is invalid #70.
    • Optimize BrnPopupWindow onItemClick logic #57 .
    • Fix BrnDialog is obscured by keyboard #7 .
    Source code(tar.gz)
    Source code(zip)
Owner
Ke Technologies
Ke Technologies
Basf flutter components - A BASF Flutter components library for iOS and Android

basf_flutter_components A BASF Flutter components library for iOS and Android In

BASF Mobile Solutions 7 Dec 15, 2022
A new Flutter project. Use of Padding Class(Widget) and Card Class (Widget)

Use_Of_Card_And_Padding_Class A new Flutter project. Use of Padding Class(Widget) and Card Class (Widget) Getting Started This project is a starting p

Avinandan Bose 1 Mar 18, 2022
A set of utilities, themes and components for RTU MIREA applications by Mirea Ninja.

rtu-app-core - это красиво оформленный пакет компонентов графического интерфейса и многоцелевой набор утилит, разработанный для Flutter. rtu-app-core

Mirea Ninja 3 Aug 10, 2022
An application of learning outcomes from the Mastering Flutter 2.0 class: Building Travel and Aircraft Applications Buildwithangga

Airplane An application of learning outcomes from the Mastering Flutter 2.0 class: Building Travel and Aircraft Applications Buildwithangga ?? ScreenS

Qwerty 2 Aug 29, 2022
Created a mobile application for my Project Oriented class.

Projet Scarla C'est pour notre cours : Projet d'intégration avec Raouf Babari au semestre d'hiver 2021. Projet Scarla Le nom de notre projet d’intégra

null 1 Jan 4, 2022
package library for extended_image, extended_text and extended_text_field,provide common base class.

extended_image_library package library for extended_image extended_image A powerful official extension library of image, which support placeholder(loa

FlutterCandies 124 Dec 31, 2022
Components that optimize Flutter fluency.(Flutter 流畅度优化的通用方案,轻松解决卡顿问题)

Flutter fluency optimization component "Keframe" Page switching fluency improved: How to use Project depend on: Quick learning Constructor Description

Ke Technologies 793 Dec 30, 2022
We created Flappy Bird, a straightforward game based on flutter animation, from scratch using only Dart & Flutter and no third-party games or animation components.

Flappy-Bird Description A ridiculous game created by Flutter, all you have to do is touch the screen to make the bird leap as long as you avoid the ba

hab 15 Dec 25, 2022
A collection of pixel-perfect iOS-styled components and properties for Flutter, following the official guidelines.

cupertinew ⚠️ Experimental and work in progress ⚠️ A collection of pixel-perfect iOS-styled components and properties for Flutter, following the offic

Jeroen Meijer (Jay) 30 Nov 10, 2022
A collection of templates to make new Flutter components using the Mason build tool.

Mason Flutter Templates A collection of templates to make new Flutter components using the Mason build tool. Setup in Project To use these templates i

Marcus Twichel 5 Jun 21, 2022
Scaff is a simple command-line utility for generating Dart and Flutter components from template files.

Introduction Scaffold Generator for Dart and Flutter. scaff is a simple command-line utility for generating Dart and Flutter components from template

Ganesh Rathinavel Medayil 29 Jul 17, 2022
Netflix type clone app to learn animation and basic UI components..

netflix_clone A new Flutter application to learn animation and basic ui components.. Assets credit to dribbble artist Getting Started This project is

Divyam joshi 169 Dec 9, 2022
An incremental DOM library, with support for virtual DOM and components, written in Dart.

domino - a DOM library in Dart Inspired by Google's incremental-dom library, package:domino is a Dart-native DOM library supporting incremental DOM up

null 17 Dec 26, 2022
AtmConsultoria - Learning how components work for navigation between screens

Aplicativo ATM Consultoria Aprendendo o funcionamento dos seguintes recursos: Na

John Keven 4 May 27, 2022
Greentick assignment - State management tool provider and UI components like ListView etc

greentick_assignment This project is a part of assignment, which demonstrate the

Vinod Patil 0 Feb 11, 2022
SoundVolumeView that displays general information and the current volume level for all active sound components in your system, and allows you to instantly mute and unmute them

SoundVolumeView that displays general information and the current volume level for all active sound components in your system, and allows you to instantly mute and unmute them

Domingo 4 Mar 4, 2022
Magpie-fly is a component library produced by 58 Group, which encapsulates a variety of common components to meet the needs of developers

[toc] magpie_fly Magpie-fly 是58集体出品组件库,封装了多种常用组件,以满足开发者需求。(Magpie-fly is a component library produced by 58 Group, which encapsulates a variety of com

Wuba 40 Mar 18, 2022
NeoPOP is CRED's inbuilt library for using NeoPOP components in your app

NeoPOP NeoPOP is CRED's inbuilt library for using NeoPOP components in your app. What really is NeoPOP? NeoPOP was created with one simple goal; to cr

CRED 358 Dec 29, 2022