diff --git a/README.md b/README.md
index a6113067..4188f052 100644
Binary files a/README.md and b/README.md differ
diff --git a/android/app/src/main/res/drawable-v21/background.png b/android/app/src/main/res/drawable-v21/background.png
index 3107d37f..dca88f68 100644
Binary files a/android/app/src/main/res/drawable-v21/background.png and b/android/app/src/main/res/drawable-v21/background.png differ
diff --git a/android/app/src/main/res/drawable/background.png b/android/app/src/main/res/drawable/background.png
index 3107d37f..dca88f68 100644
Binary files a/android/app/src/main/res/drawable/background.png and b/android/app/src/main/res/drawable/background.png differ
diff --git a/assets/image/bank/bank_investment.png b/assets/image/bank/bank_investment.png
new file mode 100644
index 00000000..6ac36ea3
Binary files /dev/null and b/assets/image/bank/bank_investment.png differ
diff --git a/assets/image/bank/bank_kakao.png b/assets/image/bank/bank_kakao.png
new file mode 100644
index 00000000..2e9228b2
Binary files /dev/null and b/assets/image/bank/bank_kakao.png differ
diff --git a/assets/image/bank/bank_shinhan.png b/assets/image/bank/bank_shinhan.png
new file mode 100644
index 00000000..7a302522
Binary files /dev/null and b/assets/image/bank/bank_shinhan.png differ
diff --git a/assets/image/bank/bank_toss.png b/assets/image/bank/bank_toss.png
new file mode 100644
index 00000000..cd22f8dc
Binary files /dev/null and b/assets/image/bank/bank_toss.png differ
diff --git a/assets/image/benefit/benefit_01.png b/assets/image/benefit/benefit_01.png
new file mode 100644
index 00000000..9dfc7c6d
Binary files /dev/null and b/assets/image/benefit/benefit_01.png differ
diff --git a/assets/image/benefit/benefit_02.png b/assets/image/benefit/benefit_02.png
new file mode 100644
index 00000000..141d3c62
Binary files /dev/null and b/assets/image/benefit/benefit_02.png differ
diff --git a/assets/image/benefit/benefit_03.png b/assets/image/benefit/benefit_03.png
new file mode 100644
index 00000000..14353b1e
Binary files /dev/null and b/assets/image/benefit/benefit_03.png differ
diff --git a/assets/image/benefit/benefit_04.png b/assets/image/benefit/benefit_04.png
new file mode 100644
index 00000000..1054dbaa
Binary files /dev/null and b/assets/image/benefit/benefit_04.png differ
diff --git a/assets/image/benefit/benefit_05.png b/assets/image/benefit/benefit_05.png
new file mode 100644
index 00000000..eb86b608
Binary files /dev/null and b/assets/image/benefit/benefit_05.png differ
diff --git a/assets/image/icon/map_point.png b/assets/image/icon/map_point.png
new file mode 100644
index 00000000..71a68f3e
Binary files /dev/null and b/assets/image/icon/map_point.png differ
diff --git a/assets/image/icon/notification.png b/assets/image/icon/notification.png
new file mode 100644
index 00000000..e03cebb2
Binary files /dev/null and b/assets/image/icon/notification.png differ
diff --git a/assets/image/icon/plus.png b/assets/image/icon/plus.png
new file mode 100644
index 00000000..1f7cbd45
Binary files /dev/null and b/assets/image/icon/plus.png differ
diff --git a/assets/image/icon/setting.png b/assets/image/icon/setting.png
new file mode 100644
index 00000000..da965362
Binary files /dev/null and b/assets/image/icon/setting.png differ
diff --git a/assets/image/icon/stock_calendar.png b/assets/image/icon/stock_calendar.png
new file mode 100644
index 00000000..c7eab8a2
Binary files /dev/null and b/assets/image/icon/stock_calendar.png differ
diff --git a/assets/image/icon/stock_search.png b/assets/image/icon/stock_search.png
new file mode 100644
index 00000000..d4d04997
Binary files /dev/null and b/assets/image/icon/stock_search.png differ
diff --git a/assets/image/icon/stock_settings.png b/assets/image/icon/stock_settings.png
new file mode 100644
index 00000000..10019558
Binary files /dev/null and b/assets/image/icon/stock_settings.png differ
diff --git a/assets/image/icon/toss.png b/assets/image/icon/toss.png
new file mode 100644
index 00000000..61645a4a
Binary files /dev/null and b/assets/image/icon/toss.png differ
diff --git a/assets/image/splash/android12splash.png b/assets/image/splash/android12splash.png
new file mode 100644
index 00000000..218f95ce
Binary files /dev/null and b/assets/image/splash/android12splash.png differ
diff --git a/assets/image/splash/splash.png b/assets/image/splash/splash.png
new file mode 100644
index 00000000..09c719cd
Binary files /dev/null and b/assets/image/splash/splash.png differ
diff --git a/flutter_native_splash.yaml b/flutter_native_splash.yaml
index 15c7dc30..893a45e7 100644
--- a/flutter_native_splash.yaml
+++ b/flutter_native_splash.yaml
@@ -10,7 +10,7 @@ flutter_native_splash:
# of your splash screen to a solid color. Use background_image to set the background of your
# splash screen to a png image. This is useful for gradients. The image will be stretch to the
# size of the app. Only one parameter can be used, color and background_image cannot both be set.
- color: "#ffffff"
+ color: "#0a0a0e"
#background_image: "assets/background.png"
# Optional parameters are listed below. To enable a parameter, uncomment the line by removing
@@ -18,7 +18,7 @@ flutter_native_splash:
# The image parameter allows you to specify an image used in the splash screen. It must be a
# png file and should be sized for 4x pixel density.
- #image: assets/splash.png
+ image: assets/image/splash/splash.png
# The branding property allows you to specify an image used as branding in the splash screen.
# It must be a png file. It is supported for Android, iOS and the Web. For Android 12,
@@ -50,10 +50,10 @@ flutter_native_splash:
# 640 pixels in diameter.
# App icon without an icon background: This should be 1152×1152 pixels, and fit within a circle
# 768 pixels in diameter.
- #image: assets/android12splash.png
+ image: assets/image/splash/android12splash.png
# Splash screen background color.
- #color: "#42a5f5"
+ color: "#0a0a0e"
# App icon background color.
#icon_background_color: "#111111"
diff --git a/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png
index 3107d37f..dca88f68 100644
Binary files a/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png and b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png differ
diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
index 71e9c817..f1f33c86 100644
Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ
diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
index 71e9c817..aa6f275f 100644
Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
index 71e9c817..71d43bb3 100644
Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ
diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard
index 55c0caed..d88ac8ad 100644
--- a/ios/Runner/Base.lproj/LaunchScreen.storyboard
+++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard
@@ -38,7 +38,7 @@
-
+
diff --git a/lib/app.dart b/lib/app.dart
index 56e34a07..6aebbe0b 100644
--- a/lib/app.dart
+++ b/lib/app.dart
@@ -9,7 +9,7 @@ class App extends StatefulWidget {
static final GlobalKey navigatorKey = GlobalKey();
///light, dark 테마가 준비되었고, 시스템 테마를 따라가게 하려면 해당 필드를 제거 하시면 됩니다.
- static const defaultTheme = CustomTheme.light;
+ static const defaultTheme = CustomTheme.dark;
static bool isForeground = true;
const App({super.key});
diff --git a/lib/common/common.dart b/lib/common/common.dart
index ed0350d8..dc24c6e2 100644
--- a/lib/common/common.dart
+++ b/lib/common/common.dart
@@ -23,6 +23,8 @@ export 'widget/w_empty_expanded.dart';
export 'widget/w_height_and_width.dart';
export 'widget/w_line.dart';
export 'widget/w_tap.dart';
+export 'theme/color/abs_theme_colors.dart';
+export 'theme/shadows/abs_theme_shadows.dart';
const defaultFontStyle = GoogleFonts.ptSerif;
diff --git a/lib/common/constants.dart b/lib/common/constants.dart
index f175db21..740a4faf 100644
--- a/lib/common/constants.dart
+++ b/lib/common/constants.dart
@@ -1,4 +1 @@
-export 'theme/color/abs_theme_colors.dart';
-export 'theme/shadows/abs_theme_shadows.dart';
-
const basePath = 'assets/image';
diff --git a/lib/common/theme/color/abs_theme_colors.dart b/lib/common/theme/color/abs_theme_colors.dart
index de9a3017..029a2270 100644
--- a/lib/common/theme/color/abs_theme_colors.dart
+++ b/lib/common/theme/color/abs_theme_colors.dart
@@ -45,4 +45,8 @@ abstract class AbstractThemeColors {
Color get snackbarBgColor => AppColors.mediumBlue;
Color get blueButtonBackground => AppColors.darkBlue;
+
+ Color get appBarBackGround => const Color.fromARGB(255, 16, 16, 18);
+
+ Color get buttonBackground => const Color.fromARGB(255, 24, 24, 24);
}
diff --git a/lib/common/theme/custom_theme_app.dart b/lib/common/theme/custom_theme_app.dart
index b42ad780..689158a5 100644
--- a/lib/common/theme/custom_theme_app.dart
+++ b/lib/common/theme/custom_theme_app.dart
@@ -1,6 +1,6 @@
+import 'package:fast_app_base/app.dart';
import 'package:flutter/material.dart';
-import '../../app.dart';
import '../data/preference/prefs.dart';
import 'custom_theme.dart';
import 'custom_theme_holder.dart';
@@ -42,4 +42,4 @@ class _CustomThemeAppState extends State {
return CustomTheme.light;
}
}
-}
+}
\ No newline at end of file
diff --git a/lib/common/widget/w_big_button.dart b/lib/common/widget/w_big_button.dart
new file mode 100644
index 00000000..215b9981
--- /dev/null
+++ b/lib/common/widget/w_big_button.dart
@@ -0,0 +1,27 @@
+import 'package:fast_app_base/common/common.dart';
+import 'package:fast_app_base/common/widget/w_arrow.dart';
+import 'package:flutter/material.dart';
+
+class BigButton extends StatelessWidget {
+ final String text;
+ final VoidCallback onTap;
+
+ const BigButton(this.text,{super.key, required this.onTap});
+
+ @override
+ Widget build(BuildContext context) {
+ return Container(
+ padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 15),
+ decoration: BoxDecoration(
+ color: context.appColors.buttonBackground,
+ borderRadius: BorderRadius.circular(20)),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children:[
+ text.text.white.size(20).bold.make(),
+ Arrow(),
+ ],
+ ),
+ );
+ }
+}
diff --git a/lib/common/widget/w_empty_expanded.dart b/lib/common/widget/w_empty_expanded.dart
index 167d387c..5bba55df 100644
--- a/lib/common/widget/w_empty_expanded.dart
+++ b/lib/common/widget/w_empty_expanded.dart
@@ -1,5 +1,7 @@
import 'package:flutter/material.dart';
+const emptyExpanded = EmptyExpanded();
+
class EmptyExpanded extends StatelessWidget {
final int flex;
diff --git a/lib/common/widget/w_height_and_width.dart b/lib/common/widget/w_height_and_width.dart
index 6d29a55b..93123d5a 100644
--- a/lib/common/widget/w_height_and_width.dart
+++ b/lib/common/widget/w_height_and_width.dart
@@ -1,5 +1,11 @@
import 'package:flutter/material.dart';
+const width10 = Width(10);
+const width5 = Width(5);
+
+const height10 = Height(10);
+const height5 = Height(5);
+
class Height extends StatelessWidget {
final double height;
diff --git a/lib/main.dart b/lib/main.dart
index f04f6d80..fc5d0df9 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -1,11 +1,14 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
+import 'package:flutter_native_splash/flutter_native_splash.dart';
import 'app.dart';
import 'common/data/preference/app_preferences.dart';
void main() async {
- WidgetsFlutterBinding.ensureInitialized();
+ final bindings = WidgetsFlutterBinding.ensureInitialized();
+ // 네이티브 스플래쉬 화면 보존
+ FlutterNativeSplash.preserve(widgetsBinding: bindings);
await EasyLocalization.ensureInitialized();
await AppPreferences.init();
diff --git a/lib/screen/main/s_main.dart b/lib/screen/main/s_main.dart
index fecafbc4..71338ad8 100644
--- a/lib/screen/main/s_main.dart
+++ b/lib/screen/main/s_main.dart
@@ -1,7 +1,9 @@
+import 'package:fast_app_base/common/cli_common.dart';
import 'package:fast_app_base/screen/main/tab/tab_item.dart';
import 'package:fast_app_base/screen/main/tab/tab_navigator.dart';
import 'package:flutter/material.dart';
-
+import 'package:after_layout/after_layout.dart';
+import 'package:flutter_native_splash/flutter_native_splash.dart';
import '../../common/common.dart';
import 'w_menu_drawer.dart';
@@ -12,9 +14,15 @@ class MainScreen extends StatefulWidget {
State createState() => MainScreenState();
}
-class MainScreenState extends State with SingleTickerProviderStateMixin {
+class MainScreenState extends State with SingleTickerProviderStateMixin, AfterLayoutMixin {
TabItem _currentTab = TabItem.home;
- final tabs = [TabItem.home, TabItem.favorite];
+ final tabs = [TabItem.home,
+ TabItem.benefit,
+ TabItem.ttosspay,
+ TabItem.stock,
+ TabItem.all
+ ];
+
final List> navigatorKeys = [];
int get _currentIndex => tabs.indexOf(_currentTab);
@@ -25,6 +33,14 @@ class MainScreenState extends State with SingleTickerProviderStateMi
static double get bottomNavigationBarBorderRadius => 30.0;
+ // preserve한 splash를 제거
+ @override
+ FutureOr afterFirstLayout(BuildContext context) {
+ delay((){
+ FlutterNativeSplash.remove();
+ }, 1500.ms);
+ }
+
@override
void initState() {
super.initState();
@@ -40,7 +56,6 @@ class MainScreenState extends State with SingleTickerProviderStateMi
extendBody: extendBody, //bottomNavigationBar 아래 영역 까지 그림
drawer: const MenuDrawer(),
body: Container(
- color: context.appColors.seedColor.getMaterialColorValues[200],
padding: EdgeInsets.only(bottom: extendBody ? 60 - bottomNavigationBarBorderRadius : 0),
child: SafeArea(
bottom: !extendBody,
@@ -59,12 +74,12 @@ class MainScreenState extends State with SingleTickerProviderStateMi
index: _currentIndex,
children: tabs
.mapIndexed((tab, index) => Offstage(
- offstage: _currentTab != tab,
- child: TabNavigator(
- navigatorKey: navigatorKeys[index],
- tabItem: tab,
- ),
- ))
+ offstage: _currentTab != tab,
+ child: TabNavigator(
+ navigatorKey: navigatorKeys[index],
+ tabItem: tab,
+ ),
+ ))
.toList());
void _handleBackPressed(bool didPop) {
@@ -110,10 +125,10 @@ class MainScreenState extends State with SingleTickerProviderStateMi
return tabs
.mapIndexed(
(tab, index) => tab.toNavigationBarItem(
- context,
- isActivated: _currentIndex == index,
- ),
- )
+ context,
+ isActivated: _currentIndex == index,
+ ),
+ )
.toList();
}
diff --git a/lib/screen/main/tab/all/f_all.dart b/lib/screen/main/tab/all/f_all.dart
new file mode 100644
index 00000000..9560439c
--- /dev/null
+++ b/lib/screen/main/tab/all/f_all.dart
@@ -0,0 +1,15 @@
+import 'package:flutter/material.dart';
+
+class AllFragment extends StatefulWidget {
+ const AllFragment({super.key});
+
+ @override
+ State createState() => _AllFragmentState();
+}
+
+class _AllFragmentState extends State {
+ @override
+ Widget build(BuildContext context) {
+ return const Placeholder();
+ }
+}
diff --git a/lib/screen/main/tab/benefit/f_benefit.dart b/lib/screen/main/tab/benefit/f_benefit.dart
new file mode 100644
index 00000000..823dc581
--- /dev/null
+++ b/lib/screen/main/tab/benefit/f_benefit.dart
@@ -0,0 +1,15 @@
+import 'package:flutter/material.dart';
+
+class BenefitFragment extends StatefulWidget {
+ const BenefitFragment({super.key});
+
+ @override
+ State createState() => _BenefitFragmentState();
+}
+
+class _BenefitFragmentState extends State {
+ @override
+ Widget build(BuildContext context) {
+ return const Placeholder();
+ }
+}
diff --git a/lib/screen/main/tab/favorite/f_favorite.dart b/lib/screen/main/tab/favorite/f_favorite.dart
deleted file mode 100644
index 43f9ca1c..00000000
--- a/lib/screen/main/tab/favorite/f_favorite.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-import 'package:fast_app_base/common/common.dart';
-import 'package:flutter/material.dart';
-
-import '../../../../common/widget/round_button_theme.dart';
-import '../../../../common/widget/w_round_button.dart';
-
-class FavoriteFragment extends StatelessWidget {
- final bool isShowBackButton;
-
- const FavoriteFragment({
- Key? key,
- this.isShowBackButton = true,
- }) : super(key: key);
-
- @override
- Widget build(BuildContext context) {
- return Material(
- child: SafeArea(
- bottom: false,
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- if (isShowBackButton) const BackButton(),
- Expanded(
- child: Container(
- color: Colors.green.withOpacity(0.2),
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.center,
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- const Row(),
- RoundButton(
- text: '즐겨찾기 화면 띄우기',
- onTap: () => Nav.push(const FavoriteFragment(isShowBackButton: true),
- context: context),
- theme: RoundButtonTheme.blue,
- ),
- ]),
- ),
- )
- ],
- ),
- ),
- );
- }
-}
diff --git a/lib/screen/main/tab/home/bank_account_dummy.dart b/lib/screen/main/tab/home/bank_account_dummy.dart
new file mode 100644
index 00000000..65422524
--- /dev/null
+++ b/lib/screen/main/tab/home/bank_account_dummy.dart
@@ -0,0 +1,21 @@
+import 'package:fast_app_base/screen/main/tab/home/bank_dummy.dart';
+import 'package:fast_app_base/screen/main/tab/home/vo/vo_bank_account.dart';
+
+final bankAccountShinhan1 = BankAccount(bankShinhan, 300000, accountTypeName: "신한 주거래 우대통장(저축예금)");
+final bankAccountShinhan2 = BankAccount(bankShinhan, 300000000, accountTypeName: "저축예금");
+final bankAccountShinhan3 = BankAccount(bankShinhan, 30000000000, accountTypeName: "저축예금");
+final bankAccountToss = BankAccount(bankTtoss, 50000);
+final bankAccountKakao = BankAccount(bankKakao, 70000000, accountTypeName: "입출금 통장");
+
+
+main(){
+ print('계좌: ${bankAccounts[0].accountTypeName}');
+}
+
+final bankAccounts = [
+ bankAccountShinhan1,
+ bankAccountShinhan2,
+ bankAccountShinhan3,
+ bankAccountToss,
+ bankAccountKakao
+];
diff --git a/lib/screen/main/tab/home/bank_dummy.dart b/lib/screen/main/tab/home/bank_dummy.dart
new file mode 100644
index 00000000..c21d784e
--- /dev/null
+++ b/lib/screen/main/tab/home/bank_dummy.dart
@@ -0,0 +1,6 @@
+import 'package:fast_app_base/common/constants.dart';
+import 'package:fast_app_base/screen/main/tab/home/vo/vo_bank.dart';
+
+final bankShinhan = Bank("신한은행", '$basePath/bank/bank_shinhan.png');
+final bankKakao = Bank("카카오뱅크", '$basePath/bank/bank_kakao.png');
+final bankTtoss = Bank("토스뱅크", '$basePath/bank/bank_toss.png');
diff --git a/lib/screen/main/tab/home/f_home.dart b/lib/screen/main/tab/home/f_home.dart
index 6b42957d..a032fc5c 100644
--- a/lib/screen/main/tab/home/f_home.dart
+++ b/lib/screen/main/tab/home/f_home.dart
@@ -1,7 +1,9 @@
import 'package:fast_app_base/common/common.dart';
import 'package:fast_app_base/common/widget/round_button_theme.dart';
+import 'package:fast_app_base/common/widget/w_big_button.dart';
import 'package:fast_app_base/common/widget/w_round_button.dart';
import 'package:fast_app_base/screen/dialog/d_message.dart';
+import 'package:fast_app_base/screen/main/tab/home/w_ttoss_app_bar.dart';
import 'package:flutter/material.dart';
import '../../../dialog/d_color_bottom.dart';
@@ -15,44 +17,23 @@ class HomeFragment extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
- color: context.appColors.seedColor.getMaterialColorValues[100],
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.center,
- mainAxisAlignment: MainAxisAlignment.center,
+ color: Colors.black,
+ child: Stack(
children: [
- Row(
- children: [
- IconButton(
- onPressed: () => openDrawer(context),
- icon: const Icon(Icons.menu),
- )
- ],
+ SingleChildScrollView(
+ padding: const EdgeInsets.only(top: 60),
+ child: Column(
+ children: [
+ BigButton(
+ "토스 뱅크",
+ onTap: () {
+ context.showSnackbar("토스뱅크를 눌렀어요.");
+ }
+ ),
+ ],
+ ).pSymmetric(h: 20),
),
- const EmptyExpanded(),
- RoundButton(
- text: 'Snackbar 보이기',
- onTap: () => showSnackbar(context),
- theme: RoundButtonTheme.blue,
- ),
- const Height(20),
- RoundButton(
- text: 'Confirm 다이얼로그',
- onTap: () => showConfirmDialog(context),
- theme: RoundButtonTheme.whiteWithBlueBorder,
- ),
- const Height(20),
- RoundButton(
- text: 'Message 다이얼로그',
- onTap: showMessageDialog,
- theme: RoundButtonTheme.whiteWithBlueBorder,
- ),
- const Height(20),
- RoundButton(
- text: '메뉴 보기',
- onTap: () => openDrawer(context),
- theme: RoundButtonTheme.blink,
- ),
- const EmptyExpanded()
+ const TtossAppBar(),
],
),
);
@@ -64,7 +45,13 @@ class HomeFragment extends StatelessWidget {
onTap: () {
context.showErrorSnackbar('error');
},
- child: '에러 보여주기 버튼'.text.white.size(13).make().centered().pSymmetric(h: 10, v: 5),
+ child: '에러 보여주기 버튼'
+ .text
+ .white
+ .size(13)
+ .make()
+ .centered()
+ .pSymmetric(h: 10, v: 5),
));
}
diff --git a/lib/screen/main/tab/home/vo/vo_bank.dart b/lib/screen/main/tab/home/vo/vo_bank.dart
new file mode 100644
index 00000000..c061ee10
--- /dev/null
+++ b/lib/screen/main/tab/home/vo/vo_bank.dart
@@ -0,0 +1,6 @@
+class Bank{
+ final String name;
+ final String logoImagePath;
+
+ Bank(this.name, this.logoImagePath);
+}
\ No newline at end of file
diff --git a/lib/screen/main/tab/home/vo/vo_bank_account.dart b/lib/screen/main/tab/home/vo/vo_bank_account.dart
new file mode 100644
index 00000000..ccffffcd
--- /dev/null
+++ b/lib/screen/main/tab/home/vo/vo_bank_account.dart
@@ -0,0 +1,16 @@
+import 'package:fast_app_base/screen/main/tab/home/vo/vo_bank.dart';
+
+class BankAccount {
+ final Bank bank;
+ // 잔액은 계속 바뀜으로 final 붙이지 않음
+ int balance;
+ // 참조하는 요소이므로 nullable
+ final String? accountTypeName;
+
+ BankAccount(
+ this.bank,
+ this.balance, {
+ // 선언 선택 가능한 파라미터
+ this.accountTypeName,
+ });
+}
diff --git a/lib/screen/main/tab/home/w_ttoss_app_bar.dart b/lib/screen/main/tab/home/w_ttoss_app_bar.dart
new file mode 100644
index 00000000..60be4e8e
--- /dev/null
+++ b/lib/screen/main/tab/home/w_ttoss_app_bar.dart
@@ -0,0 +1,64 @@
+import 'package:fast_app_base/common/common.dart';
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+
+class TtossAppBar extends StatefulWidget {
+ const TtossAppBar({super.key});
+
+ @override
+ State createState() => _TtossAppBarState();
+}
+
+class _TtossAppBarState extends State {
+
+ bool _showRedDot = false;
+
+ @override
+ Widget build(BuildContext context) {
+ return Container(
+ height: 60,
+ color: context.appColors.appBarBackGround,
+ child: Row(
+ children: [
+ width10,
+ Image.asset(
+ '$basePath/icon/toss.png',
+ height: 38,
+ ),
+ emptyExpanded,
+ width10,
+ Image.asset(
+ '$basePath/icon/map_point.png',
+ height: 38,
+ ),
+ width10,
+ Tap(
+ onTap: (){
+ setState(() => _showRedDot = !_showRedDot);
+ },
+ child: Stack(
+ children: [
+ Image.asset(
+ '$basePath/icon/notification.png',
+ height: 38,
+ ),
+ if(_showRedDot)
+ // 스택의 모양을 유지하면서 점을 배치
+ Positioned.fill(
+ child: Align(
+ alignment: Alignment.topRight,
+ child: Container(
+ width: 6,
+ height: 6,
+ decoration:
+ BoxDecoration(shape: BoxShape.circle, color: Colors.red),
+ ),
+ ))
+ ],
+ ),
+ )
+ ],
+ ),
+ );
+ }
+}
diff --git a/lib/screen/main/tab/stock/f_stock.dart b/lib/screen/main/tab/stock/f_stock.dart
new file mode 100644
index 00000000..9438e297
--- /dev/null
+++ b/lib/screen/main/tab/stock/f_stock.dart
@@ -0,0 +1,15 @@
+import 'package:flutter/material.dart';
+
+class StockFragment extends StatefulWidget {
+ const StockFragment({super.key});
+
+ @override
+ State createState() => _StockFragmentState();
+}
+
+class _StockFragmentState extends State {
+ @override
+ Widget build(BuildContext context) {
+ return const Placeholder();
+ }
+}
diff --git a/lib/screen/main/tab/tab_item.dart b/lib/screen/main/tab/tab_item.dart
index 7966e338..6ff27f3e 100644
--- a/lib/screen/main/tab/tab_item.dart
+++ b/lib/screen/main/tab/tab_item.dart
@@ -1,11 +1,17 @@
import 'package:fast_app_base/common/common.dart';
-import 'package:fast_app_base/screen/main/tab/favorite/f_favorite.dart';
+import 'package:fast_app_base/screen/main/tab/all/f_all.dart';
+import 'package:fast_app_base/screen/main/tab/benefit/f_benefit.dart';
import 'package:fast_app_base/screen/main/tab/home/f_home.dart';
+import 'package:fast_app_base/screen/main/tab/stock/f_stock.dart';
+import 'package:fast_app_base/screen/main/tab/ttosspay/f_ttosspay.dart';
import 'package:flutter/material.dart';
enum TabItem {
home(Icons.home, '홈', HomeFragment()),
- favorite(Icons.star, '즐겨찾기', FavoriteFragment(isShowBackButton: false));
+ benefit(Icons.star, '혜택', BenefitFragment()),
+ ttosspay(Icons.payment, '토스페이', TtosspayFragment()),
+ stock(Icons.candlestick_chart, '주식', StockFragment()),
+ all(Icons.menu, '전체', AllFragment());
final IconData activeIcon;
final IconData inActiveIcon;
@@ -21,7 +27,7 @@ enum TabItem {
key: ValueKey(tabName),
isActivated ? activeIcon : inActiveIcon,
color:
- isActivated ? context.appColors.iconButton : context.appColors.iconButtonInactivate,
+ isActivated ? context.appColors.iconButton : context.appColors.iconButtonInactivate,
),
label: tabName);
}
diff --git a/lib/screen/main/tab/ttosspay/f_ttosspay.dart b/lib/screen/main/tab/ttosspay/f_ttosspay.dart
new file mode 100644
index 00000000..147e8d78
--- /dev/null
+++ b/lib/screen/main/tab/ttosspay/f_ttosspay.dart
@@ -0,0 +1,15 @@
+import 'package:flutter/material.dart';
+
+class TtosspayFragment extends StatefulWidget {
+ const TtosspayFragment({super.key});
+
+ @override
+ State createState() => _TtosspayFragmentState();
+}
+
+class _TtosspayFragmentState extends State {
+ @override
+ Widget build(BuildContext context) {
+ return const Placeholder();
+ }
+}
diff --git a/pubspec.lock b/pubspec.lock
index 78abbc87..aa09db5a 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -205,10 +205,10 @@ packages:
dependency: transitive
description:
name: coverage
- sha256: "2fb815080e44a09b85e0f2ca8a820b15053982b2e714b59267719e8a9ff17097"
+ sha256: "3945034e86ea203af7a056d98e98e42a5518fff200d6e8e6647e1886b07e936e"
url: "https://pub.dev"
source: hosted
- version: "1.6.3"
+ version: "1.8.0"
crypto:
dependency: transitive
description:
@@ -565,6 +565,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.0.4"
+ leak_tracker:
+ dependency: transitive
+ description:
+ name: leak_tracker
+ sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
+ url: "https://pub.dev"
+ source: hosted
+ version: "10.0.0"
+ leak_tracker_flutter_testing:
+ dependency: transitive
+ description:
+ name: leak_tracker_flutter_testing
+ sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.1"
+ leak_tracker_testing:
+ dependency: transitive
+ description:
+ name: leak_tracker_testing
+ sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.1"
lints:
dependency: transitive
description:
@@ -585,26 +609,26 @@ packages:
dependency: transitive
description:
name: matcher
- sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
+ sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
url: "https://pub.dev"
source: hosted
- version: "0.12.16"
+ version: "0.12.16+1"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
- sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
+ sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
url: "https://pub.dev"
source: hosted
- version: "0.5.0"
+ version: "0.8.0"
meta:
dependency: "direct main"
description:
name: meta
- sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
+ sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
url: "https://pub.dev"
source: hosted
- version: "1.10.0"
+ version: "1.11.0"
mime:
dependency: transitive
description:
@@ -657,10 +681,10 @@ packages:
dependency: transitive
description:
name: path
- sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
+ sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
url: "https://pub.dev"
source: hosted
- version: "1.8.3"
+ version: "1.9.0"
path_parsing:
dependency: transitive
description:
@@ -1142,10 +1166,10 @@ packages:
dependency: transitive
description:
name: vm_service
- sha256: f3743ca475e0c9ef71df4ba15eb2d7684eecd5c8ba20a462462e4e8b561b2e11
+ sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
url: "https://pub.dev"
source: hosted
- version: "11.6.0"
+ version: "13.0.0"
vxstate:
dependency: transitive
description:
@@ -1162,14 +1186,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.1.0"
- web:
- dependency: transitive
- description:
- name: web
- sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
- url: "https://pub.dev"
- source: hosted
- version: "0.3.0"
web_socket_channel:
dependency: transitive
description:
@@ -1227,5 +1243,5 @@ packages:
source: hosted
version: "3.1.2"
sdks:
- dart: ">=3.2.0-194.0.dev <4.0.0"
+ dart: ">=3.2.0-0 <4.0.0"
flutter: ">=3.7.0-0"
diff --git a/pubspec.yaml b/pubspec.yaml
index 80e6e86c..f25623fa 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -109,6 +109,9 @@ flutter:
- assets/image/
- assets/image/icon/
- assets/image/flag/
+ - assets/image/splash/
+ - assets/image/bank/
+ - assets/image/benefit/
- assets/image/darkmode/
- assets/translations/
- assets/
diff --git a/web/index.html b/web/index.html
index c253dd97..fdb5474a 100644
--- a/web/index.html
+++ b/web/index.html
@@ -36,11 +36,81 @@
-
+
-
+
+
+
+