diff --git a/.gitignore b/.gitignore index 8c47502d..19f097df 100644 --- a/.gitignore +++ b/.gitignore @@ -75,3 +75,6 @@ build/ !**/ios/**/default.perspectivev3 !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages pubspec.lock + +# FVM +.fvm 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 14a58797..1c8bc561 100644 --- a/lib/src/components/card/bubble_card/brn_bubble_text.dart +++ b/lib/src/components/card/bubble_card/brn_bubble_text.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:bruno/src/components/text/brn_expandable_text.dart'; import 'package:bruno/src/theme/brn_theme_configurator.dart'; @@ -34,16 +34,20 @@ class BrnBubbleText extends StatelessWidget { final String text; ///最多显示的行数 - final int maxLines; + final int? maxLines; ///展开收起回调 - final TextExpandedCallback onExpanded; + final TextExpandedCallback? onExpanded; ///气泡的圆角 默认是4 final double radius; const BrnBubbleText( - {Key key, this.text, this.maxLines, this.onExpanded, this.radius = 4}) + {Key? key, + this.text = '', + this.maxLines, + this.onExpanded, + this.radius = 4}) : super(key: key); @override @@ -72,12 +76,12 @@ class BrnBubbleText extends StatelessWidget { shape: BoxShape.rectangle, borderRadius: BorderRadius.only( topLeft: Radius.circular(0), - topRight: Radius.circular(radius ?? 4), - bottomLeft: Radius.circular(radius ?? 4), - bottomRight: Radius.circular(radius ?? 4))), + topRight: Radius.circular(radius), + bottomLeft: Radius.circular(radius), + bottomRight: Radius.circular(radius))), padding: EdgeInsets.only(left: 20, right: 20, top: 12, bottom: 12), child: BrnExpandableText( - text: text ?? "", + text: text, maxLines: maxLines, color: Color(0xFFF8F8F8), onExpanded: onExpanded, 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 cbd9a942..a1872aa4 100644 --- a/lib/src/components/card/bubble_card/brn_insert_info.dart +++ b/lib/src/components/card/bubble_card/brn_insert_info.dart @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'package:bruno/src/theme/brn_theme_configurator.dart'; import 'package:bruno/src/utils/brn_tools.dart'; @@ -28,7 +28,7 @@ class BrnInsertInfo extends StatelessWidget { final String infoText; final int maxLines; - const BrnInsertInfo({Key key, @required this.infoText, this.maxLines = 2}) + const BrnInsertInfo({Key? key, required this.infoText, this.maxLines = 2}) : super(key: key); @override 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 6fa74843..e9a20e94 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,4 +1,4 @@ -// @dart=2.9 + import 'package:bruno/src/constants/brn_asset_constants.dart'; import 'package:bruno/src/constants/brn_strings_constants.dart'; @@ -57,13 +57,13 @@ import 'package:flutter/widgets.dart'; /// /// class BrnEnhanceNumberCard extends StatelessWidget { - final List itemChildren; + final List? itemChildren; ///如果超过一行,行间距则 默认为16 - final double runningSpace; + final double? runningSpace; ///Item的上半部分和下半部分的间距 默认为8 - final double itemRunningSpace; + final double? itemRunningSpace; ///每一行显示的数量 默认为3 final int rowCount; @@ -76,10 +76,10 @@ class BrnEnhanceNumberCard extends StatelessWidget { final TextAlign itemTextAlign; - final BrnEnhanceNumberCardConfig themeData; + final BrnEnhanceNumberCardConfig? themeData; BrnEnhanceNumberCard({ - Key key, + Key? key, this.itemChildren, this.rowCount = 3, this.runningSpace, @@ -102,7 +102,7 @@ class BrnEnhanceNumberCard extends StatelessWidget { .enhanceNumberCardConfig .merge(defaultConfig); - if (itemChildren == null || itemChildren.length == 0) { + if (itemChildren == null || itemChildren!.length == 0) { return Container( height: 0, width: 0, @@ -116,25 +116,25 @@ class BrnEnhanceNumberCard extends StatelessWidget { ); // 容错显示的行数 显示三行 int count = rowCount; - if (rowCount <= 0 || rowCount > itemChildren.length) { + if (rowCount <= 0 || rowCount > itemChildren!.length) { count = 3; } double width = constraints.maxWidth; double singleWidth = (width - padding.left - padding.right) / count; - if (itemChildren.length > 1) { + if (itemChildren!.length > 1) { // 平铺下来 contentWidget = Wrap( runSpacing: defaultConfig.runningSpace, spacing: 0.0, - children: itemChildren.map((data) { + children: itemChildren!.map((data) { //每行的最后一个 不显示分割线 //最后一个元素 不显示分割线 - bool condition1 = (itemChildren.indexOf(data) + 1) % count == 0; - bool condition2 = itemChildren.last == data; + bool condition1 = (itemChildren!.indexOf(data) + 1) % count == 0; + bool condition2 = itemChildren!.last == data; bool allCondition = condition1 || condition2; - bool isFirst = (itemChildren.indexOf(data) + 1) % count == 1; + bool isFirst = (itemChildren!.indexOf(data) + 1) % count == 1; return Container( width: singleWidth, child: Row( @@ -165,7 +165,7 @@ class BrnEnhanceNumberCard extends StatelessWidget { }).toList(), ); } else { - contentWidget = _buildItemWidget(itemChildren[0], defaultConfig); + contentWidget = _buildItemWidget(itemChildren![0], defaultConfig); } return Container( @@ -179,7 +179,7 @@ class BrnEnhanceNumberCard extends StatelessWidget { Widget _buildItemWidget( BrnNumberInfoItemModel model, BrnEnhanceNumberCardConfig config, - {double width}) { + {double? width}) { return Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, @@ -196,9 +196,9 @@ class BrnEnhanceNumberCard extends StatelessWidget { Widget _buildTopWidget( BrnNumberInfoItemModel model, BrnEnhanceNumberCardConfig config, - {double width}) { + {double? width}) { if (model.topWidget != null) { - return model.topWidget; + return model.topWidget!; } return Row( mainAxisSize: MainAxisSize.min, @@ -209,7 +209,7 @@ class BrnEnhanceNumberCard extends StatelessWidget { Container( height: 26, transform: Matrix4.translationValues(0, 1, 0), - child: Text(model.number, + child: Text(model.number!, style: TextStyle( textBaseline: TextBaseline.ideographic, color: config.titleTextStyle.color, @@ -226,9 +226,9 @@ class BrnEnhanceNumberCard extends StatelessWidget { Widget _buildBottomWidget( BrnNumberInfoItemModel model, BrnEnhanceNumberCardConfig config, - {double width}) { + {double? width}) { if (model.bottomWidget != null) { - return model.bottomWidget; + return model.bottomWidget!; } TextSpan span = TextSpan( text: model.title ?? "", @@ -269,7 +269,7 @@ class BrnEnhanceNumberCard extends StatelessWidget { ), GestureDetector( onTap: () { - model.iconTapCallBack(model); + model.iconTapCallBack!(model); }, child: icon, ) @@ -279,7 +279,7 @@ class BrnEnhanceNumberCard extends StatelessWidget { return text; } - Widget _getPreWidget(String preDesc, BrnEnhanceNumberCardConfig config) { + Widget _getPreWidget(String? preDesc, BrnEnhanceNumberCardConfig config) { if (preDesc == null || preDesc.isEmpty) { return Container( height: 0, @@ -289,7 +289,7 @@ class BrnEnhanceNumberCard extends StatelessWidget { return Padding( padding: const EdgeInsets.only(left: 1), child: Text( - preDesc ?? "", + preDesc, maxLines: 1, overflow: TextOverflow.ellipsis, style: TextStyle( @@ -301,7 +301,7 @@ class BrnEnhanceNumberCard extends StatelessWidget { ); } - Widget _getLastWidget(String lastDesc, BrnEnhanceNumberCardConfig config) { + Widget _getLastWidget(String? lastDesc, BrnEnhanceNumberCardConfig config) { if (lastDesc == null || lastDesc.isEmpty) { return Container( height: 0, @@ -310,7 +310,7 @@ class BrnEnhanceNumberCard extends StatelessWidget { } return Padding( padding: const EdgeInsets.only(left: 1, top: 0), - child: Text(lastDesc ?? "", + child: Text(lastDesc, maxLines: 1, overflow: TextOverflow.ellipsis, style: TextStyle( @@ -324,28 +324,28 @@ class BrnEnhanceNumberCard extends StatelessWidget { /// 用来显示强化数据的model class BrnNumberInfoItemModel { ///number必须是非中文,否则会展示异常,如果有中文信息 则设置pre和last字段 - final String number; + final String? number; ///下半部分的辅助信息 - final String title; + final String? title; ///强化信息的前面展示字段 - final String preDesc; + final String? preDesc; ///强化信息的后面展示字段 - final String lastDesc; + final String? lastDesc; ///icon的事件 - final Function(BrnNumberInfoItemModel) iconTapCallBack; + final Function(BrnNumberInfoItemModel)? iconTapCallBack; ///icon的样式 可枚举 , 默认为问号 final BrnNumberInfoIcon numberInfoIcon; ///上半部分的自定义内容 如果设置了优先级则高于 number、preDesc和lastDesc - final Widget topWidget; + final Widget? topWidget; ///下半部分的自定义内容 如果设置了优先级则高于 title - final Widget bottomWidget; + final Widget? bottomWidget; ///上部分的:(number、preDesc、lastDesc)和topWidget 必须设置一个 ///下部分的:title和title 必须设置一个 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 11a7dc11..f0e3221b 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 @@ -1,4 +1,4 @@ -// @dart=2.9 + import 'dart:ui' as ui; @@ -39,27 +39,27 @@ import 'package:flutter/material.dart'; /// * [BrnPairInfoTable], 单列key-value信息集合组件 /// class BrnRichInfoGrid extends StatelessWidget { - final List pairInfoList; + final List? pairInfoList; ///行间距 纵向 - final double rowSpace; + final double? rowSpace; ///gridView 为children包裹的padding,默认是从media中获取,支持修改 ///同gridView的padding - final EdgeInsetsGeometry padding; + final EdgeInsetsGeometry? padding; ///元素间距 横向 - final double space; + final double? space; - final double itemHeight; + final double? itemHeight; /// 一共多少列 默认2列 final int crossAxisCount; - final BrnPairRichInfoGridConfig themeData; + final BrnPairRichInfoGridConfig? themeData; BrnRichInfoGrid({ - Key key, + Key? key, this.pairInfoList, this.padding, this.rowSpace, @@ -71,7 +71,7 @@ class BrnRichInfoGrid extends StatelessWidget { @override Widget build(BuildContext context) { - if (pairInfoList == null || pairInfoList.isEmpty) { + if (pairInfoList == null || pairInfoList!.isEmpty) { return Container( height: 0, width: 0, @@ -119,16 +119,16 @@ class BrnRichInfoGrid extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ _getKeyWidget( - pairInfoList[index], + pairInfoList![index], gridWidth, context, defaultConfig, ), - _getValueWidget(pairInfoList[index], defaultConfig) + _getValueWidget(pairInfoList![index], defaultConfig) ], ); }, - itemCount: (null != this.pairInfoList) ? this.pairInfoList.length : 0, + itemCount: (null != this.pairInfoList) ? this.pairInfoList!.length : 0, ); return gridView; }, @@ -137,7 +137,7 @@ class BrnRichInfoGrid extends StatelessWidget { Widget _getKeyWidget(BrnRichGridInfo info, double width, BuildContext context, BrnPairRichInfoGridConfig config) { - if (info == null || info.keyPart == null) { + if (info.keyPart == null) { return Container( height: 0, width: 0, @@ -165,12 +165,6 @@ class BrnRichInfoGrid extends StatelessWidget { Widget _getValueWidget( BrnRichGridInfo info, BrnPairRichInfoGridConfig config) { - if (info == null) { - return Container( - height: 0, - width: 0, - ); - } if (info.valuePart == null) { return Text('--', style: _getValueStyle('--', themeData: config)); } @@ -212,12 +206,12 @@ class BrnRichGridInfo { static BrnRichGridInfo valueLastClickInfo( String keyTitle, String valueTitle, { - Function(String key) keyQuestionCallback, - Function(String value) valueQuestionCallback, - String clickTitle, - Color clickColor, - Function(String clickValue) clickCallback, - BrnPairRichInfoGridConfig themeData, + Function(String key)? keyQuestionCallback, + Function(String value)? valueQuestionCallback, + String? clickTitle, + Color? clickColor, + Function(String? clickValue)? clickCallback, + BrnPairRichInfoGridConfig? themeData, }) { themeData ??= BrnPairRichInfoGridConfig(); themeData = themeData.merge(BrnPairRichInfoGridConfig( @@ -231,9 +225,9 @@ class BrnRichGridInfo { return GestureDetector( onTap: () { if (isKey) { - keyQuestionCallback(keyTitle); + keyQuestionCallback!(keyTitle); } else { - valueQuestionCallback(valueTitle); + valueQuestionCallback!(valueTitle); } }, child: Padding( @@ -243,7 +237,7 @@ class BrnRichGridInfo { )); } - Widget _getClickValue({BrnPairRichInfoGridConfig themeData}) { + Widget _getClickValue({required BrnPairRichInfoGridConfig themeData}) { return GestureDetector( onTap: () { if (clickCallback != null) { @@ -254,7 +248,7 @@ class BrnRichGridInfo { padding: EdgeInsets.only(left: 4), child: Container( constraints: BoxConstraints(maxWidth: 56), - child: Text(clickTitle, + child: Text(clickTitle!, maxLines: 1, overflow: TextOverflow.ellipsis, style: _getClickStyle(clickTitle, clickColor, @@ -269,7 +263,7 @@ class BrnRichGridInfo { bool isShowValueClick = clickTitle != null && clickTitle.isNotEmpty; MediaQueryData mediaQuery = MediaQueryData.fromWindow(ui.window); - double screen = mediaQuery?.size?.width ?? 375; + double screen = mediaQuery.size.width; Widget key = Container( constraints: BoxConstraints( @@ -282,7 +276,7 @@ class BrnRichGridInfo { children: [ Flexible( child: Text( - keyTitle ?? "", + keyTitle, maxLines: 1, overflow: TextOverflow.ellipsis, style: _getKeyStyle(themeData: themeData), @@ -310,7 +304,7 @@ class BrnRichGridInfo { children: [ Flexible( child: Text( - valueTitle ?? "", + valueTitle, maxLines: 1, overflow: TextOverflow.ellipsis, style: _getValueStyle(valueTitle, themeData: themeData), @@ -336,13 +330,13 @@ class BrnRichGridInfo { } } -TextStyle _getKeyStyle({BrnPairRichInfoGridConfig themeData}) => - themeData.keyTextStyle?.generateTextStyle(); +TextStyle? _getKeyStyle({BrnPairRichInfoGridConfig? themeData}) => + themeData?.keyTextStyle.generateTextStyle(); -TextStyle _getClickStyle(String content, Color clickColor, - {BrnPairRichInfoGridConfig themeData}) => - themeData.linkTextStyle?.generateTextStyle(); +TextStyle? _getClickStyle(String? content, Color? clickColor, + {BrnPairRichInfoGridConfig? themeData}) => + themeData?.linkTextStyle.generateTextStyle(); -TextStyle _getValueStyle(String content, - {BrnPairRichInfoGridConfig themeData}) => - themeData?.valueTextStyle?.generateTextStyle(); +TextStyle? _getValueStyle(String content, + {BrnPairRichInfoGridConfig? themeData}) => + themeData?.valueTextStyle.generateTextStyle(); 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 e5000e9a..c5567e03 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 @@ -1,5 +1,3 @@ -// @dart=2.9 - import 'dart:math'; import 'dart:ui' as ui; @@ -87,21 +85,21 @@ class BrnPairInfoTable extends StatefulWidget { final bool isFolded; /// 每一行的间距 默认4 - final double rowDistance; + final double? rowDistance; /// key和value的间距 默认2 - final double itemSpacing; + final double? itemSpacing; - final BrnPairInfoTableConfig themeData; + final BrnPairInfoTableConfig? themeData; ///对齐情况下,自定义的key展示规则 ///默认是最大的Key展示长度是107 ///可以参考[_MaxWrapTableWidth]实现自定义的展示规则,指定长度等 - final TableColumnWidth customKeyWidth; + final TableColumnWidth? customKeyWidth; BrnPairInfoTable({ - Key key, - @required this.children, + Key? key, + required this.children, this.isValueAlign = true, this.expandAtIndex = -1, this.rowDistance, @@ -117,35 +115,35 @@ class BrnPairInfoTable extends StatefulWidget { class _BrnPairInfoTableState extends State { //当前的展示状态 - bool _isFolded; + late bool _isFolded; //指定索引位置去具备展开功能 - int _expandAtIndex; + late int _expandAtIndex; // 收起状态显示的孩子 - List foldList; + List? foldList; // 展开状态显示的孩子 - List expandedList; + List? expandedList; // 在页面呈现的孩子 - List showList; + List? showList; // 指定位置的最原始 modal - BrnInfoModal indexModal; + BrnInfoModal? indexModal; // 是否具备展开收起功能 如果不展示则显示全部 bool canExpanded = false; - BrnPairInfoTableConfig themeData; + BrnPairInfoTableConfig? themeData; @override void initState() { themeData = widget.themeData ?? BrnPairInfoTableConfig(); themeData = - themeData.merge(BrnPairInfoTableConfig(rowSpacing: widget.rowDistance)); + themeData!.merge(BrnPairInfoTableConfig(rowSpacing: widget.rowDistance)); themeData = BrnThemeConfigurator.instance - .getConfig(configId: themeData.configId) + .getConfig(configId: themeData!.configId) .pairInfoTableConfig .merge(themeData); @@ -171,9 +169,9 @@ class _BrnPairInfoTableState extends State { super.didUpdateWidget(oldWidget); themeData ??= BrnPairInfoTableConfig(); themeData = - themeData.merge(BrnPairInfoTableConfig(rowSpacing: widget.rowDistance)); + themeData!.merge(BrnPairInfoTableConfig(rowSpacing: widget.rowDistance)); themeData = BrnThemeConfigurator.instance - .getConfig(configId: themeData.configId) + .getConfig(configId: themeData!.configId) .pairInfoTableConfig .merge(themeData); } @@ -211,21 +209,21 @@ class _BrnPairInfoTableState extends State { return showWidget; } - Widget _finalValueWidget(BrnInfoModal data, {double itemSpacing}) { - Widget valueWidget; + Widget _finalValueWidget(BrnInfoModal data, {double? itemSpacing}) { + Widget? valueWidget; if (data.valuePart is String) { valueWidget = _valueTitleText(data.valuePart, isValueAlign: widget.isValueAlign, isArrow: data.isArrow, - themeData: themeData); + themeData: themeData!); } else { valueWidget = data.valuePart; if (valueWidget == null) { valueWidget = Text( '--', - style: themeData.valueTextStyle?.generateTextStyle(), + style: themeData!.valueTextStyle?.generateTextStyle(), ); } } @@ -241,7 +239,7 @@ class _BrnPairInfoTableState extends State { ); } return Padding( - padding: EdgeInsets.only(left: itemSpacing ?? themeData.itemSpacing), + padding: EdgeInsets.only(left: itemSpacing ?? themeData!.itemSpacing), child: valueWidget, ); } @@ -262,8 +260,8 @@ class _BrnPairInfoTableState extends State { /// 张开状态的孩子 /// 替换最后的value 为具备收起功能的 value /// 替换index的value 为原始的value - List _generateExpandedList() { - List finalChildren = List.of(widget.children); + List _generateExpandedList() { + List finalChildren = List.of(widget.children); BrnInfoModal foldRowWidget = _expandedButtonWidget(); finalChildren[_expandAtIndex] = indexModal; finalChildren[widget.children.length - 1] = foldRowWidget; @@ -281,7 +279,7 @@ class _BrnPairInfoTableState extends State { '展开', style: TextStyle( fontSize: 14, - color: themeData.commonConfig.colorTextSecondary, + color: themeData!.commonConfig.colorTextSecondary, ), ), ), @@ -313,9 +311,9 @@ class _BrnPairInfoTableState extends State { /// 将原有的value显示替换为 stack BrnInfoModal brnMetaInfoModal = BrnInfoModal( - isArrow: indexModal.isArrow, - keyPart: indexModal.keyPart, - valuePart: indexModal.valuePart, + isArrow: indexModal!.isArrow, + keyPart: indexModal!.keyPart, + valuePart: indexModal!.valuePart, ); Container stack = Container( child: Stack( @@ -339,7 +337,7 @@ class _BrnPairInfoTableState extends State { '收起', style: TextStyle( fontSize: 14, - color: themeData.commonConfig.colorTextSecondary, + color: themeData!.commonConfig.colorTextSecondary, ), ), ), @@ -391,7 +389,7 @@ class _BrnPairInfoTableState extends State { Widget _valueTitleText(String text, {bool isValueAlign = true, bool isArrow = false, - BrnPairInfoTableConfig themeData}) { + required BrnPairInfoTableConfig themeData}) { bool isSingle; if (isArrow) { isSingle = true; @@ -420,9 +418,9 @@ mixin PairInfoPart { bool isValueAlign(); BrnPairInfoTableConfig configDefaultThemeData( - BrnPairInfoTableConfig themeData, - {double rowDistance, - double itemSpacing}) { + BrnPairInfoTableConfig? themeData, + {double? rowDistance, + double? itemSpacing}) { BrnPairInfoTableConfig defaultThemeData; defaultThemeData = themeData ?? BrnPairInfoTableConfig(); defaultThemeData = defaultThemeData.merge(BrnPairInfoTableConfig( @@ -434,8 +432,8 @@ mixin PairInfoPart { return defaultThemeData; } - Widget finalKeyWidget(BrnInfoModal data, BrnPairInfoTableConfig themeData) { - Widget keyWidget; + Widget? finalKeyWidget(BrnInfoModal data, BrnPairInfoTableConfig themeData) { + Widget? keyWidget; if (data.keyPart is String) { keyWidget = keyOrValueTitleText(true, data.keyPart.toString(), isValueAlign: isValueAlign(), @@ -448,8 +446,8 @@ mixin PairInfoPart { } Widget finalValueWidget(BrnInfoModal data, BrnPairInfoTableConfig themeData, - {double itemSpacing}) { - Widget valueWidget; + {double? itemSpacing}) { + Widget? valueWidget; if (data.valuePart is String) { valueWidget = keyOrValueTitleText(false, data.valuePart, @@ -486,7 +484,7 @@ mixin PairInfoPart { Widget keyOrValueTitleText(bool isKey, String text, {bool isValueAlign = true, bool isArrow = false, - BrnPairInfoTableConfig themeData}) { + BrnPairInfoTableConfig? themeData}) { bool isSingle; if (isArrow) { isSingle = true; @@ -510,8 +508,8 @@ mixin PairInfoPart { overflow: isSingle ? TextOverflow.ellipsis : TextOverflow.clip, maxLines: isSingle ? 1 : null, style: isKey - ? themeData.keyTextStyle?.generateTextStyle() - : themeData.valueTextStyle?.generateTextStyle(), + ? themeData!.keyTextStyle?.generateTextStyle() + : themeData!.valueTextStyle?.generateTextStyle(), ); return keyOrValue; } @@ -519,19 +517,19 @@ mixin PairInfoPart { class BrnFollowPairInfo extends StatelessWidget with PairInfoPart { /// 待展示的文本信息集合 - final List children; + final List? children; /// 每一行的间距 - final double rowDistance; + final double? rowDistance; /// key和value的间距 - final double itemSpacing; + final double? itemSpacing; - final BrnPairInfoTableConfig themeData; + final BrnPairInfoTableConfig? themeData; BrnFollowPairInfo({ - Key key, - @required this.children, + Key? key, + required this.children, this.rowDistance, this.itemSpacing, this.themeData, @@ -553,13 +551,13 @@ class BrnFollowPairInfo extends StatelessWidget with PairInfoPart { builder: (context, constraints) { return Column( crossAxisAlignment: CrossAxisAlignment.start, - children: children.map((data) { + children: children!.map((data) { index++; return Padding( padding: - EdgeInsets.only(top: (index == 0) ? 0 : themeData.rowSpacing), + EdgeInsets.only(top: (index == 0) ? 0 : themeData!.rowSpacing), child: _buildSingleInfo( - data, constraints.maxWidth / 2, defaultThemeConfig), + data!, constraints.maxWidth / 2, defaultThemeConfig), ); }).toList(), ); @@ -574,7 +572,7 @@ class BrnFollowPairInfo extends StatelessWidget with PairInfoPart { value = GestureDetector( onTap: () { if (infoModal.valueClickCallback != null) { - infoModal.valueClickCallback(); + infoModal.valueClickCallback!(); } }, child: value, @@ -603,20 +601,20 @@ class BrnFollowPairInfo extends StatelessWidget with PairInfoPart { class BrnAlignPairInfo extends StatelessWidget with PairInfoPart { /// 待展示的文本信息集合 - final List children; + final List? children; ///控件的背景色 默认为白色 - final Color backgroundColor; + final Color? backgroundColor; /// 每一行的间距 - final double rowDistance; + final double? rowDistance; /// key和value的间距 - final double itemSpacing; + final double? itemSpacing; - final TableColumnWidth customKeyWidth; + final TableColumnWidth? customKeyWidth; - final BrnPairInfoTableConfig themeData; + final BrnPairInfoTableConfig? themeData; BrnAlignPairInfo( {this.children, @@ -648,14 +646,14 @@ class BrnAlignPairInfo extends StatelessWidget with PairInfoPart { defaultVerticalAlignment: TableCellVerticalAlignment.baseline, textBaseline: TextBaseline.ideographic, columnWidths: { - 0: customKeyWidth ?? _MaxWrapTableWidth(maxWidth: maxWith), + 0: customKeyWidth ?? _MaxWrapTableWidth(maxWith), 1: FlexColumnWidth() }, border: TableBorder.all(color: Colors.transparent), - children: children.map((data) { + children: children!.map((data) { index++; return _buildSingleInfo( - data, index == children.length - 1, defaultThemeConfig); + data!, index == children!.length - 1, defaultThemeConfig); }).toList(), ); return table; @@ -677,14 +675,14 @@ class BrnAlignPairInfo extends StatelessWidget with PairInfoPart { value = GestureDetector( onTap: () { if (infoModal.valueClickCallback != null) { - infoModal.valueClickCallback(); + infoModal.valueClickCallback!(); } }, child: value, ); } return TableRow( - children: [finalKeyWidget(infoModal, defaultThemeConfig), value]); + children: [finalKeyWidget(infoModal, defaultThemeConfig)!, value]); } } @@ -705,7 +703,7 @@ class BrnInfoModal { final bool isArrow; /// value的点击回调 - final VoidCallback valueClickCallback; + final VoidCallback? valueClickCallback; BrnInfoModal( {this.keyPart, @@ -729,14 +727,14 @@ class BrnInfoModal { String keyTitle, String valueTitle, String clickValue, { - double fontSize, - double itemSpacing, - TextStyle valueTextStyle, - Function(String clickValue) clickCallback, + double? fontSize, + double? itemSpacing, + TextStyle? valueTextStyle, + Function(String? clickValue)? clickCallback, bool isArrow = false, - VoidCallback valueClickCallback, - Color linkColor, - BrnPairInfoTableConfig themeData, + VoidCallback? valueClickCallback, + Color? linkColor, + BrnPairInfoTableConfig? themeData, }) { themeData ??= BrnPairInfoTableConfig(); themeData = themeData.merge(BrnPairInfoTableConfig( @@ -824,15 +822,15 @@ class BrnInfoModal { String valueTitle, { bool keyShow = false, bool valueShow = true, - double fontSize, - double itemSpacing, - TextStyle keyTextStyle, - TextStyle valueTextStyle, - Function keyCallback, - Function valueCallback, + double? fontSize, + double? itemSpacing, + TextStyle? keyTextStyle, + TextStyle? valueTextStyle, + Function? keyCallback, + Function? valueCallback, bool isArrow = false, - VoidCallback valueClickCallback, - BrnPairInfoTableConfig themeData, + VoidCallback? valueClickCallback, + BrnPairInfoTableConfig? themeData, }) { themeData ??= BrnPairInfoTableConfig(); themeData = themeData.merge(BrnPairInfoTableConfig( @@ -966,14 +964,14 @@ class BrnInfoModal { static BrnInfoModal keyHeadIconInfo( String keyTitle, String valueTitle, { - Widget headIcon, - double fontSize, - double itemSpacing, - TextStyle keyTextStyle, - TextStyle valueTextStyle, + Widget? headIcon, + double? fontSize, + double? itemSpacing, + TextStyle? keyTextStyle, + TextStyle? valueTextStyle, bool isArrow = false, - VoidCallback valueClickCallback, - BrnPairInfoTableConfig themeData, + VoidCallback? valueClickCallback, + BrnPairInfoTableConfig? themeData, }) { themeData ??= BrnPairInfoTableConfig(); themeData = themeData.merge(BrnPairInfoTableConfig( @@ -1017,13 +1015,13 @@ class BrnInfoModal { static BrnInfoModal valueRichTextInfo( String keyTitle, String valueTitle, { - double fontSize, - double itemSpacing, - TextStyle valueTextStyle, + double? fontSize, + required double itemSpacing, + TextStyle? valueTextStyle, bool isArrow = false, - BrnHyperLinkCallback richTextLinkClick, - VoidCallback valueClickCallback, - BrnPairInfoTableConfig themeData, + BrnHyperLinkCallback? richTextLinkClick, + VoidCallback? valueClickCallback, + BrnPairInfoTableConfig? themeData, }) { themeData ??= BrnPairInfoTableConfig(); themeData = themeData.merge(BrnPairInfoTableConfig( @@ -1086,5 +1084,5 @@ class _MaxWrapTableWidth extends TableColumnWidth { return 0; } - _MaxWrapTableWidth({this.maxWidth}); + _MaxWrapTableWidth(this.maxWidth); } diff --git a/lib/src/components/card/shadow_card/brn_shadow_card.dart b/lib/src/components/card/shadow_card/brn_shadow_card.dart index 8e8f5ed2..e2969c82 100644 --- a/lib/src/components/card/shadow_card/brn_shadow_card.dart +++ b/lib/src/components/card/shadow_card/brn_shadow_card.dart @@ -1,5 +1,3 @@ -// @dart=2.9 - import 'package:bruno/src/theme/brn_theme_configurator.dart'; import 'package:flutter/material.dart'; @@ -38,10 +36,10 @@ class BrnShadowCard extends StatelessWidget { final double borderWidth; BrnShadowCard( - {@required this.child, - this.color, - this.shadowColor, - this.padding, + {required this.child, + this.color = const Color(0xfffafafa), + this.shadowColor = const Color(0xffeeeeee), + this.padding = const EdgeInsets.all(0), this.circular = 4.0, this.blurRadius = 5.0, this.spreadRadius = 0, @@ -51,18 +49,14 @@ class BrnShadowCard extends StatelessWidget { @override Widget build(BuildContext context) { double tempBorderWidth = 0; - if (this.borderWidth != null && this.borderWidth > 0) { + if (this.borderWidth > 0) { tempBorderWidth = this.borderWidth; } return Container( - padding: padding ?? EdgeInsets.all(0), - child: this.child ?? - Container( - width: 0, - height: 0, - ), + padding: padding, + child: this.child, decoration: BoxDecoration( - color: this.color ?? Color(0xfffafafa), + color: this.color, borderRadius: BorderRadius.all(Radius.circular(circular)), border: tempBorderWidth != 0 ? Border.all( @@ -74,7 +68,7 @@ class BrnShadowCard extends StatelessWidget { : Border.all(style: BorderStyle.none), boxShadow: [ BoxShadow( - color: this.shadowColor ?? Color(0xffeeeeee), + color: this.shadowColor, offset: this.offset, //阴影xy轴偏移量 blurRadius: this.blurRadius, //阴影模糊程度 spreadRadius: this.spreadRadius //阴影扩散程度