Files
ReelShort/lib/core/theme/app_dimens.dart
T

306 lines
13 KiB
Dart

// Author: fruit.com.cn
/// 跨页面复用的间距、字号、圆角和控件尺寸。
abstract final class AppDimens {
static const double spaceXs = 4;
static const double spaceSm = 8;
static const double spaceMd = 12;
static const double spaceLg = 16;
static const double spaceXl = 24;
static const double pageHorizontal = 16;
static const double cardRadius = 12;
static const double authCardRadius = 12;
static const double cardPadding = 16;
static const double innerRadius = 10;
static const double innerPadding = 12;
static const double pillRadius = 999;
static const double glassSmallRadius = 12;
static const double glassRadius = 12;
static const double glassCardRadius = 12;
static const double buttonRadius = 10;
static const double inputRadius = 10;
static const double chipRadius = 6;
static const double coverRadius = 12;
static const double sheetRadius = 12;
static const double caption = 12;
static const double emptyStateSubtitle = 12.5;
static const double emptyStateAction = 13;
static const double body = 14;
static const double listTitle = 15;
static const double sectionTitle = 16;
static const double pageTitle = 20;
static const double detailHeadline = 24;
static const double detailHeadlineSmall = 18;
static const double previewCardTitle = 13;
static const double previewSectionTitle = 14;
static const double chipFont = 10;
static const double navLabel = 13;
static const double navLabelGap = 1;
static const double buttonHeight = 48;
static const double primaryButtonHeight = 52;
static const double buttonCompact = 32;
static const double buttonSmall = 34;
static const double buttonMedium = 40;
static const double buttonLarge = 44;
static const double tapTarget = 44;
static const double contentHeaderHeight = 46;
static const double navHeight = 62;
static const double navIcon = 30;
static const double progressHeight = 3;
static const double progressRadius = 2;
static const double progressLineHeight = 3;
static const double refreshIndicatorSize = 40;
static const double refreshIndicatorRadius = 20;
static const double refreshSpinnerSize = 20;
static const double refreshSpinnerStroke = 2;
static const double loadMoreIndicatorHeight = 40;
static const double searchHeight = 40;
static const double searchRadius = 8;
static const double searchPlaceholderFont = 13;
static const double searchResultGap = 12;
static const double searchResultRowGap = 16;
static const double searchResultTitleGap = 8;
static const double searchResultMetaGap = 6;
static const double searchResultMetaFont = 12;
static const double searchResultTextExtent = 68;
static const double navDot = 3;
static const double glassBlur = 24;
static const double accountCardHeight = 64;
static const double accountIcon = 18;
static const double accountLabel = 11;
static const double watchPlaceholderHeight = 114;
static const double heroBannerHeight = 240;
static const double heroBannerRadius = 12;
static const double heroTitle = 28;
static const double heroSubtitle = 14;
static const double cardMeta = 12;
static const double cardViews = 11;
static const double cardTitle = 15;
static const double cardShadowBlur = 0;
static const double cardShadowY = 0;
/// 首页探索网格。
static const double feedPageHorizontal = 14;
static const double homeGridGap = 6;
static const double homeGridRowGap = 10;
static const double homeCardRadius = 6;
static const double cardCoverRadius = 8;
static const double homeCardPadding = 8;
static const double cardTitleFont = 15;
static const double cardTitleLineHeight = 1.3;
static const double cardViewsFont = 11;
static const double cardViewsIcon = 11;
static const double cardPlayCountFont = 12;
static const double cardPlayCountGap = 4;
static const double cardPlayCountBottom = 2;
static const double cardPlayCountRight = 6;
static const double cardPlayCountScrimHeight = 32;
static const double cardGenreRibbonHeight = 16;
static const double cardGenreRibbonLeftInset = 4;
static const double coverBadgeRibbonHorizontalPadding = 4;
static const double cardTagFont = 11;
static const double cardBadgeFont = 9;
static const double cardCoverTitleGap = 6;
static const double cardTitleTagGap = 6;
static const double skeletonBarHeight = 10;
static const double skeletonBarRadius = 4;
static const double skeletonBarGap = 4;
static const double skeletonTitleBarGap = 3;
static const double skeletonBodyExtent = 34;
static const double cardCoverAspectRatio = 3 / 4;
static const double homeCardBodyExtent = 84;
static const double homePrimaryTabFont = 18;
static const double homePrimaryTabSelectedFont = 20;
static const double homePrimaryRowHeight = 30;
static const Duration homePrimaryTabAnimationDuration = Duration(
milliseconds: 180,
);
static const double homeSecondaryTagFont = 15;
static const double homeSecondaryTagHeight = 26;
static const double homeSecondaryTagHorizontalPadding = 8;
static const double homeSecondaryTagRadius = 13;
static const Duration homeSecondaryTagAnimationDuration = Duration(
milliseconds: 150,
);
static const double homeSecondaryFilterGap = 6;
static const double homeSecondaryFilterVisualSize = 26;
static const double homeSecondaryFilterIcon = 16;
static const double homeSecondaryFilterStroke = 1.7;
static const double homePrimaryCategoryGap = 24;
static const double homeSecondaryTagGap = 10;
static const double homeSearchTopGap = 0;
static const double homeSearchPrimaryGap = 8;
static const double homePrimarySecondaryGap = 8;
static const double homeSecondaryGridGap = 10;
static const double homeHeaderIcon = 22;
static const double homeActionSlot = tapTarget;
static const double homeActionIcon = 30;
static const double homeActionGap = 6;
/// 推荐分区。
static const double recommendSectionGap = 12;
static const double recommendSectionTitle = 17;
static const double recommendSectionSubtitle = 11;
static const double recommendSectionMore = 12;
// 封面 122*(4/3)≈163 + 间距6 + 两行标题≈42 + 间距6 + 标签≈13 ≈ 230,留 6 余量。
static const double recommendRowHeight = 236;
static const double recommendCardWidth = 122;
/// 首页热播榜。
static const double rankingHeroTitle = 22;
static const double rankingHeroSubtitle = 11;
static const double rankingCoverRadius = 6;
static const double rankingCardCoverWidth = 96;
static const double rankingCardCoverHeight = 128;
/// 全部短剧筛选与追剧双列。
static const double filterChipFont = 16;
static const double filterChipHeight = 28;
static const double filterChipRadius = 14;
static const double filterChipHorizontalPadding = 12;
static const double filterRowGap = 6;
static const double filterItemGap = 10;
static const double allDramasHorizontal = 12;
static const double allDramasGridGap = 6;
static const double allDramasGridRowGap = 6;
static const double allDramasFilterToGridGap = 12;
static const double followingHeaderHeight = 52;
static const double followingTabFont = 18;
static const double followingTabGap = 24;
static const double followingEditIconSize = 20;
static const double followingEditHitSize = tapTarget;
static const double followingAddIconSize = 20;
static const double followingAddIconStroke = 1.5;
static const double followingGridGap = 6;
static const double followingGridRowGap = 12;
/// 追剧网格卡文字区:间距 6 + 两行剧名 16*1.3*2=41.6 ≈ 48,留 4 余量。
static const double followingCardTextExtent = 52;
static const double followingSubtitleFont = 12;
static const double followingSubtitleGap = 4;
static const double followingProgressHeight = 2;
static const double followingHistoryCoverWidth = 96;
static const double followingHistoryCoverHeight = 128;
static const double followingHistoryCoverRadius = 6;
static const double followingHistoryContentGap = 12;
static const double followingHistoryRowGap = 16;
static const double followingHistoryProgressHeight = 3;
static const double followingHistoryProgressRadius = 2;
static const double followingHistoryProgressGap = 8;
static const double followingHistoryLabelGap = 4;
static const double followingHistoryActionHeight = 28;
/// 追剧页新版头部与收藏布局。
static const double followingTitleFont = 26;
static const double followingTitleRowHeight = 42;
static const double followingTitleTopGap = 8;
static const double followingSearchIcon = 26;
static const double followingManageFont = 16;
static const double followingHeaderActionGap = 8;
static const double followingSegmentFont = 16;
static const double followingSegmentGap = 28;
static const double followingSegmentRowHeight = 42;
static const double followingSegmentIndicatorWidth = 24;
static const double followingSegmentIndicatorHeight = 3;
static const double followingSegmentIndicatorRadius = 2;
static const double followingSegmentIndicatorTopGap = 6;
static const double followingBannerHeight = 176;
static const double followingBannerRadius = 16;
static const double followingBannerEdgeGap = 16;
static const double followingBannerInnerGap = 16;
static const double followingBannerTitleFont = 22;
static const double followingBannerSubtitleFont = 13;
static const double followingBannerMetaGap = 8;
static const double followingBannerButtonHeight = 40;
static const double followingBannerButtonRadius = 20;
static const double followingBannerButtonFont = 15;
static const double followingBannerButtonIcon = 18;
static const double followingBannerButtonGap = 6;
static const double followingBannerButtonHorizontalPadding = 20;
static const double followingBannerButtonTopGap = 14;
static const double followingBannerProgressHeight = 3;
static const double followingSectionTitleFont = 16;
static const double followingSectionCountFont = 13;
static const double followingSectionTopGap = 20;
static const double followingSectionBottomGap = 12;
static const double followingCardTitleFontNew = 16;
static const double followingCardSubtitleFontNew = 13;
static const double followingBadgeFont = 11;
static const double followingBadgeRadius = 6;
static const double followingBadgeInset = 8;
static const double followingBadgePaddingH = 8;
static const double followingBadgePaddingV = 3;
static const Duration followingTabAnimationDuration = Duration(
milliseconds: 180,
);
static const Duration followingPageAnimationDuration = Duration(
milliseconds: 220,
);
/// 「我的」页中性视觉。
static const double mineCardRadius = 16;
static const double mineSectionTitle = 15;
static const double mineAvatar = 64;
static const double mineUserName = 24;
static const double mineUserNameLineHeight = 1.15;
static const double mineUserNameUidGap = 2;
static const double mineUid = 12;
static const double mineUidRowHeight = 16;
static const double mineCopyIcon = 14;
static const double mineGridHorizontal = 14;
static const double mineGridRadius = 12;
static const double mineGridCellHeight = 96;
static const double mineGridIconSurface = 44;
static const double mineGridIcon = 22;
static const double mineGridLabel = 12;
static const double mineGridLabelLineHeight = 1.15;
static const double mineGridDividerWidth = 1;
/// 宫格内部分隔线:0.5pt 发丝线,深色底上比 1pt 更轻。
static const double mineGridHairline = 0.5;
static const int mineGridRows = 2;
static const double mineGridHeight =
mineGridCellHeight * mineGridRows + mineGridHairline;
static const double mineSectionTitleFont = 16;
static const double mineSectionLinkFont = 12;
static const double mineSectionGap = 12;
/// 「我的」页会员卡。高度由内容撑开,上下内边距恒为 [mineVipPadding]。
static const double mineVipRadius = 18;
static const double mineVipPadding = 16;
static const double mineVipTitleFont = 22;
static const double mineVipSubtitleFont = 12;
static const double mineVipEmblem = 48;
static const double mineVipEmblemIcon = 28;
static const double mineVipActionWidth = 100;
static const double mineVipBenefitFont = 10.5;
static const double mineVipBenefitBox = 34;
static const double mineVipBenefitBoxRadius = 11;
static const double mineVipBenefitGlyph = 19;
static const double mineVipBenefitRowGap = 6;
static const double mineVipButtonHeight = tapTarget;
static const double mineContinueCardWidth = 96;
static const double mineContinueRowHeight = 172;
static const double mineContinueTitleFont = 13;
static const double mineContinueMetaFont = 11;
static const double mineStatsValueFont = 24;
static const double mineStatsLabelFont = 12;
static const double mineStatsIcon = 42;
static const double mineStatsMinHeight = 104;
static const double mineStatsDividerHeight = 32;
static const double mineStatsDividerWidth = 0.5;
static const double mineStatsValueLineHeight = 1.1;
static const double mineStatsLabelLineHeight = 1.25;
static const double minePanelPadding = 12;
static const double mineMoreRowHeight = 52;
static const double mineMoreFont = 15;
}