Major UI/UX and architecture improvements
- Implemented new navigation system with NavigationProvider and route management - Added adaptive theme system with ThemeProvider for better theme handling - Introduced glassmorphism design elements (app bars, scaffolds, cards) - Added advanced animations (spring animations, page transitions, staggered lists) - Implemented performance optimizations (memory manager, lazy loading) - Refactored Analysis screen into modular components - Added floating navigation bar with haptic feedback - Improved subscription cards with swipe actions - Enhanced skeleton loading with better animations - Added cached network image support - Improved overall app architecture and code organization 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -385,7 +385,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
return LinearGradient(
|
||||
colors: [
|
||||
baseColor,
|
||||
baseColor.withOpacity(0.7),
|
||||
baseColor.withValues(alpha: 0.7),
|
||||
],
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.bottomRight,
|
||||
@@ -628,11 +628,11 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
preferredSize: const Size.fromHeight(60),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white.withOpacity(appBarOpacity),
|
||||
color: Colors.white.withValues(alpha: appBarOpacity),
|
||||
boxShadow: appBarOpacity > 0.6
|
||||
? [
|
||||
BoxShadow(
|
||||
color: Colors.black.withOpacity(0.1 * appBarOpacity),
|
||||
color: Colors.black.withValues(alpha: 0.1 * appBarOpacity),
|
||||
spreadRadius: 1,
|
||||
blurRadius: 8,
|
||||
offset: const Offset(0, 4),
|
||||
@@ -653,7 +653,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
shadows: appBarOpacity > 0.6
|
||||
? [
|
||||
Shadow(
|
||||
color: Colors.black.withOpacity(0.2),
|
||||
color: Colors.black.withValues(alpha: 0.2),
|
||||
offset: const Offset(0, 1),
|
||||
blurRadius: 2,
|
||||
)
|
||||
@@ -746,7 +746,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
tag: 'subscription_${widget.subscription.id}',
|
||||
child: Card(
|
||||
elevation: 8,
|
||||
shadowColor: baseColor.withOpacity(0.4),
|
||||
shadowColor: baseColor.withValues(alpha: 0.4),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(24),
|
||||
),
|
||||
@@ -760,7 +760,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.bottomRight,
|
||||
colors: [
|
||||
baseColor.withOpacity(0.8),
|
||||
baseColor.withValues(alpha: 0.8),
|
||||
baseColor,
|
||||
],
|
||||
),
|
||||
@@ -787,7 +787,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.black
|
||||
.withOpacity(0.1),
|
||||
.withValues(alpha: 0.1),
|
||||
blurRadius: 10,
|
||||
spreadRadius: 0,
|
||||
),
|
||||
@@ -834,7 +834,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color:
|
||||
Colors.white.withOpacity(0.8),
|
||||
Colors.white.withValues(alpha: 0.8),
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -846,7 +846,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
Container(
|
||||
padding: const EdgeInsets.all(16),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white.withOpacity(0.15),
|
||||
color: Colors.white.withValues(alpha: 0.15),
|
||||
borderRadius: BorderRadius.circular(16),
|
||||
),
|
||||
child: Row(
|
||||
@@ -863,7 +863,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w500,
|
||||
color:
|
||||
Colors.white.withOpacity(0.8),
|
||||
Colors.white.withValues(alpha: 0.8),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 4),
|
||||
@@ -889,7 +889,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w500,
|
||||
color:
|
||||
Colors.white.withOpacity(0.8),
|
||||
Colors.white.withValues(alpha: 0.8),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 4),
|
||||
@@ -924,10 +924,10 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
color: const Color(0xFFDC2626)
|
||||
.withOpacity(0.2),
|
||||
.withValues(alpha: 0.2),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
border: Border.all(
|
||||
color: Colors.white.withOpacity(0.3),
|
||||
color: Colors.white.withValues(alpha: 0.3),
|
||||
width: 1,
|
||||
),
|
||||
),
|
||||
@@ -1015,7 +1015,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(16),
|
||||
color: _currentEditingField == 0
|
||||
? baseColor.withOpacity(0.1)
|
||||
? baseColor.withValues(alpha: 0.1)
|
||||
: Colors.transparent,
|
||||
),
|
||||
padding: const EdgeInsets.all(8),
|
||||
@@ -1053,7 +1053,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
border: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
borderSide: BorderSide(
|
||||
color: Colors.grey.withOpacity(0.2),
|
||||
color: Colors.grey.withValues(alpha: 0.2),
|
||||
),
|
||||
),
|
||||
focusedBorder: OutlineInputBorder(
|
||||
@@ -1080,7 +1080,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(16),
|
||||
color: _currentEditingField == 1
|
||||
? baseColor.withOpacity(0.1)
|
||||
? baseColor.withValues(alpha: 0.1)
|
||||
: Colors.transparent,
|
||||
),
|
||||
padding: const EdgeInsets.all(8),
|
||||
@@ -1181,7 +1181,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
BorderRadius.circular(12),
|
||||
borderSide: BorderSide(
|
||||
color:
|
||||
Colors.grey.withOpacity(0.2),
|
||||
Colors.grey.withValues(alpha: 0.2),
|
||||
),
|
||||
),
|
||||
focusedBorder: OutlineInputBorder(
|
||||
@@ -1238,7 +1238,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
border: Border.all(
|
||||
color: _currentEditingField == 1
|
||||
? baseColor
|
||||
: Colors.grey.withOpacity(
|
||||
: Colors.grey.withValues(alpha:
|
||||
0.4), // 포커스 없을 때 더 진한 회색
|
||||
width: _currentEditingField == 1
|
||||
? 2
|
||||
@@ -1256,7 +1256,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
border: Border(
|
||||
right: BorderSide(
|
||||
color: Colors.grey
|
||||
.withOpacity(0.2),
|
||||
.withValues(alpha: 0.2),
|
||||
width: 1,
|
||||
),
|
||||
),
|
||||
@@ -1508,7 +1508,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(16),
|
||||
color: _currentEditingField == 2
|
||||
? baseColor.withOpacity(0.1)
|
||||
? baseColor.withValues(alpha: 0.1)
|
||||
: Colors.transparent,
|
||||
),
|
||||
padding: const EdgeInsets.all(8),
|
||||
@@ -1545,7 +1545,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
border: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
borderSide: BorderSide(
|
||||
color: Colors.grey.withOpacity(0.2),
|
||||
color: Colors.grey.withValues(alpha: 0.2),
|
||||
),
|
||||
),
|
||||
focusedBorder: OutlineInputBorder(
|
||||
@@ -1584,7 +1584,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(16),
|
||||
color: _currentEditingField == 3
|
||||
? baseColor.withOpacity(0.1)
|
||||
? baseColor.withValues(alpha: 0.1)
|
||||
: Colors.transparent,
|
||||
),
|
||||
padding: const EdgeInsets.all(8),
|
||||
@@ -1642,7 +1642,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
padding: const EdgeInsets.all(16),
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(
|
||||
color: Colors.grey.withOpacity(0.2),
|
||||
color: Colors.grey.withValues(alpha: 0.2),
|
||||
),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
color: Colors.white,
|
||||
@@ -1678,7 +1678,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(16),
|
||||
color: _currentEditingField == 4
|
||||
? baseColor.withOpacity(0.1)
|
||||
? baseColor.withValues(alpha: 0.1)
|
||||
: Colors.transparent,
|
||||
),
|
||||
padding: const EdgeInsets.all(8),
|
||||
@@ -1716,7 +1716,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
border: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
borderSide: BorderSide(
|
||||
color: Colors.grey.withOpacity(0.2),
|
||||
color: Colors.grey.withValues(alpha: 0.2),
|
||||
),
|
||||
),
|
||||
focusedBorder: OutlineInputBorder(
|
||||
@@ -1748,7 +1748,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(16),
|
||||
color: _currentEditingField == 5
|
||||
? baseColor.withOpacity(0.1)
|
||||
? baseColor.withValues(alpha: 0.1)
|
||||
: Colors.transparent,
|
||||
),
|
||||
padding: const EdgeInsets.all(8),
|
||||
@@ -1776,7 +1776,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(
|
||||
color: Colors.grey.withOpacity(0.2),
|
||||
color: Colors.grey.withValues(alpha: 0.2),
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(12),
|
||||
@@ -1827,7 +1827,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
borderRadius:
|
||||
BorderRadius.circular(12),
|
||||
borderSide: BorderSide(
|
||||
color: Colors.grey.withOpacity(0.2),
|
||||
color: Colors.grey.withValues(alpha: 0.2),
|
||||
),
|
||||
),
|
||||
focusedBorder: OutlineInputBorder(
|
||||
@@ -1900,7 +1900,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
border: Border.all(
|
||||
color: _isEventActive
|
||||
? baseColor
|
||||
: Colors.grey.withOpacity(0.2),
|
||||
: Colors.grey.withValues(alpha: 0.2),
|
||||
width: _isEventActive ? 2 : 1,
|
||||
),
|
||||
),
|
||||
@@ -1990,7 +1990,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
child: Container(
|
||||
padding: const EdgeInsets.all(12),
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(color: Colors.grey.withOpacity(0.3)),
|
||||
border: Border.all(color: Colors.grey.withValues(alpha: 0.3)),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
),
|
||||
child: Column(
|
||||
@@ -2054,7 +2054,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
child: Container(
|
||||
padding: const EdgeInsets.all(12),
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(color: Colors.grey.withOpacity(0.3)),
|
||||
border: Border.all(color: Colors.grey.withValues(alpha: 0.3)),
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
),
|
||||
child: Column(
|
||||
@@ -2118,7 +2118,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
border: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
borderSide: BorderSide(
|
||||
color: Colors.grey.withOpacity(0.2),
|
||||
color: Colors.grey.withValues(alpha: 0.2),
|
||||
),
|
||||
),
|
||||
focusedBorder: OutlineInputBorder(
|
||||
@@ -2196,7 +2196,7 @@ class _DetailScreenState extends State<DetailScreen>
|
||||
),
|
||||
padding: const EdgeInsets.symmetric(vertical: 16),
|
||||
elevation: _isSaveHovered ? 8 : 4,
|
||||
shadowColor: baseColor.withOpacity(0.5),
|
||||
shadowColor: baseColor.withValues(alpha: 0.5),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
|
||||
Reference in New Issue
Block a user