feat: adopt material 3 theme and billing adjustments
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import '../../../theme/app_colors.dart';
|
||||
|
||||
/// 주요 액션에 사용되는 Primary 버튼
|
||||
/// 저장, 추가, 확인 등의 주요 액션에 사용됩니다.
|
||||
@@ -44,26 +43,30 @@ class _PrimaryButtonState extends State<PrimaryButton> {
|
||||
Widget build(BuildContext context) {
|
||||
final theme = Theme.of(context);
|
||||
final effectiveBackgroundColor =
|
||||
widget.backgroundColor ?? theme.primaryColor;
|
||||
widget.backgroundColor ?? theme.colorScheme.primary;
|
||||
final effectiveForegroundColor =
|
||||
widget.foregroundColor ?? AppColors.pureWhite;
|
||||
widget.foregroundColor ?? theme.colorScheme.onPrimary;
|
||||
|
||||
Widget button = AnimatedContainer(
|
||||
duration: const Duration(milliseconds: 200),
|
||||
width: widget.width ?? double.infinity,
|
||||
height: widget.height,
|
||||
transform: widget.enableHoverEffect && _isHovered
|
||||
? (Matrix4.identity()..scale(1.02))
|
||||
? Matrix4.diagonal3Values(1.02, 1.02, 1.0)
|
||||
: Matrix4.identity(),
|
||||
child: ElevatedButton(
|
||||
onPressed: widget.isLoading ? null : widget.onPressed,
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: effectiveBackgroundColor,
|
||||
foregroundColor: effectiveForegroundColor,
|
||||
// 고정 높이와 텍스트 잘림 방지를 위해 최소 사이즈 지정
|
||||
minimumSize: Size.fromHeight(widget.height),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(widget.borderRadius),
|
||||
),
|
||||
padding: widget.padding ?? const EdgeInsets.symmetric(vertical: 16),
|
||||
// 컨테이너에서 높이를 관리하므로 수직 패딩은 0으로 두고
|
||||
// 수평 여백만 부여하여 작은 높이(예: 48)에서 글자 잘림 방지
|
||||
padding: widget.padding ?? const EdgeInsets.symmetric(horizontal: 16),
|
||||
elevation: widget.enableHoverEffect && _isHovered ? 2 : 0,
|
||||
shadowColor: Colors.black.withValues(alpha: 0.08),
|
||||
disabledBackgroundColor:
|
||||
|
||||
Reference in New Issue
Block a user