From 543ec50379e7fe24e016596ac894e9631211d870 Mon Sep 17 00:00:00 2001 From: changhwan77 Date: Wed, 14 Feb 2024 22:48:14 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=ED=8A=B8=ED=8B=B0=20=ED=99=88=20=EC=83=81?= =?UTF-8?q?=EB=8B=A8=20=EB=B0=B0=EB=84=88=20=EC=B6=94=EA=B0=80=20=EB=B0=8F?= =?UTF-8?q?=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/common/constraints_scaffold.dart | 46 +++++----- lib/constants/color.dart | 1 + lib/features/tutis/views/tuti_screen.dart | 8 +- .../widgets/tuti_widgets/main_banner.dart | 63 +++++++++++++ .../tuti_widgets/tuti_card_mobile.dart | 89 ++++++++++++------- .../tuti_widgets/tuti_header_mobile.dart | 4 +- 6 files changed, 148 insertions(+), 63 deletions(-) create mode 100644 lib/features/tutis/widgets/tuti_widgets/main_banner.dart diff --git a/lib/common/constraints_scaffold.dart b/lib/common/constraints_scaffold.dart index b3792c5..22af5a7 100644 --- a/lib/common/constraints_scaffold.dart +++ b/lib/common/constraints_scaffold.dart @@ -13,30 +13,32 @@ class ConstraintsScaffold extends StatelessWidget { @override Widget build(BuildContext context) { - return Scaffold( - backgroundColor: Colors.white, - body: Center( - child: Stack( - children: [ - Container( - constraints: BoxConstraints( - maxWidth: 700.w, + return SafeArea( + child: Scaffold( + backgroundColor: Colors.white, + body: Center( + child: Stack( + children: [ + Container( + constraints: BoxConstraints( + maxWidth: 700.w, + ), + child: Image.asset( + 'assets/images/home_mobile.jpg', + width: double.infinity, + height: double.infinity, + fit: BoxFit.cover, + ), ), - child: Image.asset( - 'assets/images/home_mobile.jpg', - width: double.infinity, - height: double.infinity, - fit: BoxFit.cover, + Container( + constraints: BoxConstraints( + maxWidth: 700.w, + ), + padding: padding, + child: child, ), - ), - Container( - constraints: BoxConstraints( - maxWidth: 700.w, - ), - padding: padding, - child: child, - ), - ], + ], + ), ), ), ); diff --git a/lib/constants/color.dart b/lib/constants/color.dart index da8a1af..7c254bd 100644 --- a/lib/constants/color.dart +++ b/lib/constants/color.dart @@ -6,4 +6,5 @@ class ColorConstants { static const Color kakaoColor = Color(0xFFFFDE00); static const Color naverColor = Color(0xFF03C75A); static const Color profileUserNameColor = Color(0xFF52B69A); + static const Color primary600Color = Color(0xFF34A0A4); } diff --git a/lib/features/tutis/views/tuti_screen.dart b/lib/features/tutis/views/tuti_screen.dart index 8aeff6c..da3984b 100644 --- a/lib/features/tutis/views/tuti_screen.dart +++ b/lib/features/tutis/views/tuti_screen.dart @@ -1,4 +1,6 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; import 'package:tuti/common/constraints_scaffold.dart'; import '../../../constants/gaps.dart'; @@ -13,13 +15,11 @@ class TuTiScreen extends StatelessWidget { @override Widget build(BuildContext context) { - return const ConstraintsScaffold( + return ConstraintsScaffold( child: Column( children: [ - Gaps.h14, TuTiHeaderMobile(), - Gaps.h5, - TuTiCardMobile(), + Flexible(flex: 5, child: TuTiCardMobile()), ], ), ); diff --git a/lib/features/tutis/widgets/tuti_widgets/main_banner.dart b/lib/features/tutis/widgets/tuti_widgets/main_banner.dart new file mode 100644 index 0000000..f3436c9 --- /dev/null +++ b/lib/features/tutis/widgets/tuti_widgets/main_banner.dart @@ -0,0 +1,63 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:go_router/go_router.dart'; +import 'package:tuti/constants/color.dart'; +import 'package:tuti/constants/gaps.dart'; +import 'package:tuti/features/tutis/views/personal_branding_screen.dart'; + +class TuTiBanner extends StatelessWidget { + const TuTiBanner({ + super.key, + }); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () { + context.push(PersonalBrandingScreen.routePath); + }, + child: Container( + margin: EdgeInsets.symmetric(horizontal: 15.w), + decoration: ShapeDecoration( + color: Colors.white, + shape: RoundedRectangleBorder( + side: BorderSide(width: 2.w, color: ColorConstants.primaryColor), + borderRadius: BorderRadius.circular(25), + ), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + RSizedBox( + width: 40.w, + height: 44.h, + child: Image.asset('assets/images/fruit.png'), + ), + Gaps.w10, + Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + '[공지]\n트티 강점 발견 연구소 1기 모집 중!', + style: Theme.of(context) + .textTheme + .titleSmall! + .copyWith(fontSize: 12.sp), + ), + Text( + '🤯 인생 고민, 진로 고민 ! 미래에 대한 확신이 들지 않을 때!', + style: Theme.of(context).textTheme.bodySmall!.copyWith( + color: ColorConstants.primary600Color, + fontSize: 10.sp, + fontWeight: FontWeight.w500), + ) + ], + ), + ], + ), + ), + ); + } +} diff --git a/lib/features/tutis/widgets/tuti_widgets/tuti_card_mobile.dart b/lib/features/tutis/widgets/tuti_widgets/tuti_card_mobile.dart index 2d0ca13..08db9ba 100644 --- a/lib/features/tutis/widgets/tuti_widgets/tuti_card_mobile.dart +++ b/lib/features/tutis/widgets/tuti_widgets/tuti_card_mobile.dart @@ -1,12 +1,15 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:go_router/go_router.dart'; import 'package:tuti/common/custom_token_manager.dart'; import 'package:tuti/common/tuti_icon.dart'; import 'package:tuti/features/profile/models/member_model.dart'; +import 'package:tuti/features/tutis/views/personal_branding_screen.dart'; import 'package:tuti/features/tutis/widgets/tuti_button_widget.dart'; +import 'package:tuti/features/tutis/widgets/tuti_widgets/main_banner.dart'; import 'package:tuti/features/tutis/widgets/tuti_widgets/tuti_login_dialog.dart'; import '../../../../common/tuti_text.dart'; @@ -83,42 +86,60 @@ class _TuTiCardMobileState extends ConsumerState { @override Widget build(BuildContext context) { - return Expanded( - child: ListView.builder( + return Container( + height: MediaQuery.of(context).size.height * 0.8, + padding: EdgeInsets.symmetric(horizontal: 30.w), + child: CustomScrollView( controller: _scrollController, - itemCount: _allMembers.length, - itemBuilder: (context, index) { - final member = _allMembers[index]; - return Padding( - padding: EdgeInsets.symmetric(horizontal: 10.sp), - child: Container( - constraints: BoxConstraints( - minHeight: 250.h, - maxHeight: 250.h, - ), - margin: EdgeInsets.symmetric(vertical: 10.sp), - decoration: ShapeDecoration( - color: Colors.white, - shape: RoundedRectangleBorder( - side: const BorderSide( - width: 2, - color: ColorConstants.primaryColor, + slivers: [ + SliverAppBar( + expandedHeight: 80.h, + floating: false, + pinned: false, + flexibleSpace: const FlexibleSpaceBar( + background: TuTiBanner(), + ), + ), + SliverGrid( + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + ), + delegate: SliverChildBuilderDelegate(childCount: _allMembers.length, + (context, index) { + final member = _allMembers[index]; + print(_allMembers.length); + return Padding( + padding: EdgeInsets.symmetric(horizontal: 10.w), + child: Container( + constraints: BoxConstraints( + minHeight: 250.h, + maxHeight: 250.h, + ), + margin: EdgeInsets.symmetric(vertical: 10.w), + decoration: ShapeDecoration( + color: Colors.white, + shape: RoundedRectangleBorder( + side: const BorderSide( + width: 2, + color: ColorConstants.primaryColor, + ), + borderRadius: BorderRadius.circular(45), + ), + ), + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + _buildLeftColumn(context, member), + Gaps.w24, + _buildRightColumn(context, member), + ], ), - borderRadius: BorderRadius.circular(45), ), - ), - child: Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - _buildLeftColumn(context, member), - Gaps.w24, - _buildRightColumn(context, member), - ], - ), - ), - ); - }, + ); + }), + ) + ], ), ); } @@ -263,7 +284,7 @@ class _TuTiCardMobileState extends ConsumerState { ), ), child: const CircleAvatar( - radius: 50, + radius: 25, backgroundImage: AssetImage('assets/images/fruit.png'), backgroundColor: Colors.transparent, ), diff --git a/lib/features/tutis/widgets/tuti_widgets/tuti_header_mobile.dart b/lib/features/tutis/widgets/tuti_widgets/tuti_header_mobile.dart index e3bfbce..0336f33 100644 --- a/lib/features/tutis/widgets/tuti_widgets/tuti_header_mobile.dart +++ b/lib/features/tutis/widgets/tuti_widgets/tuti_header_mobile.dart @@ -30,9 +30,7 @@ class _TuTiHeaderMobileState extends State { @override Widget build(BuildContext context) { return Padding( - padding: EdgeInsets.symmetric( - horizontal: 20.w, - ), + padding: EdgeInsets.symmetric(horizontal: 25.w, vertical: 20.h), child: Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ From e5759ba23dc3cdd6d0cba6119ca3cf61efccb995 Mon Sep 17 00:00:00 2001 From: changhwan77 Date: Thu, 15 Feb 2024 23:19:33 +0900 Subject: [PATCH 2/5] =?UTF-8?q?feat:=20=EB=A9=94=EC=9D=B8=20=EB=B0=B0?= =?UTF-8?q?=EB=84=88=20size=20=EC=A1=B0=EC=A0=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/features/tutis/widgets/tuti_widgets/main_banner.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/features/tutis/widgets/tuti_widgets/main_banner.dart b/lib/features/tutis/widgets/tuti_widgets/main_banner.dart index f3436c9..396a2cc 100644 --- a/lib/features/tutis/widgets/tuti_widgets/main_banner.dart +++ b/lib/features/tutis/widgets/tuti_widgets/main_banner.dart @@ -17,6 +17,8 @@ class TuTiBanner extends StatelessWidget { context.push(PersonalBrandingScreen.routePath); }, child: Container( + width: MediaQuery.of(context).size.width * 0.8, + height: 80.h, margin: EdgeInsets.symmetric(horizontal: 15.w), decoration: ShapeDecoration( color: Colors.white, @@ -50,7 +52,7 @@ class TuTiBanner extends StatelessWidget { '🤯 인생 고민, 진로 고민 ! 미래에 대한 확신이 들지 않을 때!', style: Theme.of(context).textTheme.bodySmall!.copyWith( color: ColorConstants.primary600Color, - fontSize: 10.sp, + fontSize: 11.sp, fontWeight: FontWeight.w500), ) ], From 43adaaea333bf08a55bb9783cce4d75af031c8f9 Mon Sep 17 00:00:00 2001 From: changhwan77 Date: Fri, 16 Feb 2024 01:27:18 +0900 Subject: [PATCH 3/5] =?UTF-8?q?fix:=20=ED=9A=8C=EC=9B=90=EA=B0=80=EC=9E=85?= =?UTF-8?q?=20=ED=99=94=EB=A9=B4=20=EC=B2=B4=ED=81=AC=20=EB=B0=95=EC=8A=A4?= =?UTF-8?q?=20=EC=97=90=EB=9F=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/views/join_private_screen.dart | 37 ++++++++++++++----- .../auth/widgets/auth_form_field.dart | 2 +- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/lib/features/auth/views/join_private_screen.dart b/lib/features/auth/views/join_private_screen.dart index 161086f..f1f2901 100644 --- a/lib/features/auth/views/join_private_screen.dart +++ b/lib/features/auth/views/join_private_screen.dart @@ -128,23 +128,26 @@ class _JoinPrivateScreenState extends ConsumerState { final Set _agreeToTerms = {}; void _toggleSingleTerm(Terms term) { - if (_isAllTermsAgreed()) return _agreeToTerms.clear(); - if (_agreeToTerms.contains(Terms.allTerms)) { - _agreeToTerms.clear(); - } else { - if (_agreeToTerms.contains(term)) { - _agreeToTerms.remove(term); + if (term == Terms.allTerms) { + if (_agreeToTerms.contains(Terms.allTerms)) { + _agreeToTerms.clear(); } else { - _agreeToTerms.add(term); + _agreeToTerms.addAll(Terms.values); + } + } else { + if (_agreeToTerms.contains(Terms.allTerms)) { + _agreeToTerms.remove(Terms.allTerms); } + _agreeToTerms.contains(term) + ? _agreeToTerms.remove(term) + : _agreeToTerms.add(term); } } // _aggreeToTerms에 모든 항목이 포함되어 있는지 확인 bool _isAllTermsAgreed() { return _agreeToTerms.contains(Terms.allTerms) || - _agreeToTerms.containsAll(Terms.values) || - _agreeToTerms.length == Terms.values.length - 1; + _agreeToTerms.containsAll(Terms.values); } bool _isTermsAgreed(Terms term) { @@ -393,6 +396,10 @@ class _JoinPrivateScreenState extends ConsumerState { ), ), child: AuthFormField( + style: Theme.of(context) + .textTheme + .bodyMedium! + .copyWith(fontWeight: FontWeight.w600), controller: _emailController, keyboardType: TextInputType.emailAddress, onEditingComplete: () { @@ -421,6 +428,10 @@ class _JoinPrivateScreenState extends ConsumerState { ), ), child: AuthFormField( + style: Theme.of(context) + .textTheme + .bodyMedium! + .copyWith(fontWeight: FontWeight.w600), controller: _passwordController, obscureText: true, onEditingComplete: () { @@ -449,6 +460,10 @@ class _JoinPrivateScreenState extends ConsumerState { ), ), child: AuthFormField( + style: Theme.of(context) + .textTheme + .bodyMedium! + .copyWith(fontWeight: FontWeight.w600), controller: _passwordCheckController, obscureText: true, onEditingComplete: () { @@ -477,6 +492,10 @@ class _JoinPrivateScreenState extends ConsumerState { ), ), child: AuthFormField( + style: Theme.of(context) + .textTheme + .bodyMedium! + .copyWith(fontWeight: FontWeight.w600), controller: _nameController, onEditingComplete: () { if (_name.isNotEmpty) { diff --git a/lib/features/auth/widgets/auth_form_field.dart b/lib/features/auth/widgets/auth_form_field.dart index 6bbf9e3..5ec289b 100644 --- a/lib/features/auth/widgets/auth_form_field.dart +++ b/lib/features/auth/widgets/auth_form_field.dart @@ -44,7 +44,7 @@ class AuthFormField extends StatelessWidget { errorText: errorText, border: InputBorder.none, hintText: hintText, - hintStyle: TextStyle( + hintStyle: Theme.of(context).textTheme.titleSmall!.copyWith( fontSize: 12.sp, color: Colors.grey, textBaseline: TextBaseline.alphabetic), From eb847613c52d59ae53b65b9669811d0bfe5bd14d Mon Sep 17 00:00:00 2001 From: changhwan77 Date: Fri, 16 Feb 2024 23:19:23 +0900 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20=EB=A1=9C=EA=B7=B8=EC=95=84=EC=9B=83?= =?UTF-8?q?=20=EC=8B=9C=20=ED=8A=B8=ED=8B=B0=20=ED=83=AD=EC=9C=BC=EB=A1=9C?= =?UTF-8?q?=20=EC=9D=B4=EB=8F=99=EC=8B=9C=ED=82=A4=EA=B8=B0=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/common/main_navigation_screen.dart | 88 +++++++++---------- .../service/navigation_index_provder.dart | 15 ++++ lib/common/service/tab_provider.dart | 3 + lib/constants/string.dart | 5 +- .../profile/views/profile_screen.dart | 9 +- lib/router.dart | 7 +- 6 files changed, 72 insertions(+), 55 deletions(-) create mode 100644 lib/common/service/navigation_index_provder.dart create mode 100644 lib/common/service/tab_provider.dart diff --git a/lib/common/main_navigation_screen.dart b/lib/common/main_navigation_screen.dart index ad4810c..cfe25b2 100644 --- a/lib/common/main_navigation_screen.dart +++ b/lib/common/main_navigation_screen.dart @@ -1,7 +1,9 @@ import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:go_router/go_router.dart'; import 'package:tuti/common/custom_token_manager.dart'; +import 'package:tuti/common/service/navigation_index_provder.dart'; import 'package:tuti/constants/color.dart'; import 'package:tuti/features/profile/models/member_model.dart'; import 'package:tuti/features/profile/views/profile_screen.dart'; @@ -10,63 +12,53 @@ import 'package:tuti/features/tutis/widgets/tuti_widgets/tuti_login_dialog.dart' import '../features/tutis/views/personal_branding_screen.dart'; -class MainNavigationScreen extends StatefulWidget { +class MainNavigationScreen extends ConsumerStatefulWidget { static const routeName = 'mainNavigation'; static const routeURL = 'main'; - final String tab; const MainNavigationScreen({ Key? key, - required this.tab, }) : super(key: key); @override - State createState() => _MainNavigationScreenState(); + ConsumerState createState() => + _MainNavigationScreenState(); } -class _MainNavigationScreenState extends State +class _MainNavigationScreenState extends ConsumerState with SingleTickerProviderStateMixin { - final List _tabs = [ - 'personalBranding', - 'tuti', - 'profile', - ]; - late int _selectedIndex = _tabs.indexOf(widget.tab); + @override + Widget build(BuildContext context) { + int selectedIndex = ref.watch(navigationSelectedIndexProvider); - void _onTap(int index) async { - // 유저가 마이페이지로 이동 시 authToken이 있는지 검증 - // 토큰이 null || 비어있으면 로그인 안내 다이얼로그 띄움. - if (index == 2) { - String? authToken = await CustomTokenManager.getToken(); - if (authToken == null || authToken.isEmpty) { - if (mounted) { - await showDialog( - context: context, - builder: (BuildContext context) => const LoginIntroDialog(), - ); + void navigationToScreen(int index) { + setState(() { + // 유저가 클릭한 index를 navigationSelectedIndexProvider의 state에 할당 + ref.read(navigationSelectedIndexProvider.notifier).state = index; + }); + } + + void onTap(int index) async { + // 유저가 마이페이지로 이동 시 authToken이 있는지 검증 + // 토큰이 null || 비어있으면 로그인 안내 다이얼로그 띄움. + if (index == 2) { + String? authToken = await CustomTokenManager.getToken(); + if (authToken == null || authToken.isEmpty) { + if (context.mounted) { + await showDialog( + context: context, + builder: (BuildContext context) => const LoginIntroDialog(), + ); + } + } else { + navigationToScreen(index); } + // 마이페이지로 이동하는 것이 아닐 때는 바로 이동 } else { - _navigationToScreen(index); + navigationToScreen(index); } - // 마이페이지로 이동하는 것이 아닐 때는 바로 이동 - } else { - _navigationToScreen(index); - } - } - - void _navigationToScreen(int index) { - if (mounted) { - context.go('/${_tabs[index]}'); - setState( - () { - _selectedIndex = index; - }, - ); } - } - @override - Widget build(BuildContext context) { return Center( child: Container( constraints: BoxConstraints( @@ -78,15 +70,15 @@ class _MainNavigationScreenState extends State body: Stack( children: [ Offstage( - offstage: _selectedIndex != 0, + offstage: selectedIndex != 0, child: const PersonalBrandingScreen(), ), Offstage( - offstage: _selectedIndex != 1, + offstage: selectedIndex != 1, child: const TuTiScreen(), ), Offstage( - offstage: _selectedIndex != 2, + offstage: selectedIndex != 2, child: const ProfileScreen(), ), ], @@ -98,14 +90,14 @@ class _MainNavigationScreenState extends State unselectedItemColor: Colors.grey, ), child: BottomNavigationBar( - currentIndex: _selectedIndex, - onTap: _onTap, + currentIndex: selectedIndex, + onTap: onTap, items: [ BottomNavigationBarItem( icon: Image.asset( 'assets/images/personalBranding.png', width: 24.w, - color: _selectedIndex == 0 + color: selectedIndex == 0 ? ColorConstants.primaryColor : Colors.grey, ), @@ -115,7 +107,7 @@ class _MainNavigationScreenState extends State icon: Image.asset( 'assets/images/home.png', width: 24.w, - color: _selectedIndex == 1 + color: selectedIndex == 1 ? ColorConstants.primaryColor : Colors.grey, ), @@ -125,7 +117,7 @@ class _MainNavigationScreenState extends State icon: Image.asset( 'assets/images/myPage.png', width: 24.w, - color: _selectedIndex == 2 + color: selectedIndex == 2 ? ColorConstants.primaryColor : Colors.grey, ), diff --git a/lib/common/service/navigation_index_provder.dart b/lib/common/service/navigation_index_provder.dart new file mode 100644 index 0000000..2870301 --- /dev/null +++ b/lib/common/service/navigation_index_provder.dart @@ -0,0 +1,15 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:tuti/common/service/tab_provider.dart'; + +final navigationSelectedIndexProvider = StateProvider((ref) { + final List tabs = [ + 'personalBranding', + 'tuti', + 'profile', + ]; + + final tab = ref.watch(tabsProvider); + + int selectedIndex = tabs.indexOf(tab); + return selectedIndex; +}); diff --git a/lib/common/service/tab_provider.dart b/lib/common/service/tab_provider.dart new file mode 100644 index 0000000..dda8d42 --- /dev/null +++ b/lib/common/service/tab_provider.dart @@ -0,0 +1,3 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; + +final tabsProvider = StateProvider((ref) => 'tuti'); diff --git a/lib/constants/string.dart b/lib/constants/string.dart index 6636462..f51323c 100644 --- a/lib/constants/string.dart +++ b/lib/constants/string.dart @@ -1,8 +1,9 @@ // getter로 string 만들기 class StringConstants { static String appName = "TuTi"; - - static const baseUrl = 'https://www.tuti-service.site'; + // 원래 서버 도메인 : 'https://www.tuti-service.site' + // AWS 과금 정책으로 인해 도메인 적용까지 임시 서버 주소 사용 + static const baseUrl = 'http://52.78.238.81:8080'; } final jobConstant = [ diff --git a/lib/features/profile/views/profile_screen.dart b/lib/features/profile/views/profile_screen.dart index 5541940..a93fe35 100644 --- a/lib/features/profile/views/profile_screen.dart +++ b/lib/features/profile/views/profile_screen.dart @@ -5,12 +5,15 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:go_router/go_router.dart'; import 'package:tuti/common/constraints_scaffold.dart'; import 'package:tuti/common/custom_token_manager.dart'; +import 'package:tuti/common/main_navigation_screen.dart'; +import 'package:tuti/common/service/navigation_index_provder.dart'; import 'package:tuti/common/tuti_text.dart'; import 'package:tuti/constants/gaps.dart'; import 'package:tuti/features/profile/models/proifle_model.dart'; import 'package:tuti/features/profile/services/proifle_service.dart'; import 'package:tuti/features/profile/widgets/tuti_container.dart'; import 'package:tuti/features/profile/widgets/tuti_profile.dart'; +import 'package:tuti/features/tutis/views/tuti_screen.dart'; import '../../../constants/color.dart'; import '../../tutis/widgets/tuti_widgets/tuti_days.dart'; @@ -115,9 +118,9 @@ class _ProfileScreenState extends ConsumerState { TextButton( onPressed: () async { await CustomTokenManager.removeToken(); - setState(() { - _getAuthToken(); - }); + ref + .read(navigationSelectedIndexProvider.notifier) + .state = 1; }, child: TuTiText.small( context, diff --git a/lib/router.dart b/lib/router.dart index a445d18..3a5f482 100644 --- a/lib/router.dart +++ b/lib/router.dart @@ -2,6 +2,8 @@ import 'package:flutter/foundation.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import 'package:tuti/common/flutter_security_storage_manager.dart'; +import 'package:tuti/common/service/navigation_index_provder.dart'; +import 'package:tuti/common/service/tab_provider.dart'; import 'package:tuti/features/tutis/views/home_screen.dart'; import 'package:tuti/features/tutis/views/tuti_screen.dart'; @@ -62,8 +64,9 @@ final routerProvider = Provider((ref) { name: MainNavigationScreen.routeName, path: "/:tab(personalBranding|tuti|profile)", builder: (context, state) { - final tab = state.params["tab"] ?? "tuti"; - return MainNavigationScreen(tab: tab); + String tab = state.params['tab']!; + ref.read(tabsProvider.notifier).state = tab; + return const MainNavigationScreen(); }, routes: [ GoRoute( From f1e51f59d6fd9250f62a4652558f31703eee1857 Mon Sep 17 00:00:00 2001 From: changhwan77 Date: Fri, 16 Feb 2024 23:21:34 +0900 Subject: [PATCH 5/5] =?UTF-8?q?fix:=20=EC=9C=A0=EC=A0=80=EA=B0=80=20?= =?UTF-8?q?=EC=84=A0=ED=83=9D=ED=95=9C=20tab=EC=9D=B4=20=EC=97=86=EC=9D=84?= =?UTF-8?q?=20=EC=8B=9C=20=EA=B8=B0=EB=B3=B8=20=EA=B0=92=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/router.dart | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/router.dart b/lib/router.dart index 3a5f482..b41df8c 100644 --- a/lib/router.dart +++ b/lib/router.dart @@ -1,13 +1,9 @@ -import 'package:flutter/foundation.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; -import 'package:tuti/common/flutter_security_storage_manager.dart'; -import 'package:tuti/common/service/navigation_index_provder.dart'; import 'package:tuti/common/service/tab_provider.dart'; import 'package:tuti/features/tutis/views/home_screen.dart'; import 'package:tuti/features/tutis/views/tuti_screen.dart'; -import 'common/custom_token_manager.dart'; import 'common/main_navigation_screen.dart'; import 'features/auth/views/join_private_screen.dart'; import 'features/auth/views/join_screen.dart'; @@ -64,7 +60,7 @@ final routerProvider = Provider((ref) { name: MainNavigationScreen.routeName, path: "/:tab(personalBranding|tuti|profile)", builder: (context, state) { - String tab = state.params['tab']!; + String tab = state.params['tab'] ?? 'tuti'; ref.read(tabsProvider.notifier).state = tab; return const MainNavigationScreen(); },