Refactor screens to MVC architecture with modular widgets
- Extract business logic from screens into dedicated controllers - Split large screen files into smaller, reusable widget components - Add controllers for AddSubscriptionScreen and DetailScreen - Create modular widgets for subscription and detail features - Improve code organization and maintainability - Remove duplicated code and improve reusability 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import '../providers/subscription_provider.dart';
|
||||
import '../providers/app_lock_provider.dart';
|
||||
import '../providers/navigation_provider.dart';
|
||||
import '../theme/app_colors.dart';
|
||||
@@ -13,7 +12,6 @@ import 'sms_scan_screen.dart';
|
||||
import '../utils/animation_controller_helper.dart';
|
||||
import '../widgets/floating_navigation_bar.dart';
|
||||
import '../widgets/glassmorphic_scaffold.dart';
|
||||
import '../widgets/glassmorphic_app_bar.dart';
|
||||
import '../widgets/home_content.dart';
|
||||
|
||||
class MainScreen extends StatefulWidget {
|
||||
@@ -33,7 +31,6 @@ class _MainScreenState extends State<MainScreen>
|
||||
late AnimationController _waveController;
|
||||
late ScrollController _scrollController;
|
||||
late FloatingNavBarScrollController _navBarScrollController;
|
||||
bool _isNavBarVisible = true;
|
||||
|
||||
// 화면 목록
|
||||
late final List<Widget> _screens;
|
||||
@@ -67,8 +64,8 @@ class _MainScreenState extends State<MainScreen>
|
||||
|
||||
_navBarScrollController = FloatingNavBarScrollController(
|
||||
scrollController: _scrollController,
|
||||
onHide: () => setState(() => _isNavBarVisible = false),
|
||||
onShow: () => setState(() => _isNavBarVisible = true),
|
||||
onHide: () {},
|
||||
onShow: () {},
|
||||
);
|
||||
|
||||
// 화면 목록 초기화
|
||||
@@ -162,17 +159,18 @@ class _MainScreenState extends State<MainScreen>
|
||||
// 구독이 성공적으로 추가된 경우
|
||||
if (result == true) {
|
||||
// 상단에 스낵바 표시
|
||||
if (!context.mounted) return;
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Row(
|
||||
content: const Row(
|
||||
children: [
|
||||
const Icon(
|
||||
Icon(
|
||||
Icons.check_circle,
|
||||
color: Colors.white,
|
||||
size: 20,
|
||||
),
|
||||
const SizedBox(width: 12),
|
||||
const Text(
|
||||
SizedBox(width: 12),
|
||||
Text(
|
||||
'구독이 추가되었습니다',
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
|
||||
Reference in New Issue
Block a user