Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

migrate card_title to null safety #59

Merged
merged 4 commits into from
Jan 10, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,10 @@ class _BrnCommonTitleExampleState extends State<BrnCommonTitleExample> {
children: <Widget>[
Text(
'规则',
style: TextStyle(color: Color(0xFF222222), fontSize: 28, fontWeight: FontWeight.bold),
style: TextStyle(
color: Color(0xFF222222),
fontSize: 28,
fontWeight: FontWeight.bold),
),
BrnBubbleText(
maxLines: 4,
Expand Down
36 changes: 16 additions & 20 deletions lib/src/components/card_title/brn_action_card_title.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
// @dart=2.9

import 'package:bruno/bruno.dart';
import 'package:bruno/src/constants/brn_strings_constants.dart';
import 'package:bruno/src/constants/brn_asset_constants.dart';
import 'package:bruno/src/theme/brn_theme_configurator.dart';
import 'package:bruno/src/theme/configs/brn_card_title_config.dart';
import 'package:bruno/src/utils/brn_tools.dart';
Expand Down Expand Up @@ -40,29 +37,28 @@ class BrnActionCardTitle extends StatelessWidget {
final String title;

///箭头左边的文字
final String accessoryText;
final String? accessoryText;

///标题点击
final VoidCallback onTap;
final VoidCallback? onTap;

///标题右侧的小文字
final String subTitle;
final String? subTitle;

///标题右侧的显示widget
final Widget subTitleWidget;
final Widget? subTitleWidget;

final BrnCardTitleConfig themeData;
final BrnCardTitleConfig? themeData;

BrnActionCardTitle({
Key key,
@required this.title,
Key? key,
required this.title,
this.accessoryText,
this.onTap,
this.subTitle,
this.subTitleWidget,
this.themeData,
}) : assert(null != title),
super(key: key);
}) : super(key: key);

@override
Widget build(BuildContext context) {
Expand Down Expand Up @@ -114,31 +110,31 @@ class BrnActionCardTitle extends StatelessWidget {
return Container(
padding: EdgeInsets.only(right: 8),
child: Text(
this.title ?? "",
this.title,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: defaultConfig.titleTextStyle?.generateTextStyle(),
style: defaultConfig.titleTextStyle.generateTextStyle(),
),
);
}

// 如果传入了subTitleWidget 则以subTitleWidget为主
Widget _sub(BrnCardTitleConfig defaultConfig) {
if (subTitleWidget != null) {
return subTitleWidget;
return subTitleWidget!;
}

if (subTitle != null) {
return Container(
constraints: BoxConstraints(maxWidth: 84),
child: Text(this.subTitle,
child: Text(this.subTitle!,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: subTextStyle(defaultConfig)),
);
}

return Container();
return SizedBox.shrink();
}

Widget _arrowWidget() {
Expand All @@ -158,7 +154,7 @@ class BrnActionCardTitle extends StatelessWidget {
child: Text(
accessoryText ?? "",
overflow: TextOverflow.ellipsis,
style: defaultConfig.accessoryTextStyle?.generateTextStyle(),
style: defaultConfig.accessoryTextStyle.generateTextStyle(),
),
),
_arrowWidget()
Expand All @@ -169,5 +165,5 @@ class BrnActionCardTitle extends StatelessWidget {

//标题右侧的小文字 样式
TextStyle subTextStyle(BrnCardTitleConfig defaultConfig) =>
defaultConfig?.subtitleTextStyle?.generateTextStyle();
defaultConfig.subtitleTextStyle.generateTextStyle();
}
68 changes: 29 additions & 39 deletions lib/src/components/card_title/brn_common_card_title.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
// @dart=2.9

import 'package:bruno/src/theme/base/brn_text_style.dart';
import 'package:bruno/src/theme/brn_theme_configurator.dart';
import 'package:bruno/src/theme/configs/brn_card_title_config.dart';
Expand Down Expand Up @@ -52,34 +50,34 @@ class BrnCommonCardTitle extends StatelessWidget {
final String title;

/// 最右侧的文字
final String accessoryText;
final String? accessoryText;

/// 最右侧的widget 如果两者同时存在 则以widget为主
final Widget accessoryWidget;
final Widget? accessoryWidget;

/// 整个区域点击的回调
final VoidCallback onTap;
final VoidCallback? onTap;

/// 标题右侧的显示widget
final Widget subTitleWidget;
final Widget? subTitleWidget;

/// 标题下面的文字
final String detailTextString;
final String? detailTextString;

/// title的流式文本的对齐方式
final PlaceholderAlignment alignment;
final PlaceholderAlignment? alignment;

/// 标题下方文字 默认是深色的222222
final Color detailColor;
final Color? detailColor;

/// 内容的padding 默认上下16 左右0
final EdgeInsetsGeometry padding;
final EdgeInsetsGeometry? padding;

final BrnCardTitleConfig themeData;
final BrnCardTitleConfig? themeData;

BrnCommonCardTitle(
{Key key,
@required this.title,
{Key? key,
required this.title,
this.accessoryText,
this.accessoryWidget,
this.onTap,
Expand All @@ -97,35 +95,30 @@ class BrnCommonCardTitle extends StatelessWidget {

defaultConfig = defaultConfig.merge(BrnCardTitleConfig(
alignment: alignment,
cardTitlePadding: padding,
cardTitlePadding: padding as EdgeInsets?,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mark

detailTextStyle: BrnTextStyle(color: detailColor)));

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

Widget titleContainer = Container(
color: defaultConfig.cardBackgroundColor,
child: _rowWidget(context, defaultConfig),
);
if (onTap == null) return titleContainer;
return GestureDetector(
onTap: () {
if (onTap != null) {
onTap();
}
},
child: Container(
color: defaultConfig?.cardBackgroundColor,
child: _rowWidget(context, defaultConfig),
),
onTap: onTap,
child: titleContainer,
);
}

Widget _rowWidget(BuildContext context, BrnCardTitleConfig defaultConfig) {
List<Widget> children = List<Widget>();
List<Widget> children = [];
children.add(Expanded(child: _titleWidget(context, defaultConfig)));

Widget accessory = Container(
height: 0,
width: 0,
);
Widget accessory = SizedBox.shrink();
// 左侧的文本的行高是25,那么右侧的widget最大为25
if (this.accessoryWidget != null) {
accessory = Container(
Expand Down Expand Up @@ -153,7 +146,7 @@ class BrnCommonCardTitle extends StatelessWidget {
Widget _accessoryTextWidget(BrnCardTitleConfig defaultConfig) {
Text tx = Text(
accessoryText ?? "",
style: defaultConfig?.accessoryTextStyle?.generateTextStyle(),
style: defaultConfig.accessoryTextStyle.generateTextStyle(),
);

return Container(
Expand All @@ -174,28 +167,25 @@ class BrnCommonCardTitle extends StatelessWidget {

///标题widget
Widget _titleWidget(BuildContext context, BrnCardTitleConfig defaultConfig) {
Widget subWidget = Container(
height: 0,
width: 0,
);
Widget subWidget = SizedBox.shrink();

if (subTitleWidget != null) {
subWidget = _subTitleWidgetFromWidget();
}
var titleWidget = RichText(
textScaleFactor: MediaQuery.of(context)?.textScaleFactor ?? 1.0,
textScaleFactor: MediaQuery.of(context).textScaleFactor,
text: TextSpan(
text: title ?? "",
style: defaultConfig?.titleWithHeightTextStyle?.generateTextStyle(),
text: title,
style: defaultConfig.titleWithHeightTextStyle.generateTextStyle(),
children: <InlineSpan>[
WidgetSpan(child: subWidget, alignment: defaultConfig.alignment),
]),
);

List<Widget> colChildren = List<Widget>();
List<Widget> colChildren = [];
colChildren.add(titleWidget);

if (null != detailTextString && detailTextString.isNotEmpty) {
if (null != detailTextString && detailTextString!.isNotEmpty) {
Widget detailWidget = _detailTextWidget(defaultConfig);
colChildren.add(detailWidget);
}
Expand All @@ -214,7 +204,7 @@ class BrnCommonCardTitle extends StatelessWidget {
detailTextString ?? "",
overflow: TextOverflow.ellipsis,
maxLines: 2,
style: defaultConfig?.detailTextStyle?.generateTextStyle(),
style: defaultConfig.detailTextStyle.generateTextStyle(),
);
return Container(
child: tx,
Expand Down