diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index 616607cf..10d51e98 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -17,7 +17,7 @@ jobs: - uses: actions/checkout@v3 - uses: subosito/flutter-action@v2 with: - flutter-version: '3.3.0' + flutter-version: '3.10.0' - run: dart --version - run: flutter --version - run: flutter pub get @@ -37,7 +37,7 @@ jobs: java-version: '8.x' - uses: subosito/flutter-action@v1 with: - flutter-version: '3.3.0' + flutter-version: '3.10.0' - run: dart --version - run: flutter --version - run: flutter pub get diff --git a/CHANGELOG.md b/CHANGELOG.md index a244b858..73ae34d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,23 @@ +## [3.4.0] - 2023-7-24 + +### Changed + +#### base + +- Adapt flutter sdk 3.10.0. + +#### components + +- **Breaking change**: Since flutter sdk 3.10.0 deletes the brightness and textTheme attributes of Appbar, BrnAppBar BrnSearchAppbar is deleted synchronously. Instead, use themeData. BrnAppBarConfig will support all your needs. For details, see Demo usage. +- BrnSimpleSelection : support theme configuration [#420 ](https://github.com/LianjiaTech/bruno/pull/420) , thanks to **JunCaiLi** . +- Add missing themeData for BrnNormalFormGroup and BrnPortraitRadioGroup [#455](https://github.com/LianjiaTech/bruno/pull/445), thanks to **Kingtous**. +- BrnTabBar : add onTap method for _TabBarOverlayWidget [#393](https://github.com/LianjiaTech/bruno/pull/393). +- BrnExpandFormGroup and BrnNormalFormGroup remove invalid attribute tipLabel. +- BrnIconButton : fix the abnormal position of icons and text. + + + + ## [3.3.0] - 2023-2-1 ### Changed diff --git a/README.en-US.md b/README.en-US.md index 214e5f9b..79e1ba95 100644 --- a/README.en-US.md +++ b/README.en-US.md @@ -55,6 +55,8 @@ Please download from [Releases](https://github.com/LianjiaTech/bruno/releases) o | 3.0.0 | 3.0.3 | | 3.1.0 | 3.3.0 | | 3.2.0 | 3.3.0 | +| 3.3.0 | 3.7.0 | +| 3.4.0 | 3.10.0 | ## Preparing for use diff --git a/README.md b/README.md index 4d97fb35..9e63c39d 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,9 @@ | 3.0.0 | 3.0.3 | | 3.1.0 | 3.3.0 | | 3.2.0 | 3.3.0 | +| 3.3.0 | 3.7.0 | +| 3.4.0 | 3.10.0 | + diff --git a/doc/bruno.md b/doc/bruno.md index 84cc788e..9c0f4c6f 100644 --- a/doc/bruno.md +++ b/doc/bruno.md @@ -12,13 +12,19 @@ Bruno 是基于一整套设计体系的 Flutter 组件库。 - 提炼自企业级移动端产品的交互和视觉风格 - 开箱即用的高质量 Flutter 组件 - 提供满足业务差异的主题定制能力 +- 设计工具赋能开发全链路 ### 适配 Flutter SDK 版本 -| Bruno 版本 | Flutter SDK 版本 | -| ---------- | ---------------- | -| 1.0.0 | 1.22.4 | -| 2.0.0 | 2.2.2 | +| Bruno 版本 | Flutter SDK 版本 | +| ---------- | ---------------- | +| 1.0.0 | 1.22.4 | +| 2.0.0 | 2.2.2 | +| 2.1.1 (支持空安全) | 2.2.2 | +| 2.2.0 | 2.10.5 | +| 3.0.0 | 3.0.3 | +| 3.1.0 | 3.3.0 | +| 3.2.0 | 3.3.0 | ### 接入 diff --git a/doc/components/appbar/BrnAppBar/BrnAppBar.md b/doc/components/appbar/BrnAppBar/BrnAppBar.md index 9c3f500a..87145236 100644 --- a/doc/components/appbar/BrnAppBar/BrnAppBar.md +++ b/doc/components/appbar/BrnAppBar/BrnAppBar.md @@ -30,36 +30,35 @@ group: ``` dart BrnAppBar( - {Key? key, - this.leading, - this.showLeadingDivider = false, - this.title, - this.actions, - this.backgroundColor, - this.bottom, - this.elevation = 0, - this.automaticallyImplyLeading = true, - this.brightness, - this.toolbarOpacity = 1.0, - this.bottomOpacity = 1.0, - this.titleAlignment = Alignment.center, - this.flexibleSpace, - this.backLeadCallback, - this.showDefaultBottom = true, - this.themeData, - this.leadingWidth, - this.shadowColor, - this.shape, - this.iconTheme, - this.actionsIconTheme, - this.excludeHeaderSemantics = false, - this.primary = true, - this.textTheme, - this.titleSpacing}) - : assert( - actions == null || actions is Widget || (actions is List)), - assert(title == null || title is String || title is Widget), - super(key: key, child: Container(), preferredSize: Size(0, 0)); + {Key? key, + this.leading, + this.showLeadingDivider = false, + this.title, + this.actions, + this.backgroundColor, + this.bottom, + this.elevation = 0, + this.automaticallyImplyLeading = true, + this.toolbarOpacity = 1.0, + this.bottomOpacity = 1.0, + this.titleAlignment = Alignment.center, + this.flexibleSpace, + this.backLeadCallback, + this.showDefaultBottom, + this.themeData, + this.leadingWidth, + this.shadowColor, + this.shape, + this.iconTheme, + this.actionsIconTheme, + this.excludeHeaderSemantics = false, + this.primary = true, + this.systemOverlayStyle, + this.titleSpacing}) + : assert( + actions == null || actions is Widget || (actions is List)), + assert(title == null || title is String || title is Widget), + super(key: key, child: Container(), preferredSize: Size(0, 0)); ``` @@ -73,7 +72,6 @@ BrnAppBar( | bottom | PreferredSizeWidget? | AppBar底部紧挨着的Widget | 否 | 无 | | bottomOpacity | double | AppBar 底部Widget透明度,即 bottom 字段的透明度 | 否 | 1.0 | | elevation | double | AppBar 阴影高度 | 否 | 0 | -| brightness | Brightness? | AppBar 主题,包括 dark、light 两种类型 | 否 | Brightness.dark | | toolbarOpacity | double | Appbar 透明度 | 否 | 1.0 | | titleAlignment | Alignment | title 对齐方式 | 否 | Alignment.center | | backLeadCallback | VoidCallback? | 自定义的返回事件 | 否 | 无 | @@ -84,7 +82,7 @@ BrnAppBar( | shape | ShapeBorder? | 边框形状,只有当elevation大于0的时候展示 | 否 | | | iconTheme | IconThemeData? | icon样式定制 | 否 | | | actionsIconTheme | IconThemeData? | icon主题定制 | 否 | | -| textTheme | TextTheme? | text主题定制 | 否 | | +| systemOverlayStyle | SystemUiOverlayStyle? | 同 Appbar systemOverlayStyle | 否 | | | primary | bool | 此应用栏是否显示在屏幕顶部 | 否 | | | excludeHeaderSemantics | bool | 是否用Semantics包裹 | 否 | | | themeData | BrnAppBarConfig? | BrnAppBar对应的主题定制类 | 否 | | @@ -101,7 +99,7 @@ BrnAppBar( ``` dart BrnAppBar( - brightness: Brightness.dark, + themeData: BrnAppBarConfig.dark(), title: Row( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.center, @@ -142,7 +140,7 @@ BrnAppBar( width: 20, height: 20, ), - brightness: Brightness.dark, + themeData: BrnAppBarConfig.dark(), //文本title title: '标题名称', ); @@ -164,7 +162,7 @@ BrnAppBar( actions: BrnTextAction( '文本按钮', //设置为深色背景,则显示白色 - brightness: Brightness.dark, + themeData: BrnAppBarConfig.dark(), ), ) ``` @@ -181,6 +179,7 @@ var actionKey = GlobalKey(); BrnAppBar( title: '标题名称', + themeData: BrnAppBarConfig.dark(), leading: BrnDoubleLeading( first: BrnBackLeading(), second: BrnBackLeading( @@ -212,7 +211,7 @@ BrnAppBar( ``` dart BrnAppBar( - brightness: Brightness.dark, + themeData: BrnAppBarConfig.dark(), automaticallyImplyLeading: false, //自定义显示的title 为切换的row title: Row( @@ -265,7 +264,7 @@ return GestureDetector( ``` dart BrnAppBar( - brightness: Brightness.dark, + themeData: BrnAppBarConfig.dark(), //自定义leading leading: BrnBackLeading( child: Image.asset( @@ -328,7 +327,7 @@ BrnAppBar( ``` dart BrnAppBar( - brightness: Brightness.dark, + themeData: BrnAppBarConfig.dark(), automaticallyImplyLeading: true, //多icon actions: [ @@ -378,13 +377,13 @@ BrnAppBar( BrnAppBar( //默认显示返回按钮 automaticallyImplyLeading: true, - brightness: Brightness.light, + themeData: BrnAppBarConfig.light(), title: '名称名称', //自定义的右侧文本 actions: BrnTextAction( '文本按钮', //设置为深色背景,则显示白色 - brightness: Brightness.light, + themeData: BrnAppBarConfig.light(), ), ) ``` diff --git a/doc/components/appbar/BrnSearchAppbar/BrnSearchAppbar.md b/doc/components/appbar/BrnSearchAppbar/BrnSearchAppbar.md index 96fa61e2..75247d6b 100644 --- a/doc/components/appbar/BrnSearchAppbar/BrnSearchAppbar.md +++ b/doc/components/appbar/BrnSearchAppbar/BrnSearchAppbar.md @@ -25,23 +25,24 @@ group: ```dart -const BrnSearchAppbar( - {this.controller, - this.focusNode, - this.leading, - this.leadClickCallback, - this.dismissClickCallback, - this.searchBarInputChangeCallback, - this.searchBarInputSubmitCallback, - this.hint, - this.hintStyle, - this.dismissStyle, - this.showDivider = true, - this.autoFocus = true, - this.brightness = Brightness.dark, - this.onClearTap, - this.inputTextStyle}) - : super(child: const Center(), preferredSize: const Size(0, 0)); +BrnSearchAppbar( + {this.controller, + this.focusNode, + this.leading, + this.leadClickCallback, + this.dismissClickCallback, + this.searchBarInputChangeCallback, + this.searchBarInputSubmitCallback, + this.hint, + this.hintStyle, + this.dismissStyle, + this.showDivider = true, + this.autoFocus = true, + this.onClearTap, + this.systemOverlayStyle, + this.inputTextStyle, + this.themeData}) + : super(child: const Center(), preferredSize: const Size(0, 0)); ``` @@ -60,7 +61,7 @@ const BrnSearchAppbar( | dismissStyle | TextStyle? | 右侧Action的文本Style | 否 | 无 | | showDivider | bool | 是否展示底部分割线 | 否 | bool | | autoFocus | bool | 是否自动聚焦 | 否 | bool | -| brightness | Brightness | 主题配置 | 否 | Brightness.dark | +| systemOverlayStyle | SystemUiOverlayStyle | 同 Appbar systemOverlayStyle | 否 | 无 | | onClearTap | VoidCallback? | 点击清除按钮回调 | 否 | | ## 四、效果及代码展示 diff --git a/doc/components/form/BrnExpandFormGroup/BrnExpandFormGroup.md b/doc/components/form/BrnExpandFormGroup/BrnExpandFormGroup.md index 642b803c..27544202 100644 --- a/doc/components/form/BrnExpandFormGroup/BrnExpandFormGroup.md +++ b/doc/components/form/BrnExpandFormGroup/BrnExpandFormGroup.md @@ -40,7 +40,6 @@ BrnExpandFormGroup({ this.label, this.title = "", this.subTitle, - this.tipLabel, this.error = "", this.isEdit = true, this.isRequire = false, @@ -61,7 +60,6 @@ BrnExpandFormGroup({ | type | Stirng | 录入项类型,主要用于录入类型页面框架中 | 否 | BrnInputItemType.normalGroupType | 外部可根据此字段判断表单项类型 | | title | String | 录入项标题 | 否 | '' | | | subTitle | String? | 录入项子标题 | 否 | 无 | | -| tipLabel | String? | 录入项提示(问号图标&文案) 用户点击时触发onTip回调。 | 否 | 备注中类型3 | 1. 设置"空字符串"时展示问号图标 2. 设置"非空字符串"时展示问号图标&文案 3. 若不赋值或赋值为null时,不显示提示项 | | error | String | 录入项错误提示 | 否 | '' | | | isRequire | bool | 录入项是否为必填项(展示`*`图标) 默认为 false 不必填 | 否 | false | | | isEdit | bool | 录入项 是否可编辑 | 否 | true | true:可编辑,false:禁用 | diff --git a/doc/components/form/BrnNormalFormGroup/BrnNormalFormGroup.md b/doc/components/form/BrnNormalFormGroup/BrnNormalFormGroup.md index e4f0eb5e..aac2cbb9 100644 --- a/doc/components/form/BrnNormalFormGroup/BrnNormalFormGroup.md +++ b/doc/components/form/BrnNormalFormGroup/BrnNormalFormGroup.md @@ -38,13 +38,13 @@ BrnNormalFormGroup({ this.label, this.title = "", this.subTitle, - this.tipLabel, this.error = "", this.isEdit = true, this.isRequire = false, this.onRemoveTap, this.onTip, this.deleteLabel, + this.themeData, required this.children, }) : super(key: key) { this.themeData ??= BrnFormItemConfig(); diff --git a/doc/components/selection/BrnSimpleSelection/BrnSimpleSelection.md b/doc/components/selection/BrnSimpleSelection/BrnSimpleSelection.md index d21b0ce6..58aff5db 100644 --- a/doc/components/selection/BrnSimpleSelection/BrnSimpleSelection.md +++ b/doc/components/selection/BrnSimpleSelection/BrnSimpleSelection.md @@ -38,6 +38,7 @@ BrnSimpleSelection.radio({ required this.items, required this.onSimpleSelectionChanged, this.onMenuItemClick, + this.themeData, }) : this.isRadio = true, this.maxSelectedCount = BrnSelectionConstant.maxSelectCount, super(key: key); @@ -55,6 +56,7 @@ BrnSimpleSelection.checkbox({ required this.items, required this.onSimpleSelectionChanged, this.onMenuItemClick, + this.themeData, }) : this.isRadio = false, super(key: key); ``` @@ -73,6 +75,7 @@ BrnSimpleSelection.checkbox({ | onSimpleSelectionChanged | BrnSimpleSelectionOnSelectionChanged | 选择回调 | 是 | | | onMenuItemClick | VoidCallback? | 菜单点击事件 | 否 | | | isRadio | bool | 是否单选 默认 radio模式 is true , checkbox模式 is false | 否 | radio模式默认true checkbox模式默认false | +| themeData | BrnSelectionConfig |筛选项配置类|否|| ## 四、代码演示 diff --git a/doc/theme.md b/doc/theme.md index a569b59c..9eace13a 100644 --- a/doc/theme.md +++ b/doc/theme.md @@ -71,7 +71,7 @@ class XxxConfigUtils { static BrnCommonConfig defaultCommonConfig = BrnCommonConfig( brandPrimary: const Color(0xFF3072F6), - ); + ); /// Dialog配置 static BrnDialogConfig defaultDialogConfig = BrnDialogConfig( diff --git a/example/android/build.gradle b/example/android/build.gradle index 4256f917..0a2d6a10 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -26,6 +26,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/example/lib/sample/components/form/group_example/expansion_group_example.dart b/example/lib/sample/components/form/group_example/expansion_group_example.dart index 9d2f2d98..2c91af66 100644 --- a/example/lib/sample/components/form/group_example/expansion_group_example.dart +++ b/example/lib/sample/components/form/group_example/expansion_group_example.dart @@ -104,7 +104,6 @@ class ExpansionGroupExample extends StatelessWidget { title: "展开收起分组", subTitle: "这里是副标题", deleteLabel: "删除", - tipLabel: "标签", error: "必填项不能为空", isRequire: true, isEdit: true, diff --git a/example/lib/sample/components/form/group_example/normal_group_example.dart b/example/lib/sample/components/form/group_example/normal_group_example.dart index 5b4b133a..2b1df98f 100644 --- a/example/lib/sample/components/form/group_example/normal_group_example.dart +++ b/example/lib/sample/components/form/group_example/normal_group_example.dart @@ -66,7 +66,6 @@ class NormalGroupExample extends StatelessWidget { title: "普通分组", subTitle: "这里是副标题", deleteLabel: "删除", - tipLabel: "标签", error: "必填项不能为空", isRequire: true, isEdit: true, diff --git a/example/lib/sample/components/guide/force_guide_example.dart b/example/lib/sample/components/guide/force_guide_example.dart index f8996bac..3a0ccc9d 100644 --- a/example/lib/sample/components/guide/force_guide_example.dart +++ b/example/lib/sample/components/guide/force_guide_example.dart @@ -58,7 +58,6 @@ class _ForceGuideExampleState extends State { return WillPopScope( child: Scaffold( appBar: BrnAppBar( - brightness: Brightness.light, title: Text( '强引导组件example', key: intro.keys[0], diff --git a/example/lib/sample/components/guide/soft_intro_example.dart b/example/lib/sample/components/guide/soft_intro_example.dart index bce101cd..fcae1e30 100644 --- a/example/lib/sample/components/guide/soft_intro_example.dart +++ b/example/lib/sample/components/guide/soft_intro_example.dart @@ -58,7 +58,6 @@ class _SoftGuideExampleState extends State { return WillPopScope( child: Scaffold( appBar: BrnAppBar( - brightness: Brightness.light, title: Text( '弱引导组件example', key: intro.keys[0], diff --git a/example/lib/sample/components/navbar/nav_bar_example_page.dart b/example/lib/sample/components/navbar/nav_bar_example_page.dart index 1f7e0cdd..2525a233 100644 --- a/example/lib/sample/components/navbar/nav_bar_example_page.dart +++ b/example/lib/sample/components/navbar/nav_bar_example_page.dart @@ -181,7 +181,7 @@ class _NavBarPageState extends State with TickerProviderStateMixin { width: 20, ), ), - brightness: Brightness.dark, + themeData: BrnAppBarConfig.dark(), title: Row( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, @@ -261,7 +261,7 @@ class _NavBarPageState extends State with TickerProviderStateMixin { //文字标题 下拉框 BrnAppBar _getBlackBar6() { return BrnAppBar( - brightness: Brightness.dark, + themeData: BrnAppBarConfig.dark(), title: Row( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.center, @@ -287,7 +287,7 @@ class _NavBarPageState extends State with TickerProviderStateMixin { //文字标题 左1个icon 右文本 bai BrnAppBar _getBlackBar9() { return BrnAppBar( - brightness: Brightness.light, + themeData: BrnAppBarConfig.light(), leading: Image.asset( 'assets/image/icon_navbar_sousuo_hei.png', scale: 3.0, @@ -301,7 +301,7 @@ class _NavBarPageState extends State with TickerProviderStateMixin { //文字标题 带标签 BrnAppBar _getBlackBar10() { return BrnAppBar( - brightness: Brightness.light, + themeData: BrnAppBarConfig.light(), leading: Image.asset( 'assets/image/icon_navbar_sousuo_hei.png', scale: 3.0, @@ -346,7 +346,7 @@ class _NavBarPageState extends State with TickerProviderStateMixin { //文字标题 左2个icon 右文本 BrnAppBar _getBlackBar11() { return BrnAppBar( - brightness: Brightness.light, + themeData: BrnAppBarConfig.light(), title: '标题名称', leading: BrnDoubleLeading( first: BrnBackLeading(), @@ -368,7 +368,7 @@ class _NavBarPageState extends State with TickerProviderStateMixin { //多icon的bar hei BrnAppBar _getBlackBar12() { return BrnAppBar( - brightness: Brightness.dark, + themeData: BrnAppBarConfig.dark(), automaticallyImplyLeading: true, title: "天通苑天通苑天通苑天通苑天通苑天通苑天通苑天通苑天通苑", actions: [ @@ -406,7 +406,7 @@ class _NavBarPageState extends State with TickerProviderStateMixin { //多icon的bar bai BrnAppBar _getBlackBar13() { return BrnAppBar( - brightness: Brightness.light, + themeData: BrnAppBarConfig.light(), automaticallyImplyLeading: true, title: "", actions: [ @@ -482,7 +482,7 @@ class _NavBarPageState extends State with TickerProviderStateMixin { PreferredSize _getWhiteSearchBar() { return BrnSearchAppbar( - brightness: Brightness.light, + themeData: BrnAppBarConfig.light(), showDivider: true, //自定义的leading显示 leading: Padding( @@ -653,7 +653,7 @@ class _NavBarPageState extends State with TickerProviderStateMixin { ], ); return BrnAppBar( - brightness: Brightness.dark, + themeData: BrnAppBarConfig.dark(), automaticallyImplyLeading: false, //自定义leading leading: BrnBackLeading( diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 1429a847..2dc9f193 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -14,7 +14,7 @@ description: A new Flutter project. version: 1.0.0+1 environment: - sdk: '>=2.12.0 <3.0.0' + sdk: '>=2.17.0 <4.0.0' dependencies: flutter: @@ -28,7 +28,7 @@ dependencies: flutter_easyrefresh: ^2.2.1 lpinyin: ^2.0.3 badges: ^2.0.2 - intl: ^0.17.0 + intl: ^0.18.0 dev_dependencies: flutter_test: diff --git a/lib/src/components/button/brn_icon_button.dart b/lib/src/components/button/brn_icon_button.dart index 70b371da..074dafe8 100644 --- a/lib/src/components/button/brn_icon_button.dart +++ b/lib/src/components/button/brn_icon_button.dart @@ -95,7 +95,12 @@ class _BrnIconButtonState extends State { children: [ // 图片 Container( - height: widget.iconHeight, width: widget.iconWidth, child: widget.iconWidget), + height: widget.iconHeight, + width: widget.iconWidth, + child: FittedBox( + fit: BoxFit.contain, + child: widget.iconWidget), + ), Padding( padding: EdgeInsets.only(top: widget.padding), child: Text( diff --git a/lib/src/components/card/bubble_card/brn_bubble_text.dart b/lib/src/components/card/bubble_card/brn_bubble_text.dart index 85e10402..549e4334 100644 --- a/lib/src/components/card/bubble_card/brn_bubble_text.dart +++ b/lib/src/components/card/bubble_card/brn_bubble_text.dart @@ -83,11 +83,11 @@ class BrnBubbleText extends StatelessWidget { color: bgColor, shape: BoxShape.rectangle, borderRadius: BorderRadius.only( - topLeft: Radius.circular(0), + topLeft: const Radius.circular(0), topRight: Radius.circular(radius), bottomLeft: Radius.circular(radius), bottomRight: Radius.circular(radius))), - padding: EdgeInsets.only(left: 20, right: 20, top: 12, bottom: 12), + padding: const EdgeInsets.only(left: 20, right: 20, top: 12, bottom: 12), child: BrnExpandableText( text: text, maxLines: maxLines, diff --git a/lib/src/components/card/bubble_card/brn_insert_info.dart b/lib/src/components/card/bubble_card/brn_insert_info.dart index a1872aa4..09d941d4 100644 --- a/lib/src/components/card/bubble_card/brn_insert_info.dart +++ b/lib/src/components/card/bubble_card/brn_insert_info.dart @@ -47,7 +47,7 @@ class BrnInsertInfo extends StatelessWidget { ), ); - Color color = Color(0xFFF8F8F8); + Color color = const Color(0xFFF8F8F8); Image image = BrunoTools.getAssetImage('icons/icon_right_top_pointer.png'); Widget bubbleText = Row( @@ -59,17 +59,17 @@ class BrnInsertInfo extends StatelessWidget { color: color, shape: BoxShape.rectangle, borderRadius: BorderRadius.only( - topLeft: Radius.circular(0), - topRight: Radius.circular(4), - bottomLeft: Radius.circular(4), - bottomRight: Radius.circular(4))), - padding: EdgeInsets.only(left: 20, right: 20, top: 12, bottom: 12), + topLeft: const Radius.circular(0), + topRight: const Radius.circular(4), + bottomLeft: const Radius.circular(4), + bottomRight: const Radius.circular(4))), + padding: const EdgeInsets.only(left: 20, right: 20, top: 12, bottom: 12), child: tx, ), ) ], ); - return Container( + return ColoredBox( color: Colors.transparent, child: Column( mainAxisSize: MainAxisSize.min, diff --git a/lib/src/components/card/content_card/brn_enhance_number_card.dart b/lib/src/components/card/content_card/brn_enhance_number_card.dart index 5e79a5fe..f050791f 100644 --- a/lib/src/components/card/content_card/brn_enhance_number_card.dart +++ b/lib/src/components/card/content_card/brn_enhance_number_card.dart @@ -1,5 +1,3 @@ - - import 'package:bruno/src/constants/brn_asset_constants.dart'; import 'package:bruno/src/constants/brn_strings_constants.dart'; import 'package:bruno/src/theme/brn_theme.dart'; @@ -237,35 +235,38 @@ class BrnEnhanceNumberCard extends StatelessWidget { style: config.descTextStyle.generateTextStyle(), overflow: TextOverflow.ellipsis, ); + Widget? icon; if (model.iconTapCallBack != null) { - Widget icon = BrunoTools.getAssetSizeImage(BrnAsset.iconQuestion, 14, 14); + icon = BrunoTools.getAssetSizeImage(BrnAsset.iconQuestion, 14, 14); if (model.numberInfoIcon == BrnNumberInfoIcon.arrow) { icon = BrunoTools.getAssetSizeImage(BrnAsset.iconRightArrow, 14, 14); } debugPrint('${tp.height}'); debugPrint(model.title); - text = Row( - mainAxisAlignment: itemTextAlign == TextAlign.center - ? MainAxisAlignment.center - : (itemTextAlign == TextAlign.right - ? MainAxisAlignment.end - : MainAxisAlignment.start), - crossAxisAlignment: - tp.height > 22 ? CrossAxisAlignment.end : CrossAxisAlignment.center, - children: [ - Flexible( - child: text, - ), + } + text = Row( + mainAxisAlignment: itemTextAlign == TextAlign.center + ? MainAxisAlignment.center + : (itemTextAlign == TextAlign.right + ? MainAxisAlignment.end + : MainAxisAlignment.start), + crossAxisAlignment: + tp.height > 22 ? CrossAxisAlignment.end : CrossAxisAlignment.center, + children: [ + Flexible( + child: text, + ), + if (icon != null) GestureDetector( onTap: () { model.iconTapCallBack!(model); }, child: icon, ) - ], - ); - } + ], + ); + return text; } diff --git a/lib/src/components/card/content_card/brn_pair_info_rich_grid.dart b/lib/src/components/card/content_card/brn_pair_info_rich_grid.dart index ccea24d4..2a431e46 100644 --- a/lib/src/components/card/content_card/brn_pair_info_rich_grid.dart +++ b/lib/src/components/card/content_card/brn_pair_info_rich_grid.dart @@ -234,7 +234,7 @@ class BrnRichGridInfo { } }, child: Padding( - padding: EdgeInsets.only(left: 4), + padding: const EdgeInsets.only(left: 4), child: Container( constraints: BoxConstraints(maxWidth: 56), child: Text(clickTitle, diff --git a/lib/src/components/card/content_card/brn_pair_info_table.dart b/lib/src/components/card/content_card/brn_pair_info_table.dart index 8a967135..06fe225e 100644 --- a/lib/src/components/card/content_card/brn_pair_info_table.dart +++ b/lib/src/components/card/content_card/brn_pair_info_table.dart @@ -77,7 +77,7 @@ class BrnPairInfoTable extends StatefulWidget { final bool isValueAlign; /// TableCell 默认垂直对齐方式, 默认值为 [TableCellVerticalAlignment.baseline] - /// 当 [BrnInfoModal.valuePart] 为自定义 Widget 时,可设置该参数调整对齐方式,仅在 + /// 当 [BrnInfoModal.valuePart] 为自定义 Widget 时,可设置该参数调整对齐方式,仅在 /// [isValueAlign] 为 true 时设置才生效 final TableCellVerticalAlignment defaultVerticalAlignment; @@ -286,7 +286,7 @@ class _BrnPairInfoTableState extends State { Row row = Row( children: [ Padding( - padding: EdgeInsets.only(right: 4), + padding: const EdgeInsets.only(right: 4), child: Text( BrnIntl.currentResource.expand, style: TextStyle( @@ -308,7 +308,7 @@ class _BrnPairInfoTableState extends State { }); Container layerCtn = Container( - padding: EdgeInsets.only(left: 30), + padding: const EdgeInsets.only(left: 30), alignment: Alignment.center, child: gdt, decoration: BoxDecoration( @@ -345,7 +345,7 @@ class _BrnPairInfoTableState extends State { Row row = Row( children: [ Padding( - padding: EdgeInsets.only(right: 4), + padding: const EdgeInsets.only(right: 4), child: Text( BrnIntl.currentResource.collapse, style: TextStyle( diff --git a/lib/src/components/form/items/group/brn_expandable_group_with_opreate.dart b/lib/src/components/form/items/group/brn_expandable_group_with_opreate.dart index d4df61ce..290c05df 100644 --- a/lib/src/components/form/items/group/brn_expandable_group_with_opreate.dart +++ b/lib/src/components/form/items/group/brn_expandable_group_with_opreate.dart @@ -25,13 +25,6 @@ class BrnExpandFormGroup extends StatefulWidget { /// 录入项子标题 final String? subTitle; - /// 录入项提示(问号图标&文案) 用户点击时触发onTip回调。 - /// 1. 若赋值为 空字符串("")时仅展示"问号"图标, - /// 2. 若赋值为非空字符串时 展示"问号图标&文案", - /// 3. 若不赋值或赋值为null时 不显示提示项 - /// 默认值为 3 - final String? tipLabel; - /// 录入项错误提示 final String error; @@ -66,7 +59,6 @@ class BrnExpandFormGroup extends StatefulWidget { this.label, this.title = "", this.subTitle, - this.tipLabel, this.error = "", this.isEdit = true, this.isRequire = false, diff --git a/lib/src/components/form/items/group/brn_normal_group.dart b/lib/src/components/form/items/group/brn_normal_group.dart index af71d4b8..263bade9 100644 --- a/lib/src/components/form/items/group/brn_normal_group.dart +++ b/lib/src/components/form/items/group/brn_normal_group.dart @@ -26,13 +26,6 @@ class BrnNormalFormGroup extends StatefulWidget { /// 录入项子标题 final String? subTitle; - /// 录入项提示(问号图标&文案) 用户点击时触发onTip回调。 - /// 1. 若赋值为 空字符串("")时仅展示"问号"图标, - /// 2. 若赋值为非空字符串时 展示"问号图标&文案", - /// 3. 若不赋值或赋值为null时 不显示提示项 - /// 默认值为 3 - final String? tipLabel; - /// 录入项错误提示 final String error; @@ -62,13 +55,13 @@ class BrnNormalFormGroup extends StatefulWidget { this.label, this.title = "", this.subTitle, - this.tipLabel, this.error = "", this.isEdit = true, this.isRequire = false, this.onRemoveTap, this.onTip, this.deleteLabel, + this.themeData, required this.children, }) : super(key: key) { this.themeData ??= BrnFormItemConfig(); @@ -94,7 +87,7 @@ class BrnNormalFormGroupState extends State { Widget build(BuildContext context) { return Container( padding: EdgeInsets.only(top: 14), - color: Colors.white, + color: widget.themeData!.backgroundColor, child: Column( mainAxisSize: MainAxisSize.min, children: [ diff --git a/lib/src/components/form/items/group/brn_portrait_radio_group.dart b/lib/src/components/form/items/group/brn_portrait_radio_group.dart index e48430b0..18573bd8 100644 --- a/lib/src/components/form/items/group/brn_portrait_radio_group.dart +++ b/lib/src/components/form/items/group/brn_portrait_radio_group.dart @@ -99,7 +99,7 @@ class BrnPortraitRadioGroupState extends State { @override Widget build(BuildContext context) { return Container( - color: Colors.white, + color: widget.themeData!.backgroundColor, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: getRadioList(widget.options), diff --git a/lib/src/components/gallery/page/brn_gallery_detail_page.dart b/lib/src/components/gallery/page/brn_gallery_detail_page.dart index ba4b5ef1..f7999967 100644 --- a/lib/src/components/gallery/page/brn_gallery_detail_page.dart +++ b/lib/src/components/gallery/page/brn_gallery_detail_page.dart @@ -91,10 +91,10 @@ class _BrnGalleryDetailPageState extends State _appBarConfig = BrnThemeConfigurator.instance .getConfig(configId: widget.themeData!.configId) .appBarConfig - .merge(BrnAppBarConfig( + .merge(widget.themeData!.appbarConfig).merge(BrnAppBarConfig( titleStyle: widget.themeData!.appbarTitleStyle, backgroundColor: widget.themeData!.appbarBackgroundColor, - actionsStyle: widget.themeData!.appbarActionStyle)); + actionsStyle: widget.themeData!.appbarActionStyle,)); // 打平 tabBar _tabBarConfig = BrnThemeConfigurator.instance @@ -254,7 +254,6 @@ class _BrnGalleryDetailPageState extends State return Scaffold( key: GlobalKey(), appBar: BrnAppBar( - brightness: widget.themeData!.appbarBrightness, backgroundColor: _appBarConfig!.backgroundColor, showDefaultBottom: false, themeData: _appBarConfig, diff --git a/lib/src/components/navbar/brn_appbar.dart b/lib/src/components/navbar/brn_appbar.dart index c68cb0e3..9cfdfd56 100644 --- a/lib/src/components/navbar/brn_appbar.dart +++ b/lib/src/components/navbar/brn_appbar.dart @@ -116,7 +116,6 @@ class BrnAppBar extends PreferredSize { final Color? backgroundColor; final PreferredSizeWidget? bottom; final double elevation; - final Brightness? brightness; final double toolbarOpacity; final double bottomOpacity; final Alignment titleAlignment; @@ -126,7 +125,6 @@ class BrnAppBar extends PreferredSize { final ShapeBorder? shape; final IconThemeData? iconTheme; final IconThemeData? actionsIconTheme; - final TextTheme? textTheme; final bool primary; final bool excludeHeaderSemantics; final double? titleSpacing; @@ -140,6 +138,7 @@ class BrnAppBar extends PreferredSize { final bool? showDefaultBottom; final bool showLeadingDivider; final BrnAppBarConfig? themeData; + final SystemUiOverlayStyle? systemOverlayStyle; BrnAppBar( {Key? key, @@ -151,7 +150,6 @@ class BrnAppBar extends PreferredSize { this.bottom, this.elevation = 0, this.automaticallyImplyLeading = true, - this.brightness, this.toolbarOpacity = 1.0, this.bottomOpacity = 1.0, this.titleAlignment = Alignment.center, @@ -166,7 +164,7 @@ class BrnAppBar extends PreferredSize { this.actionsIconTheme, this.excludeHeaderSemantics = false, this.primary = true, - this.textTheme, + this.systemOverlayStyle, this.titleSpacing}) : assert( actions == null || actions is Widget || (actions is List)), @@ -178,7 +176,6 @@ class BrnAppBar extends PreferredSize { String? title, this.backgroundColor, this.bottom, - this.brightness, this.showLeadingDivider = true, this.flexibleSpace, this.backLeadCallback, @@ -191,7 +188,7 @@ class BrnAppBar extends PreferredSize { this.actionsIconTheme, this.excludeHeaderSemantics = false, this.primary = true, - this.textTheme, + this.systemOverlayStyle, this.titleSpacing}) : this.actions = null, this.elevation = 0, @@ -205,7 +202,6 @@ class BrnAppBar extends PreferredSize { backgroundColor: backgroundColor, title: title, bottom: bottom, - brightness: brightness, showLeadingDivider: showLeadingDivider, flexibleSpace: flexibleSpace, backLeadCallback: backLeadCallback, @@ -227,14 +223,10 @@ class BrnAppBar extends PreferredSize { @override Widget build(BuildContext context) { BrnAppBarConfig _defaultConfig = themeData ?? BrnAppBarConfig(); - //当外部传入主题 - if (brightness == Brightness.light) { - _defaultConfig = _defaultConfig.merge(BrnAppBarConfig.light()); - } else if (brightness == Brightness.dark) { - _defaultConfig = _defaultConfig.merge(BrnAppBarConfig.dark()); - } - _defaultConfig = _defaultConfig - .merge(BrnAppBarConfig(backgroundColor: this.backgroundColor, showDefaultBottom: this.showDefaultBottom)); + _defaultConfig = _defaultConfig.merge(BrnAppBarConfig( + backgroundColor: this.backgroundColor, + showDefaultBottom: this.showDefaultBottom, + systemUiOverlayStyle: this.systemOverlayStyle)); _defaultConfig = BrnThemeConfigurator.instance .getConfig(configId: _defaultConfig.configId) @@ -242,13 +234,14 @@ class BrnAppBar extends PreferredSize { .merge(_defaultConfig); useWidgetsBinding().addPostFrameCallback((_) { - SystemChrome.setSystemUIOverlayStyle(_defaultConfig.systemUiOverlayStyle); + SystemChrome.setSystemUIOverlayStyle(_defaultConfig.systemOverlayStyle); }); return super.build(context); } PreferredSizeWidget? _buildBarBottom(BrnAppBarConfig defaultConfig) { - if (brightness == null || brightness == Brightness.light) { + if (defaultConfig.systemOverlayStyle.statusBarBrightness == + Brightness.light) { if (bottom == null && defaultConfig.showDefaultBottom) { return BrnBarBottomDivider(); } @@ -260,13 +253,9 @@ class BrnAppBar extends PreferredSize { Widget get child { BrnAppBarConfig _defaultConfig = themeData ?? BrnAppBarConfig(); //当外部传入主题 - if (brightness == Brightness.light) { - _defaultConfig = _defaultConfig.merge(BrnAppBarConfig.light()); - } else if (brightness == Brightness.dark) { - _defaultConfig = _defaultConfig.merge(BrnAppBarConfig.dark()); - } - _defaultConfig = - _defaultConfig.merge(BrnAppBarConfig(backgroundColor: backgroundColor)); + _defaultConfig = _defaultConfig.merge(BrnAppBarConfig( + backgroundColor: backgroundColor, + systemUiOverlayStyle: systemOverlayStyle)); _defaultConfig = BrnThemeConfigurator.instance .getConfig(configId: _defaultConfig.configId) @@ -294,7 +283,7 @@ class BrnAppBar extends PreferredSize { backgroundColor: _defaultConfig.backgroundColor, actions: _wrapActions(_defaultConfig), bottom: _buildBarBottom(_defaultConfig), - brightness: brightness ?? Brightness.light, + systemOverlayStyle: _defaultConfig.systemOverlayStyle, toolbarOpacity: toolbarOpacity, bottomOpacity: bottomOpacity, flexibleSpace: flexibleSpace, @@ -302,7 +291,6 @@ class BrnAppBar extends PreferredSize { shape: shape, iconTheme: iconTheme, actionsIconTheme: actionsIconTheme, - textTheme: textTheme, primary: primary, excludeHeaderSemantics: excludeHeaderSemantics, ); @@ -617,15 +605,7 @@ class _BrnSearchResultAppBar extends StatelessWidget { @override Widget build(BuildContext context) { BrnAppBarConfig _defaultConfig = appBarConfig ?? BrnAppBarConfig(); - - if (brightness == Brightness.light) { - _defaultConfig = _defaultConfig.merge(BrnAppBarConfig.light()); - } else if (brightness == Brightness.dark) { - _defaultConfig = _defaultConfig.merge(BrnAppBarConfig.dark()); - } - - _defaultConfig = _defaultConfig - .merge(BrnAppBarConfig( + _defaultConfig = _defaultConfig.merge(BrnAppBarConfig( backgroundColor: this.backgroundColor, showDefaultBottom: this.showDefaultBottom, )); diff --git a/lib/src/components/navbar/brn_search_bar.dart b/lib/src/components/navbar/brn_search_bar.dart index 0bc088a3..ce616f1a 100644 --- a/lib/src/components/navbar/brn_search_bar.dart +++ b/lib/src/components/navbar/brn_search_bar.dart @@ -1,11 +1,6 @@ -import 'package:bruno/src/components/navbar/brn_appbar.dart'; import 'package:bindings_compatible/bindings_compatible.dart'; +import 'package:bruno/bruno.dart'; import 'package:bruno/src/components/navbar/brn_appbar_theme.dart'; -import 'package:bruno/src/constants/brn_asset_constants.dart'; -import 'package:bruno/src/constants/brn_strings_constants.dart'; -import 'package:bruno/src/l10n/brn_intl.dart'; -import 'package:bruno/src/theme/brn_theme_configurator.dart'; -import 'package:bruno/src/utils/brn_tools.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -73,13 +68,14 @@ class BrnSearchAppbar extends PreferredSize { /// 是否默认获取焦点 final bool autoFocus; - /// searchBar 主题 - final Brightness brightness; - /// 清空回调 final VoidCallback? onClearTap; - const BrnSearchAppbar( + final SystemUiOverlayStyle? systemOverlayStyle; + + BrnAppBarConfig? themeData; + + BrnSearchAppbar( {this.controller, this.focusNode, this.leading, @@ -92,15 +88,24 @@ class BrnSearchAppbar extends PreferredSize { this.dismissStyle, this.showDivider = true, this.autoFocus = true, - this.brightness = Brightness.dark, this.onClearTap, - this.inputTextStyle}) - : super(child: const Center(), preferredSize: const Size(0, 0)); + this.systemOverlayStyle, + this.inputTextStyle, + this.themeData}) + : super(child: const Center(), preferredSize: const Size(0, 0)){ + this.themeData ??= BrnAppBarConfig.dark(); + this.themeData = BrnThemeConfigurator.instance + .getConfig(configId: this.themeData!.configId) + .appBarConfig + .merge(this.themeData) + .merge(BrnAppBarConfig(systemUiOverlayStyle: systemOverlayStyle)); + } @override Widget get child => BrnAppBar( - brightness: brightness, + systemOverlayStyle: systemOverlayStyle, automaticallyImplyLeading: false, + themeData: themeData, title: _createSearchChild(), ); @@ -137,7 +142,6 @@ class BrnSearchAppbar extends PreferredSize { dismissStyle: dismissStyle, showDivider: showDivider, clearTapCallback: onClearTap, - brightness: brightness, )), ], ); @@ -310,7 +314,8 @@ class __SearchInputWidgetState extends State<_SearchInputWidget> { color: _defaultHintTextColor, ), // 提示文本属性,提示字段接受哪种输入的文本。 - hintText: widget.hint ?? BrnIntl.of(context).localizedResource.inputSearchTip, + hintText: widget.hint ?? + BrnIntl.of(context).localizedResource.inputSearchTip, ), // 在改变属性,当正在编辑的文本发生更改时调用。 onChanged: (content) { diff --git a/lib/src/components/selection/brn_simple_selection.dart b/lib/src/components/selection/brn_simple_selection.dart index be9b1e05..79ecbd97 100644 --- a/lib/src/components/selection/brn_simple_selection.dart +++ b/lib/src/components/selection/brn_simple_selection.dart @@ -2,6 +2,7 @@ import 'package:bruno/src/components/selection/bean/brn_filter_entity.dart'; import 'package:bruno/src/components/selection/bean/brn_selection_common_entity.dart'; import 'package:bruno/src/components/selection/brn_selection_view.dart'; import 'package:bruno/src/constants/brn_constants.dart'; +import 'package:bruno/src/theme/configs/brn_selection_config.dart'; import 'package:flutter/material.dart'; typedef BrnSimpleSelectionOnSelectionChanged = void Function( @@ -35,6 +36,9 @@ class BrnSimpleSelection extends StatefulWidget { /// 是否单选 默认 radio模式 is true , checkbox模式 is false final bool isRadio; + /// SelectionView 配置 + final BrnSelectionConfig? themeData; + /// 单选构造函数 BrnSimpleSelection.radio({ Key? key, @@ -44,6 +48,7 @@ class BrnSimpleSelection extends StatefulWidget { required this.items, required this.onSimpleSelectionChanged, this.onMenuItemClick, + this.themeData, }) : this.isRadio = true, this.maxSelectedCount = BrnSelectionConstant.maxSelectCount, super(key: key); @@ -58,6 +63,7 @@ class BrnSimpleSelection extends StatefulWidget { required this.items, required this.onSimpleSelectionChanged, this.onMenuItemClick, + this.themeData, }) : this.isRadio = false, super(key: key); @@ -103,6 +109,7 @@ class BrnSimpleSelectionState extends State { @override Widget build(BuildContext context) { return BrnSelectionView( + themeData: widget.themeData, originalSelectionData: selectionEntityList, onSelectionChanged: (menuIndex, selectedParams, customParams, setCustomTitleFunction) { diff --git a/lib/src/components/tabbar/normal/brn_tab_bar.dart b/lib/src/components/tabbar/normal/brn_tab_bar.dart index 894c7255..667dbd67 100644 --- a/lib/src/components/tabbar/normal/brn_tab_bar.dart +++ b/lib/src/components/tabbar/normal/brn_tab_bar.dart @@ -619,6 +619,11 @@ class BrnTabBarState extends State { padding: EdgeInsets.all(0), child: _TabBarOverlayWidget( tabs: widget.tabs, + onTap: (index) { + if (widget.onTap != null) { + widget.onTap!(this, index); + } + }, moreWindowText: widget.moreWindowText, brnTabbarController: _brnTabbarController, themeData: widget.themeData!, @@ -676,8 +681,12 @@ class _TabBarOverlayWidget extends StatefulWidget { /// tag高度 double? tagHeight; + /// Tab的选中点击事件 + final ValueChanged? onTap; + _TabBarOverlayWidget( {this.tabs, + this.onTap, this.moreWindowText, this.brnTabbarController, required this.themeData, @@ -785,6 +794,9 @@ class _TabBarOverlayWidgetState extends State<_TabBarOverlayWidget> { widget.brnTabbarController?.entry = null; setState(() {}); } else { + if (widget.onTap != null) { + widget.onTap!(index); + } widget.brnTabbarController!.setSelectIndex(index); widget.brnTabbarController?.isShow = false; widget.brnTabbarController?.entry?.remove(); diff --git a/lib/src/theme/base/brn_default_config_utils.dart b/lib/src/theme/base/brn_default_config_utils.dart index 6ceb6f1c..c1c69983 100644 --- a/lib/src/theme/base/brn_default_config_utils.dart +++ b/lib/src/theme/base/brn_default_config_utils.dart @@ -709,7 +709,7 @@ class BrnDefaultConfigUtils { fontWeight: FontWeight.w600, ), appbarBackgroundColor: Colors.black, - appbarBrightness: Brightness.dark, + appbarConfig: BrnAppBarConfig.dark(), tabBarUnSelectedLabelStyle: BrnTextStyle( fontSize: 16.0, color: Color(0XFFCCCCCC), diff --git a/lib/src/theme/configs/brn_appbar_config.dart b/lib/src/theme/configs/brn_appbar_config.dart index e5d2ee05..a92b8f3e 100644 --- a/lib/src/theme/configs/brn_appbar_config.dart +++ b/lib/src/theme/configs/brn_appbar_config.dart @@ -39,7 +39,7 @@ class BrnAppBarConfig extends BrnBaseConfig { _itemSpacing = itemSpacing, _titlePadding = titlePadding, _iconSize = iconSize, - _systemUiOverlayStyle = systemUiOverlayStyle, + _systemOverlayStyle = systemUiOverlayStyle, _showDefaultBottom = showDefaultBottom, super(configId: configId); @@ -76,7 +76,7 @@ class BrnAppBarConfig extends BrnBaseConfig { fontSize: BrnAppBarTheme.actionFontSize, fontWeight: FontWeight.w600, ); - _systemUiOverlayStyle = SystemUiOverlayStyle.light; + _systemOverlayStyle = SystemUiOverlayStyle.light; } BrnAppBarConfig.light({ @@ -112,7 +112,7 @@ class BrnAppBarConfig extends BrnBaseConfig { fontSize: BrnAppBarTheme.actionFontSize, fontWeight: FontWeight.w600, ); - _systemUiOverlayStyle = SystemUiOverlayStyle.dark; + _systemOverlayStyle = SystemUiOverlayStyle.dark; } /// AppBar 的背景色 @@ -192,11 +192,11 @@ class BrnAppBarConfig extends BrnBaseConfig { /// statusBar 样式 /// 默认为 [SystemUiOverlayStyle.dark] - SystemUiOverlayStyle? _systemUiOverlayStyle; + SystemUiOverlayStyle? _systemOverlayStyle; - SystemUiOverlayStyle get systemUiOverlayStyle => - _systemUiOverlayStyle ?? - BrnDefaultConfigUtils.defaultAppBarConfig.systemUiOverlayStyle; + SystemUiOverlayStyle get systemOverlayStyle => + _systemOverlayStyle ?? + BrnDefaultConfigUtils.defaultAppBarConfig.systemOverlayStyle; /// 是否展示Appbar bottom 分割线 /// 默认为 [false] @@ -231,7 +231,7 @@ class BrnAppBarConfig extends BrnBaseConfig { _itemSpacing ??= appbarConfig._itemSpacing; _titlePadding ??= appbarConfig._titlePadding; _iconSize ??= appbarConfig._iconSize; - _systemUiOverlayStyle ??= appbarConfig._systemUiOverlayStyle; + _systemOverlayStyle ??= appbarConfig._systemOverlayStyle; _showDefaultBottom ??= appbarConfig._showDefaultBottom; } @@ -260,7 +260,7 @@ class BrnAppBarConfig extends BrnBaseConfig { itemSpacing: itemSpacing ?? _itemSpacing, titlePadding: titlePadding ?? _titlePadding, iconSize: iconSize ?? _iconSize, - systemUiOverlayStyle: systemUiOverlayStyle ?? _systemUiOverlayStyle, + systemUiOverlayStyle: systemUiOverlayStyle ?? _systemOverlayStyle, showDefaultBottom: showDefaultBottom ?? _showDefaultBottom, ); } @@ -278,7 +278,7 @@ class BrnAppBarConfig extends BrnBaseConfig { itemSpacing: other._itemSpacing, titlePadding: other._titlePadding, iconSize: other._iconSize, - systemUiOverlayStyle: other._systemUiOverlayStyle, + systemUiOverlayStyle: other._systemOverlayStyle, showDefaultBottom: other._showDefaultBottom, ); } diff --git a/lib/src/theme/configs/brn_gallery_detail_config.dart b/lib/src/theme/configs/brn_gallery_detail_config.dart index b7155350..60cd9244 100644 --- a/lib/src/theme/configs/brn_gallery_detail_config.dart +++ b/lib/src/theme/configs/brn_gallery_detail_config.dart @@ -6,6 +6,8 @@ import 'package:bruno/src/theme/brn_theme_configurator.dart'; import 'package:bruno/src/theme/configs/brn_common_config.dart'; import 'package:flutter/material.dart'; +import 'brn_appbar_config.dart'; + /// 查看大图配置 class BrnGalleryDetailConfig extends BrnBaseConfig { /// 遵循全局配置 @@ -14,7 +16,7 @@ class BrnGalleryDetailConfig extends BrnBaseConfig { BrnTextStyle? appbarTitleStyle, BrnTextStyle? appbarActionStyle, Color? appbarBackgroundColor, - Brightness? appbarBrightness, + BrnAppBarConfig? appbarConfig, BrnTextStyle? tabBarUnSelectedLabelStyle, BrnTextStyle? tabBarLabelStyle, Color? tabBarBackgroundColor, @@ -28,7 +30,7 @@ class BrnGalleryDetailConfig extends BrnBaseConfig { }) : _appbarTitleStyle = appbarTitleStyle, _appbarActionStyle = appbarActionStyle, _appbarBackgroundColor = appbarBackgroundColor, - _appbarBrightness = appbarBrightness, + _appbarConfig = appbarConfig, _tabBarUnSelectedLabelStyle = tabBarUnSelectedLabelStyle, _tabBarLabelStyle = tabBarLabelStyle, _tabBarBackgroundColor = tabBarBackgroundColor, @@ -47,7 +49,7 @@ class BrnGalleryDetailConfig extends BrnBaseConfig { _appbarTitleStyle = BrnTextStyle(color: commonConfig.colorTextBaseInverse); _appbarActionStyle = BrnTextStyle(color: BrnAppBarTheme.lightTextColor); _appbarBackgroundColor = Colors.black; - _appbarBrightness = Brightness.dark; + _appbarConfig = BrnAppBarConfig.dark(); _tabBarUnSelectedLabelStyle = BrnTextStyle(color: Color(0XFFCCCCCC)); _tabBarLabelStyle = BrnTextStyle(color: commonConfig.colorTextBaseInverse); _tabBarBackgroundColor = Colors.black; @@ -66,7 +68,7 @@ class BrnGalleryDetailConfig extends BrnBaseConfig { _appbarTitleStyle = BrnTextStyle(color: commonConfig.colorTextBase); _appbarActionStyle = BrnTextStyle(color: commonConfig.colorTextBase); _appbarBackgroundColor = commonConfig.fillBody; - _appbarBrightness = Brightness.light; + _appbarConfig = BrnAppBarConfig.light(); _tabBarUnSelectedLabelStyle = BrnTextStyle( color: commonConfig.colorTextBase, ); @@ -106,7 +108,7 @@ class BrnGalleryDetailConfig extends BrnBaseConfig { /// appbar brightness /// 默认为 [Brightness.dark] - Brightness? _appbarBrightness; + BrnAppBarConfig? _appbarConfig; /// tabBar 标题普通样式 /// @@ -178,9 +180,9 @@ class BrnGalleryDetailConfig extends BrnBaseConfig { _appbarBackgroundColor ?? BrnDefaultConfigUtils.defaultGalleryDetailConfig.appbarBackgroundColor; - Brightness get appbarBrightness => - _appbarBrightness ?? - BrnDefaultConfigUtils.defaultGalleryDetailConfig.appbarBrightness; + BrnAppBarConfig get appbarConfig => + _appbarConfig ?? + BrnDefaultConfigUtils.defaultGalleryDetailConfig.appbarConfig; BrnTextStyle get tabBarUnSelectedLabelStyle => _tabBarUnSelectedLabelStyle ?? @@ -242,7 +244,7 @@ class BrnGalleryDetailConfig extends BrnBaseConfig { _appbarActionStyle = galleryDetailConfig.appbarActionStyle.merge( _appbarActionStyle, ); - _appbarBrightness ??= galleryDetailConfig.appbarBrightness; + _appbarConfig ??= galleryDetailConfig.appbarConfig; _appbarBackgroundColor ??= galleryDetailConfig.appbarBackgroundColor; _tabBarUnSelectedLabelStyle = galleryDetailConfig.tabBarUnSelectedLabelStyle .merge(BrnTextStyle(fontSize: commonConfig.fontSizeSubHead)) @@ -284,7 +286,7 @@ class BrnGalleryDetailConfig extends BrnBaseConfig { BrnTextStyle? appbarTitleStyle, BrnTextStyle? appbarActionStyle, Color? appbarBackgroundColor, - Brightness? appbarBrightness, + BrnAppBarConfig? appbarConfig, BrnTextStyle? tabBarUnSelectedLabelStyle, Color? tabBarUnselectedLabelColor, BrnTextStyle? tabBarLabelStyle, @@ -302,7 +304,7 @@ class BrnGalleryDetailConfig extends BrnBaseConfig { appbarTitleStyle: appbarTitleStyle ?? _appbarTitleStyle, appbarActionStyle: appbarActionStyle ?? _appbarActionStyle, appbarBackgroundColor: appbarBackgroundColor ?? _appbarBackgroundColor, - appbarBrightness: appbarBrightness ?? _appbarBrightness, + appbarConfig: appbarConfig ?? _appbarConfig, tabBarUnSelectedLabelStyle: tabBarUnSelectedLabelStyle ?? _tabBarUnSelectedLabelStyle, tabBarLabelStyle: tabBarLabelStyle ?? _tabBarLabelStyle, @@ -322,7 +324,7 @@ class BrnGalleryDetailConfig extends BrnBaseConfig { appbarTitleStyle: appbarTitleStyle.merge(other._appbarTitleStyle), appbarActionStyle: appbarActionStyle.merge(other._appbarActionStyle), appbarBackgroundColor: other._appbarBackgroundColor, - appbarBrightness: other._appbarBrightness, + appbarConfig: other._appbarConfig, tabBarUnSelectedLabelStyle: tabBarUnSelectedLabelStyle.merge(other._tabBarUnSelectedLabelStyle), tabBarLabelStyle: tabBarLabelStyle.merge(other._tabBarLabelStyle), diff --git a/pubspec.yaml b/pubspec.yaml index ffa7394c..38683dbb 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,10 +1,10 @@ name: bruno description: An enterprise-class package of Flutter components for mobile applications. -version: 3.3.0 +version: 3.4.0 homepage: https://github.com/LianjiaTech/bruno environment: - sdk: '>=2.17.0 <3.0.0' + sdk: '>=2.17.0 <4.0.0' flutter: '>=3.7.0' dependencies: @@ -14,7 +14,7 @@ dependencies: lpinyin: ^2.0.3 path_drawing: ^1.0.0 flutter_easyrefresh: ^2.2.1 - intl: ^0.17.0 + intl: ^0.18.0 photo_view: ^0.14.0 bindings_compatible: ^1.0.1