style: apply dart format across project
This commit is contained in:
@@ -35,47 +35,49 @@ class ThemedText extends StatelessWidget {
|
||||
});
|
||||
|
||||
/// 배경 밝기에 따른 텍스트 색상 결정
|
||||
static Color getContrastColor(BuildContext context, {
|
||||
static Color getContrastColor(
|
||||
BuildContext context, {
|
||||
bool forceLight = false,
|
||||
bool forceDark = false,
|
||||
}) {
|
||||
if (forceLight) return AppColors.pureWhite;
|
||||
if (forceDark) return AppColors.darkNavy;
|
||||
|
||||
|
||||
final brightness = Theme.of(context).brightness;
|
||||
|
||||
|
||||
// 글래스모피즘 환경에서는 배경이 밝으므로 어두운 텍스트 사용
|
||||
if (_isGlassmorphicContext(context)) {
|
||||
return AppColors.darkNavy; // color.md 가이드: 밝은 배경 위 어두운 텍스트
|
||||
return AppColors.darkNavy; // color.md 가이드: 밝은 배경 위 어두운 텍스트
|
||||
}
|
||||
|
||||
|
||||
// 일반 환경
|
||||
return brightness == Brightness.dark
|
||||
? AppColors.pureWhite
|
||||
return brightness == Brightness.dark
|
||||
? AppColors.pureWhite
|
||||
: AppColors.darkNavy;
|
||||
}
|
||||
|
||||
/// 글래스모피즘 컨텍스트인지 확인
|
||||
static bool _isGlassmorphicContext(BuildContext context) {
|
||||
// 부모 위젯 체인에서 글래스모피즘 카드가 있는지 확인
|
||||
final glassmorphic = context.findAncestorWidgetOfExactType<GlassmorphicIndicator>();
|
||||
final glassmorphic =
|
||||
context.findAncestorWidgetOfExactType<GlassmorphicIndicator>();
|
||||
return glassmorphic != null;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final textColor = color ?? getContrastColor(
|
||||
context,
|
||||
forceLight: forceLight,
|
||||
forceDark: forceDark,
|
||||
);
|
||||
|
||||
final finalColor = opacity != null
|
||||
? textColor.withValues(alpha: opacity!)
|
||||
: textColor;
|
||||
|
||||
final textColor = color ??
|
||||
getContrastColor(
|
||||
context,
|
||||
forceLight: forceLight,
|
||||
forceDark: forceDark,
|
||||
);
|
||||
|
||||
final finalColor =
|
||||
opacity != null ? textColor.withValues(alpha: opacity!) : textColor;
|
||||
|
||||
final defaultStyle = DefaultTextStyle.of(context).style;
|
||||
|
||||
|
||||
// 개별 스타일 속성들을 병합
|
||||
final baseStyle = TextStyle(
|
||||
fontSize: fontSize,
|
||||
@@ -83,9 +85,9 @@ class ThemedText extends StatelessWidget {
|
||||
letterSpacing: letterSpacing,
|
||||
color: finalColor,
|
||||
);
|
||||
|
||||
|
||||
final effectiveStyle = defaultStyle.merge(baseStyle).merge(style);
|
||||
|
||||
|
||||
return Text(
|
||||
text,
|
||||
style: effectiveStyle,
|
||||
@@ -193,7 +195,7 @@ class GlassmorphicIndicator extends InheritedWidget {
|
||||
/// 글래스모피즘 환경에서 텍스트 색상을 자동 조정하는 래퍼
|
||||
class GlassmorphicTextWrapper extends StatelessWidget {
|
||||
final Widget child;
|
||||
|
||||
|
||||
const GlassmorphicTextWrapper({
|
||||
super.key,
|
||||
required this.child,
|
||||
@@ -204,10 +206,10 @@ class GlassmorphicTextWrapper extends StatelessWidget {
|
||||
return GlassmorphicIndicator(
|
||||
child: DefaultTextStyle(
|
||||
style: DefaultTextStyle.of(context).style.copyWith(
|
||||
color: ThemedText.getContrastColor(context),
|
||||
),
|
||||
color: ThemedText.getContrastColor(context),
|
||||
),
|
||||
child: child,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user