bruno icon indicating copy to clipboard operation
bruno copied to clipboard

无法自定义BrnCommonCardTitle主题

Open flywithme2006 opened this issue 2 years ago • 5 comments

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)

flywithme2006 avatar Aug 23 '22 15:08 flywithme2006

Hi~ @flywithme2006 可以把 titleTextStyle替换成titleWithHeightTextStyle,title的样式就可以生效了,组件内部是使用titleWithHeightTextStyle来给title指定样式

BrnCommonCardTitle(
  title: 'test',
  themeData: BrnCardTitleConfig(
      titleWithHeightTextStyle: BrnTextStyle(
          fontSize: 14,
          fontWeight: FontWeight.normal,
          color: const Color(0xFFAAFFBB))),
)

JunCaiLi avatar Aug 24 '22 01:08 JunCaiLi

@JunCaiLi 多谢! 按所述修改后,生效。

通过BrnInitializer.register设置全局样式,还是无效。

将brn_common_card_title.dar的build方法中关于defaultConfig的实现做了点修改,全局设置有效。

原代码:

BrnCardTitleConfig defaultConfig = themeData ?? BrnCardTitleConfig();

    defaultConfig = defaultConfig.merge(BrnCardTitleConfig(
        alignment: alignment,
        cardTitlePadding: padding as EdgeInsets?,
        detailTextStyle: BrnTextStyle(color: detailColor)));

    defaultConfig = BrnThemeConfigurator.instance
        .getConfig(configId: defaultConfig.configId)
        .cardTitleConfig
        .merge(defaultConfig);

修改为:

   BrnCardTitleConfig cardTitleConfig = BrnCardTitleConfig(
        alignment: alignment,
        cardTitlePadding: padding as EdgeInsets?,
        detailTextStyle: BrnTextStyle(color: detailColor));

    BrnCardTitleConfig defaultConfig = cardTitleConfig.merge(
        BrnThemeConfigurator.instance
            .getConfig(configId: cardTitleConfig.configId)
            .cardTitleConfig).merge(themeData);

flywithme2006 avatar Aug 24 '22 14:08 flywithme2006

Hi~ @flywithme2006 global不生效是因为merge defaultConfig把全局配置的样式覆盖了

BrnCardTitleConfig defaultConfig = themeData ?? BrnCardTitleConfig();
defaultConfig = defaultConfig.merge(BrnCardTitleConfig(
    alignment: alignment,
    cardTitlePadding: padding as EdgeInsets?,
    detailTextStyle: BrnTextStyle(color: detailColor)));
defaultConfig = BrnThemeConfigurator.instance
    .getConfig(configId: defaultConfig.configId)
    .cardTitleConfig
    .merge(defaultConfig); // ⬅️ 不生效的原因在这里

你上面提到的修改code,会有一些小问题

   BrnCardTitleConfig cardTitleConfig = BrnCardTitleConfig(
        alignment: alignment,
        cardTitlePadding: padding as EdgeInsets?,
        detailTextStyle: BrnTextStyle(color: detailColor));

    BrnCardTitleConfig defaultConfig = cardTitleConfig.merge( //  这里会把传进来的detailColor 覆盖
        BrnThemeConfigurator.instance
            .getConfig(configId: cardTitleConfig.configId)
            .cardTitleConfig).merge(themeData);

@zhoujuanjuan 根据这个issue提交了一个PR https://github.com/LianjiaTech/bruno/pull/313

JunCaiLi avatar Aug 25 '22 03:08 JunCaiLi

@JunCaiLi thanks. 行动迅速,赞一个。

flywithme2006 avatar Aug 25 '22 08:08 flywithme2006

以上正解,感谢@JunCaiLi

zhoujuanjuan avatar Aug 25 '22 10:08 zhoujuanjuan