// 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 rankingPodiumChampionWidth = 110; static const double rankingPodiumChampionHeight = 146; static const double rankingPodiumWidth = 92; static const double rankingPodiumHeight = 122; static const double rankingPodiumRadius = 10; static const double rankingRowHeight = 96; static const double rankingNumberWidth = 56; static const double rankingNumberFont = 48; static const double rankingCoverWidth = 60; static const double rankingCoverHeight = 80; static const double rankingCoverRadius = 6; /// 全部短剧筛选与追剧双列。 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; }