From cb4e4f0d94587727fc9e4f302c49c5524a3ed0ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A1=B0=ED=98=95=EC=84=9D?= Date: Tue, 29 Apr 2025 16:31:37 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=EC=9E=91=EC=84=B1=ED=95=9C=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=95=84=20=ED=99=94=EB=A9=B4=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main.dart | 6 +- .../profile_introduce_page.dart | 2 +- .../profile_summary/profile_summary_page.dart | 140 ++++++++++++++++++ .../widgets/profile_summary_app_bar.dart | 38 +++++ 4 files changed, 181 insertions(+), 5 deletions(-) create mode 100644 lib/sign_up/presentation/pages/profile_summary/profile_summary_page.dart create mode 100644 lib/sign_up/presentation/pages/profile_summary/widgets/profile_summary_app_bar.dart diff --git a/lib/main.dart b/lib/main.dart index 1fb6a0b..1ebd667 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,4 @@ -import 'package:code_l/auth/presentation/pages/login/login_page.dart'; -import 'package:code_l/auth/presentation/pages/terms_and_conditions/terms_and_condition_page.dart'; -import 'package:code_l/sign_up/presentation/pages/profile_interest/profile_intereset_page.dart'; +import 'package:code_l/sign_up/presentation/pages/profile_summary/profile_summary_page.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; @@ -27,7 +25,7 @@ class MyApp extends StatelessWidget { Widget build(BuildContext context) { return MaterialApp( title: 'Kakao Login Demo', - home: const LoginPage(), + home: const ProfileSummaryPage(), theme: ThemeData( primarySwatch: Colors.blue, scaffoldBackgroundColor: Colors.white, diff --git a/lib/sign_up/presentation/pages/profile_introduce/profile_introduce_page.dart b/lib/sign_up/presentation/pages/profile_introduce/profile_introduce_page.dart index 10009b3..6dbfc58 100644 --- a/lib/sign_up/presentation/pages/profile_introduce/profile_introduce_page.dart +++ b/lib/sign_up/presentation/pages/profile_introduce/profile_introduce_page.dart @@ -21,7 +21,7 @@ class ProfileIntroducePage extends ConsumerWidget { final notifier = ref.read(profileIntroduceProvider.notifier); return Scaffold( - appBar: SignUpAppBar(currentPage: 10), + appBar: SignUpAppBar(), body: SafeArea( child: Padding( padding: const EdgeInsets.all(AppGaps.gap24), diff --git a/lib/sign_up/presentation/pages/profile_summary/profile_summary_page.dart b/lib/sign_up/presentation/pages/profile_summary/profile_summary_page.dart new file mode 100644 index 0000000..c001417 --- /dev/null +++ b/lib/sign_up/presentation/pages/profile_summary/profile_summary_page.dart @@ -0,0 +1,140 @@ +import 'package:code_l/core/utills/design/app_typography.dart'; +import 'package:code_l/sign_up/presentation/pages/profile_summary/widgets/profile_summary_app_bar.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +class ProfileSummaryPage extends StatelessWidget { + const ProfileSummaryPage({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: ProfileSummaryAppBar(), + body: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Image Carousel + AspectRatio( + aspectRatio: 16 / 9, + child: PageView( + children: [ + Image.asset('assets/icons/ic_job_creator.png', fit: BoxFit.cover), + Image.asset('assets/icons/ic_job_educator.png', fit: BoxFit.cover), + Image.asset('assets/icons/ic_job_entertainer.png', fit: BoxFit.cover), + ], + ), + ), + Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Name and Age + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Text( + '사용가능코드네임', + style: AppTypography.header3, + ), + SizedBox(width: 8), + Text("26세",style: AppTypography.body2,), + ], + ), + + IconButton( + icon: Icon(Icons.more_horiz), + onPressed: () {}, + ), + ], + ), + + SizedBox(height: 16), + + // Section: 소개 + buildSectionTitle('사용가능코드네임의 소개'), + Text('방가방가', style: TextStyle(fontSize: 16)), + + SizedBox(height: 16), + + // Profile Images + buildSectionTitle('사용가능코드네임의 페이스 인증 이미지'), + Row( + children: [ + Expanded(child: buildProfileImage('assets/images/profile1.jpg')), + SizedBox(width: 8), + Expanded(child: buildProfileImage('assets/images/profile2.jpg')), + SizedBox(width: 8), + Expanded(child: buildProfileImage('assets/images/profile3.jpg')), + ], + ), + + SizedBox(height: 16), + + // Sections: LIFE, LIKE, LIFESTYLE + buildProfileSection('사용가능코드네임의 LIFE', [ + buildListItem('직업', '학생'), + buildListItem('운동', '유산소 즐기는 매니아'), + buildListItem('MBTI', 'ENTJ'), + ]), + + buildProfileSection('사용가능코드네임의 LIKE', [ + buildListItem('취향', '운동, 독서 & 글쓰기, IT기술'), + buildListItem('활동지', '서울특별시 강동구'), + ]), + + buildProfileSection('사용가능코드네임의 LIFESTYLE', [ + buildListItem('연애스타일', '서로의 성장을 지원하는 스타일'), + buildListItem('데이트', '나만 따라와 데이트 스타일'), + ]), + ], + ), + ), + ], + ), + ), + ); + } + + Widget buildSectionTitle(String title) { + return Text( + title, + style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold, color: Colors.black87), + ); + } + + Widget buildProfileImage(String imagePath) { + return ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Image.asset(imagePath, fit: BoxFit.cover), + ); + } + + Widget buildProfileSection(String title, List items) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + buildSectionTitle(title), + SizedBox(height: 8), + ...items, + SizedBox(height: 16), + ], + ); + } + + Widget buildListItem(String key, String value) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 4.0), + child: Row( + children: [ + Text('$key: ', style: TextStyle(fontWeight: FontWeight.bold)), + Expanded(child: Text(value)), + ], + ), + ); + } +} + diff --git a/lib/sign_up/presentation/pages/profile_summary/widgets/profile_summary_app_bar.dart b/lib/sign_up/presentation/pages/profile_summary/widgets/profile_summary_app_bar.dart new file mode 100644 index 0000000..94022d4 --- /dev/null +++ b/lib/sign_up/presentation/pages/profile_summary/widgets/profile_summary_app_bar.dart @@ -0,0 +1,38 @@ +import 'package:code_l/core/utills/design/app_gaps.dart'; +import 'package:flutter/material.dart'; + +import '../../../../../core/utills/design/app_colors.dart'; +import '../../../../../core/utills/design/app_typography.dart'; + +class ProfileSummaryAppBar extends StatelessWidget + implements PreferredSizeWidget { + const ProfileSummaryAppBar({super.key}); + + @override + Size get preferredSize => Size.fromHeight(56); + @override + Widget build(BuildContext context) { + return SafeArea( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SizedBox(width: AppGaps.gap36), + Text( + "내가 작성한 코드프로필", + style: AppTypography.subtitle2.copyWith(color: AppColors.grey900), + ), + IconButton( + icon: const Icon(Icons.close), + onPressed: () { + Navigator.pop(context); + }, + ), + ], + ), + ), + ); + } +} From 0f0ef814f476de751310f6c839db93c0d837111a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A1=B0=ED=98=95=EC=84=9D?= Date: Tue, 29 Apr 2025 21:44:39 +0900 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=ED=94=84=EB=A1=9C=ED=95=84=20?= =?UTF-8?q?=ED=99=95=EC=9D=B8=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main.dart | 2 +- .../profile_summary/profile_summary_page.dart | 309 ++++++++++++------ 2 files changed, 218 insertions(+), 93 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 1ebd667..9f964cb 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -25,7 +25,7 @@ class MyApp extends StatelessWidget { Widget build(BuildContext context) { return MaterialApp( title: 'Kakao Login Demo', - home: const ProfileSummaryPage(), + home: ProfileSummaryPage(), theme: ThemeData( primarySwatch: Colors.blue, scaffoldBackgroundColor: Colors.white, diff --git a/lib/sign_up/presentation/pages/profile_summary/profile_summary_page.dart b/lib/sign_up/presentation/pages/profile_summary/profile_summary_page.dart index c001417..06deb04 100644 --- a/lib/sign_up/presentation/pages/profile_summary/profile_summary_page.dart +++ b/lib/sign_up/presentation/pages/profile_summary/profile_summary_page.dart @@ -1,11 +1,15 @@ +import 'package:code_l/core/utills/design/app_gaps.dart'; import 'package:code_l/core/utills/design/app_typography.dart'; import 'package:code_l/sign_up/presentation/pages/profile_summary/widgets/profile_summary_app_bar.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -class ProfileSummaryPage extends StatelessWidget { - const ProfileSummaryPage({super.key}); +import '../../../../core/utills/design/app_colors.dart'; +class ProfileSummaryPage extends StatelessWidget { + ProfileSummaryPage({Key? key}) : super(key: key); + final PageController pageController = PageController(); + final ValueNotifier currentPageNotifier = ValueNotifier(0); @override Widget build(BuildContext context) { return Scaffold( @@ -14,87 +18,181 @@ class ProfileSummaryPage extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - // Image Carousel - AspectRatio( - aspectRatio: 16 / 9, - child: PageView( - children: [ - Image.asset('assets/icons/ic_job_creator.png', fit: BoxFit.cover), - Image.asset('assets/icons/ic_job_educator.png', fit: BoxFit.cover), - Image.asset('assets/icons/ic_job_entertainer.png', fit: BoxFit.cover), - ], - ), + buildCodeProfileImage([ + 'https://i.namu.wiki/i/26zrz9vXNoJuC8XAawLsvE54JAHRKgQZcpx0SQ1g60r3Nn80nqpXFK0VBulBYNuuayrcCpli4u8jUMUm_1n5CIo84vxWbQcN46w0Ah_VS2hJZ0m88_jTWwKWtij1_m38H1G-Py_8fdiHrSWKyWAWCQ.webp', + 'https://i.namu.wiki/i/26zrz9vXNoJuC8XAawLsvE54JAHRKgQZcpx0SQ1g60r3Nn80nqpXFK0VBulBYNuuayrcCpli4u8jUMUm_1n5CIo84vxWbQcN46w0Ah_VS2hJZ0m88_jTWwKWtij1_m38H1G-Py_8fdiHrSWKyWAWCQ.webp', + 'https://i.namu.wiki/i/26zrz9vXNoJuC8XAawLsvE54JAHRKgQZcpx0SQ1g60r3Nn80nqpXFK0VBulBYNuuayrcCpli4u8jUMUm_1n5CIo84vxWbQcN46w0Ah_VS2hJZ0m88_jTWwKWtij1_m38H1G-Py_8fdiHrSWKyWAWCQ.webp', + ]), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + buildNameAge(), + Container(height: AppGaps.gap8, color: AppColors.grey100), + buildIntroduce(), + Container(height: AppGaps.gap8, color: AppColors.grey100), + buildProfileFaceImage(), + Container(height: AppGaps.gap8, color: AppColors.grey100), + buildProfileSection('사용가능코드네임의 LIFE', [ + buildListItem('직업', '학생'), + buildListItem('음주여부', '유산소 즐기는 매니아'), + buildListItem('흡연여부', '유산소 즐기는 매니아'), + buildListItem('MBTI', 'ENTJ'), + ]), + Container(height: AppGaps.gap8, color: AppColors.grey100), + buildProfileSection('사용가능코드네임의 LIKE', [ + buildListItem('취향', '운동, 독서 & 글쓰기, IT기술'), + buildListItem('활동지역', '서울특별시 강동구'), + ]), + Container(height: AppGaps.gap8, color: AppColors.grey100), + buildProfileSection('사용가능코드네임의 LIFESTYLE', [ + buildListItem('연애가치관', '서로의 성장을 지원하는 스타일'), + buildListItem('애정표현', '나만 따라와 데이트 스타일'), + buildListItem('연락', '나만 따라와 데이트 스타일'), + buildListItem('데이트', '나만 따라와 데이트 스타일'), + buildListItem('갈등해결', '나만 따라와 데이트 스타일'), + buildListItem('사랑의 언어', '나만 따라와 데이트 스타일'), + ]), + ], ), - Padding( - padding: const EdgeInsets.all(16.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - // Name and Age - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - Text( - '사용가능코드네임', - style: AppTypography.header3, - ), - SizedBox(width: 8), - Text("26세",style: AppTypography.body2,), - ], - ), - - IconButton( - icon: Icon(Icons.more_horiz), - onPressed: () {}, - ), - ], - ), + ], + ), + ), + ); + } - SizedBox(height: 16), + Widget buildNameAge() { + return Padding( + padding: const EdgeInsets.all(AppGaps.gap16), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Text('사용가능코드네임', style: AppTypography.header3), + SizedBox(width: AppGaps.gap8), + Text("26세", style: AppTypography.body2), + ], + ), + IconButton(icon: Icon(Icons.more_vert), onPressed: () {}), + ], + ), + ); + } - // Section: 소개 - buildSectionTitle('사용가능코드네임의 소개'), - Text('방가방가', style: TextStyle(fontSize: 16)), + Widget buildIntroduce() { + return Padding( + padding: const EdgeInsets.all(AppGaps.gap16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + buildSectionTitle('사용가능코드네임의 소개'), + SizedBox(height: AppGaps.gap8), + Text('방가방가', style: AppTypography.subtitle3), + ], + ), + ); + } - SizedBox(height: 16), + Widget buildProfileFaceImage() { + return Padding( + padding: const EdgeInsets.all(AppGaps.gap16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + buildSectionTitle('사용가능코드네임의 페이스 인증 이미지'), + SizedBox(height: AppGaps.gap12), + buildFaceProfileImages([ + 'https://i.namu.wiki/i/26zrz9vXNoJuC8XAawLsvE54JAHRKgQZcpx0SQ1g60r3Nn80nqpXFK0VBulBYNuuayrcCpli4u8jUMUm_1n5CIo84vxWbQcN46w0Ah_VS2hJZ0m88_jTWwKWtij1_m38H1G-Py_8fdiHrSWKyWAWCQ.webp', + 'https://i.namu.wiki/i/26zrz9vXNoJuC8XAawLsvE54JAHRKgQZcpx0SQ1g60r3Nn80nqpXFK0VBulBYNuuayrcCpli4u8jUMUm_1n5CIo84vxWbQcN46w0Ah_VS2hJZ0m88_jTWwKWtij1_m38H1G-Py_8fdiHrSWKyWAWCQ.webp', + 'https://i.namu.wiki/i/26zrz9vXNoJuC8XAawLsvE54JAHRKgQZcpx0SQ1g60r3Nn80nqpXFK0VBulBYNuuayrcCpli4u8jUMUm_1n5CIo84vxWbQcN46w0Ah_VS2hJZ0m88_jTWwKWtij1_m38H1G-Py_8fdiHrSWKyWAWCQ.webp', + ]), + SizedBox(height: AppGaps.gap12), + Container( + color: AppColors.grey100, + height: 24, + width: double.infinity, + alignment: Alignment.centerLeft, + child: Padding( + padding: const EdgeInsets.only(left: AppGaps.gap8), + child: Text( + "페이스 인증 이미지는 다른 사용자들에게 보이지 않아요!", + style: AppTypography.caption3.copyWith( + color: AppColors.grey500, + ), + ), + ), + ), + ], + ), + ); + } + Widget buildFaceProfileImages(List imagePath) { + return Row( + children: List.generate( + imagePath.length, + (index) => buildFaceProfileImage(imagePath[index]), + ), + ); + } - // Profile Images - buildSectionTitle('사용가능코드네임의 페이스 인증 이미지'), - Row( - children: [ - Expanded(child: buildProfileImage('assets/images/profile1.jpg')), - SizedBox(width: 8), - Expanded(child: buildProfileImage('assets/images/profile2.jpg')), - SizedBox(width: 8), - Expanded(child: buildProfileImage('assets/images/profile3.jpg')), - ], + Widget buildCodeProfileImage(List imagePaths) { + return AspectRatio( + aspectRatio: 7 / 6, + child: Stack( + children: [ + PageView.builder( + controller: pageController, + itemCount: imagePaths.length, + onPageChanged: (index) { + currentPageNotifier.value = index; // 페이지 번호 업데이트 + }, + itemBuilder: (context, index) { + return Image.network( + imagePaths[index], + fit: BoxFit.cover, + ); + }, + ), + Align( + alignment: Alignment.topLeft, + child: ValueListenableBuilder( + valueListenable: currentPageNotifier, + builder: (context, currentPage, _) { + return currentPageNotifier.value == 0 ? Container( + margin: const EdgeInsets.all(8.0), + padding: const EdgeInsets.symmetric(horizontal: 12.0, vertical: 6.0), + decoration: BoxDecoration( + color: Colors.black.withOpacity(0.6), ), - - SizedBox(height: 16), - - // Sections: LIFE, LIKE, LIFESTYLE - buildProfileSection('사용가능코드네임의 LIFE', [ - buildListItem('직업', '학생'), - buildListItem('운동', '유산소 즐기는 매니아'), - buildListItem('MBTI', 'ENTJ'), - ]), - - buildProfileSection('사용가능코드네임의 LIKE', [ - buildListItem('취향', '운동, 독서 & 글쓰기, IT기술'), - buildListItem('활동지', '서울특별시 강동구'), - ]), - - buildProfileSection('사용가능코드네임의 LIFESTYLE', [ - buildListItem('연애스타일', '서로의 성장을 지원하는 스타일'), - buildListItem('데이트', '나만 따라와 데이트 스타일'), - ]), - ], - ), + child: Text( + '대표', + style: AppTypography.body2.copyWith(color: Colors.white), + ), + ) : Container(); + }, ), - ], - ), + ), + Align( + alignment: Alignment.bottomCenter, + child: ValueListenableBuilder( + valueListenable: currentPageNotifier, + builder: (context, currentPage, _) { + return Container( + margin: const EdgeInsets.all(8.0), + padding: const EdgeInsets.symmetric(horizontal: 12.0, vertical: 6.0), + decoration: BoxDecoration( + color: Colors.black.withOpacity(0.6), + borderRadius: BorderRadius.circular(12.0), + ), + child: Text( + '${currentPage + 1} / ${imagePaths.length}', + style: AppTypography.body2.copyWith(color: Colors.white), + ), + ); + }, + ), + ), + ], ), ); } @@ -102,26 +200,41 @@ class ProfileSummaryPage extends StatelessWidget { Widget buildSectionTitle(String title) { return Text( title, - style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold, color: Colors.black87), + style: AppTypography.subtitle3.copyWith(color: AppColors.primary), ); } - Widget buildProfileImage(String imagePath) { - return ClipRRect( - borderRadius: BorderRadius.circular(8), - child: Image.asset(imagePath, fit: BoxFit.cover), + Widget buildFaceProfileImage(String imagePath) { + return Padding( + padding: const EdgeInsets.only(right: 8.0), + child: ClipRRect( + borderRadius: BorderRadius.circular(24), + child: Container( + width: 64, + height: 64, + decoration: BoxDecoration( + image: DecorationImage( + image: NetworkImage(imagePath), + fit: BoxFit.cover, + ), + ), + ), + ), ); } Widget buildProfileSection(String title, List items) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - buildSectionTitle(title), - SizedBox(height: 8), - ...items, - SizedBox(height: 16), - ], + return Padding( + padding: const EdgeInsets.all(AppGaps.gap16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + buildSectionTitle(title), + SizedBox(height: AppGaps.gap8), + ...items, + SizedBox(height: AppGaps.gap16), + ], + ), ); } @@ -130,11 +243,23 @@ class ProfileSummaryPage extends StatelessWidget { padding: const EdgeInsets.symmetric(vertical: 4.0), child: Row( children: [ - Text('$key: ', style: TextStyle(fontWeight: FontWeight.bold)), - Expanded(child: Text(value)), + SizedBox( + width: 80, // key의 고정 너비 설정 + child: Text( + key, + style: AppTypography.subtitle3.copyWith(color: AppColors.grey500), + textAlign: TextAlign.left, + ), + ), + Expanded( + child: Text( + value, + style: AppTypography.subtitle3, + textAlign: TextAlign.left, + ), + ), ], ), ); } } - From 176447db5358ceb45096075a096e811359c4fce1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A1=B0=ED=98=95=EC=84=9D?= Date: Tue, 29 Apr 2025 21:48:19 +0900 Subject: [PATCH 3/4] =?UTF-8?q?refactor:=20dart=20format=20=EC=8B=A4?= =?UTF-8?q?=ED=96=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../profile_summary/profile_summary_page.dart | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/lib/sign_up/presentation/pages/profile_summary/profile_summary_page.dart b/lib/sign_up/presentation/pages/profile_summary/profile_summary_page.dart index 06deb04..e8ac819 100644 --- a/lib/sign_up/presentation/pages/profile_summary/profile_summary_page.dart +++ b/lib/sign_up/presentation/pages/profile_summary/profile_summary_page.dart @@ -158,17 +158,21 @@ class ProfileSummaryPage extends StatelessWidget { child: ValueListenableBuilder( valueListenable: currentPageNotifier, builder: (context, currentPage, _) { - return currentPageNotifier.value == 0 ? Container( - margin: const EdgeInsets.all(8.0), - padding: const EdgeInsets.symmetric(horizontal: 12.0, vertical: 6.0), - decoration: BoxDecoration( - color: Colors.black.withOpacity(0.6), - ), - child: Text( - '대표', - style: AppTypography.body2.copyWith(color: Colors.white), - ), - ) : Container(); + return currentPageNotifier.value == 0 + ? Container( + margin: const EdgeInsets.all(8.0), + padding: const EdgeInsets.symmetric( + horizontal: 12.0, vertical: 6.0), + decoration: BoxDecoration( + color: Colors.black.withOpacity(0.6), + ), + child: Text( + '대표', + style: + AppTypography.body2.copyWith(color: Colors.white), + ), + ) + : Container(); }, ), ), @@ -179,7 +183,8 @@ class ProfileSummaryPage extends StatelessWidget { builder: (context, currentPage, _) { return Container( margin: const EdgeInsets.all(8.0), - padding: const EdgeInsets.symmetric(horizontal: 12.0, vertical: 6.0), + padding: const EdgeInsets.symmetric( + horizontal: 12.0, vertical: 6.0), decoration: BoxDecoration( color: Colors.black.withOpacity(0.6), borderRadius: BorderRadius.circular(12.0), From 36228652dc38c6c30b1b42c28b7787762a230c92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A1=B0=ED=98=95=EC=84=9D?= Date: Tue, 29 Apr 2025 22:10:58 +0900 Subject: [PATCH 4/4] =?UTF-8?q?refactor:=20=EC=8B=9C=EC=9E=91=20=EC=A7=80?= =?UTF-8?q?=EC=A0=90=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index 41234ee..fec5c17 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,7 @@ import 'package:code_l/auth/presentation/pages/login/login_page.dart'; import 'package:code_l/auth/presentation/pages/terms_and_conditions/terms_and_condition_page.dart'; import 'package:code_l/sign_up/presentation/pages/profile_interest/profile_intereset_page.dart'; +import 'package:code_l/sign_up/presentation/pages/profile_summary/profile_summary_page.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; @@ -27,7 +28,7 @@ class MyApp extends StatelessWidget { Widget build(BuildContext context) { return MaterialApp( title: 'Kakao Login Demo', - home: ProfileSummaryPage(), + home: LoginPage(), theme: ThemeData( primarySwatch: Colors.blue, scaffoldBackgroundColor: Colors.white,