diff --git a/lib/common/widgets/segment_progress_bar.dart b/lib/common/widgets/segment_progress_bar.dart index 866c7e4b..b37c5bb1 100644 --- a/lib/common/widgets/segment_progress_bar.dart +++ b/lib/common/widgets/segment_progress_bar.dart @@ -22,7 +22,7 @@ class Segment { class SegmentProgressBar extends CustomPainter { final List segmentColors; - late double _defHeight; + double? _defHeight; SegmentProgressBar({ required this.segmentColors, @@ -42,6 +42,17 @@ class SegmentProgressBar extends CustomPainter { if (segmentColors[i].title != null) { double fontSize = 10; + _defHeight ??= (TextPainter( + text: TextSpan( + text: segmentColors[i].title, + style: TextStyle( + fontSize: fontSize, + ), + ), + textDirection: TextDirection.ltr, + )..layout()) + .height; + TextPainter getTextPainter() => TextPainter( text: TextSpan( text: segmentColors[i].title, @@ -51,14 +62,12 @@ class SegmentProgressBar extends CustomPainter { height: 1, ), ), - strutStyle: StrutStyle(height: 1, leading: 0), + strutStyle: + StrutStyle(leading: 0, height: 1, fontSize: fontSize), textDirection: TextDirection.ltr, )..layout(); TextPainter textPainter = getTextPainter(); - if (i == 0) { - _defHeight = textPainter.height; - } late double prevStart; if (i != 0) { @@ -75,7 +84,7 @@ class SegmentProgressBar extends CustomPainter { canvas.drawRect( Rect.fromLTRB( 0, - -_defHeight - 2, + -_defHeight!, size.width, 0, ), @@ -86,9 +95,9 @@ class SegmentProgressBar extends CustomPainter { canvas.drawRect( Rect.fromLTWH( segmentStart, - -_defHeight - 2, + -_defHeight!, segmentEnd == segmentStart ? 2 : segmentEnd - segmentStart, - size.height + _defHeight + 2, + size.height + _defHeight!, ), paint, ); @@ -98,7 +107,7 @@ class SegmentProgressBar extends CustomPainter { : (segmentStart - prevStart - textPainter.width) / 2 + prevStart + 1; - double textY = (-_defHeight - textPainter.height) / 2 - 1; + double textY = (-_defHeight! - textPainter.height) / 2; textPainter.paint(canvas, Offset(textX, textY)); } else { canvas.drawRect( diff --git a/lib/pages/dynamics/widgets/author_panel.dart b/lib/pages/dynamics/widgets/author_panel.dart index c0c01a77..8cf362b5 100644 --- a/lib/pages/dynamics/widgets/author_panel.dart +++ b/lib/pages/dynamics/widgets/author_panel.dart @@ -110,78 +110,84 @@ class AuthorPanel extends StatelessWidget { ) ], ), - // const Spacer(), - // if (source != 'detail' && item.modules?.moduleTag?.text != null) - // Container( - // padding: - // const EdgeInsets.symmetric(horizontal: 4, vertical: 2), - // decoration: BoxDecoration( - // color: Theme.of(context).colorScheme.surface, - // borderRadius: const BorderRadius.all(Radius.circular(4)), - // border: Border.all( - // width: 1.25, - // color: Theme.of(context).colorScheme.primary, - // ), - // ), - // child: Text( - // item.modules.moduleTag.text, - // style: TextStyle( - // height: 1, - // fontSize: 12, - // color: Theme.of(context).colorScheme.primary, - // ), - // strutStyle: const StrutStyle( - // leading: 0, - // height: 1, - // fontSize: 12, - // ), - // ), - // ), ], ), ), Align( alignment: Alignment.centerRight, - child: item.modules.moduleAuthor.decorate != null + child: source != 'detail' && item.modules?.moduleTag?.text != null ? Row( mainAxisSize: MainAxisSize.min, children: [ - // GestureDetector( - // onTap: - // item.modules.moduleAuthor.decorate['jump_url'] != null - // ? () { - // Get.toNamed( - // '/webview', - // parameters: { - // 'url': - // '${item.modules.moduleAuthor.decorate['jump_url']}' - // }, - // ); - // } - // : null, - // child: - Stack( - clipBehavior: Clip.none, - alignment: Alignment.centerRight, - children: [ - CachedNetworkImage( - height: 32, - imageUrl: - item.modules.moduleAuthor.decorate['card_url'], + Container( + padding: const EdgeInsets.symmetric( + horizontal: 4, vertical: 2), + decoration: BoxDecoration( + borderRadius: + const BorderRadius.all(Radius.circular(4)), + border: Border.all( + width: 1.25, + color: Theme.of(context).colorScheme.primary, ), - if ((item.modules.moduleAuthor.decorate?['fan'] - ?['num_str'] as String?) - ?.isNotEmpty == - true) - Padding( - padding: const EdgeInsets.only(right: 32), - child: Text( - '${item.modules.moduleAuthor.decorate['fan']['num_str']}', - style: TextStyle( - fontSize: 11, - fontFamily: 'digital_id_num', - color: - (item.modules.moduleAuthor.decorate?['fan'] + ), + child: Text( + item.modules.moduleTag.text, + style: TextStyle( + height: 1, + fontSize: 12, + color: Theme.of(context).colorScheme.primary, + ), + strutStyle: const StrutStyle( + leading: 0, + height: 1, + fontSize: 12, + ), + ), + ), + _moreWidget(context), + ], + ) + : item.modules.moduleAuthor.decorate != null + ? Row( + mainAxisSize: MainAxisSize.min, + children: [ + // GestureDetector( + // onTap: + // item.modules.moduleAuthor.decorate['jump_url'] != null + // ? () { + // Get.toNamed( + // '/webview', + // parameters: { + // 'url': + // '${item.modules.moduleAuthor.decorate['jump_url']}' + // }, + // ); + // } + // : null, + // child: + Stack( + clipBehavior: Clip.none, + alignment: Alignment.centerRight, + children: [ + CachedNetworkImage( + height: 32, + imageUrl: item + .modules.moduleAuthor.decorate['card_url'], + ), + if ((item.modules.moduleAuthor.decorate?['fan'] + ?['num_str'] as String?) + ?.isNotEmpty == + true) + Padding( + padding: const EdgeInsets.only(right: 32), + child: Text( + '${item.modules.moduleAuthor.decorate['fan']['num_str']}', + style: TextStyle( + height: 1, + fontSize: 11, + fontFamily: 'digital_id_num', + color: (item.modules.moduleAuthor + .decorate?['fan'] ?['color'] as String?) ?.startsWith('#') == true @@ -193,16 +199,16 @@ class AuthorPanel extends StatelessWidget { ), ) : null, + ), + ), ), - ), - ), + ], + ), + // ), + _moreWidget(context), ], - ), - // ), - _moreWidget(context), - ], - ) - : _moreWidget(context), + ) + : _moreWidget(context), ) ], );