diff --git a/assets/images/svg/fluent_home-20-regular.svg b/assets/images/svg/fluent_home-20-regular.svg new file mode 100644 index 0000000..b28e2f5 --- /dev/null +++ b/assets/images/svg/fluent_home-20-regular.svg @@ -0,0 +1,3 @@ + + + diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index add4e3d..1e00913 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 2105BA461347F33698D3FD7B /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC7FC30109CCD5376F6BFA0F /* Pods_Runner.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; @@ -29,12 +30,15 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 01A8D59FC22474B9D47BC82F /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 3E093EFD052120EBB5EFE242 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 8DA153E7FEAC51D97681DB93 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -42,6 +46,7 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + DC7FC30109CCD5376F6BFA0F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -49,12 +54,23 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 2105BA461347F33698D3FD7B /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 01448FBCAC46C16EC8BC1181 /* Pods */ = { + isa = PBXGroup; + children = ( + 8DA153E7FEAC51D97681DB93 /* Pods-Runner.debug.xcconfig */, + 3E093EFD052120EBB5EFE242 /* Pods-Runner.release.xcconfig */, + 01A8D59FC22474B9D47BC82F /* Pods-Runner.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -72,6 +88,8 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, + 01448FBCAC46C16EC8BC1181 /* Pods */, + DE8E73CF7AB07643531FB23E /* Frameworks */, ); sourceTree = ""; }; @@ -98,6 +116,14 @@ path = Runner; sourceTree = ""; }; + DE8E73CF7AB07643531FB23E /* Frameworks */ = { + isa = PBXGroup; + children = ( + DC7FC30109CCD5376F6BFA0F /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -105,12 +131,15 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + 2427B225240D99C3274E4E9F /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 193E6ECF33FCE0798A403773 /* [CP] Embed Pods Frameworks */, + A1A5C179E86574032091061E /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -127,7 +156,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -169,6 +198,45 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 193E6ECF33FCE0798A403773 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 2427B225240D99C3274E4E9F /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -176,6 +244,7 @@ files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( @@ -199,6 +268,23 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + A1A5C179E86574032091061E /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -274,7 +360,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -290,13 +376,18 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = A89AY6VY4F; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Regroup; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.regroup; + MARKETING_VERSION = 1; + PRODUCT_BUNDLE_IDENTIFIER = com.regroup.wdi; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -351,7 +442,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -400,7 +491,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -418,13 +509,18 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = A89AY6VY4F; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Regroup; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.regroup; + MARKETING_VERSION = 1; + PRODUCT_BUNDLE_IDENTIFIER = com.regroup.wdi; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -440,13 +536,18 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = A89AY6VY4F; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Regroup; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.regroup; + MARKETING_VERSION = 1; + PRODUCT_BUNDLE_IDENTIFIER = com.regroup.wdi; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index c87d15a..a6b826d 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ + CADisableMinimumFrameDurationOnPhone + CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName @@ -24,6 +26,8 @@ $(FLUTTER_BUILD_NUMBER) LSRequiresIPhoneOS + UIApplicationSupportsIndirectInputEvents + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile @@ -43,9 +47,9 @@ UIViewControllerBasedStatusBarAppearance - CADisableMinimumFrameDurationOnPhone - - UIApplicationSupportsIndirectInputEvents - + NSPhotoLibraryAddUsageDescription + Regroup get write-only access to the user photo library + NSPhotoLibraryUsageDescription + Allow access to photo library diff --git a/lib/Common/CommonBottomNavigationBar.dart b/lib/Common/CommonBottomNavigationBar.dart index 0ee4674..2be08c2 100644 --- a/lib/Common/CommonBottomNavigationBar.dart +++ b/lib/Common/CommonBottomNavigationBar.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'package:glassmorphism/glassmorphism.dart'; import 'package:regroup/Common/controller/MainController.dart'; @@ -8,7 +9,7 @@ GlassmorphicContainer bottomnavigationbar(MainController _mainController) { width: double.infinity, height: 83.h, borderRadius: 2, - blur: 30, + blur: 6, alignment: Alignment.center, border: 0, linearGradient: LinearGradient( @@ -16,7 +17,7 @@ GlassmorphicContainer bottomnavigationbar(MainController _mainController) { end: Alignment.bottomRight, colors: [ Colors.white.withOpacity(0.04), - Color(0xFFFFFFFF).withOpacity(0.05), + const Color(0xFFFFFFFF).withOpacity(0.05), ], stops: const [ 0.1, @@ -31,7 +32,6 @@ GlassmorphicContainer bottomnavigationbar(MainController _mainController) { ], ), child: BottomNavigationBar( - // backgroundColor: , type: BottomNavigationBarType.fixed, backgroundColor: const Color(0xFFFFFFFF).withOpacity(0), showUnselectedLabels: true, @@ -41,22 +41,22 @@ GlassmorphicContainer bottomnavigationbar(MainController _mainController) { fontSize: 10.sp, color: const Color(0xFF676767), fontWeight: FontWeight.w400, - fontFamily: 'hiragino'), + fontFamily: 'Helvetica'), selectedLabelStyle: TextStyle( fontSize: 10.sp, color: const Color(0xFFFFFFFF), fontWeight: FontWeight.w400, - fontFamily: 'hiragino'), + fontFamily: 'Helvetica'), currentIndex: _mainController.selectedIndex.value, onTap: (index) { _mainController.updateTab(index); }, items: [ BottomNavigationBarItem( - icon: Image.asset( - 'assets/images/png/BottomBar/inactiveHome.png', - height: 26.h, - width: 26.w, + icon: SvgPicture.asset( + 'assets/images/svg/fluent_home-20-regular.svg', + height: 25.h, + width: 25.w, ), // Icon( // Icons.home, @@ -67,13 +67,13 @@ GlassmorphicContainer bottomnavigationbar(MainController _mainController) { children: [ if (_mainController.selectedIndex.value == 0) Container( - height: 40.h, - width: 40.w, + height: 39.h, + // width: 40.w, decoration: BoxDecoration( shape: BoxShape.circle, boxShadow: [ BoxShadow( - color: Color(0xFFD90B2E).withOpacity(0.16), + color: Colors.amber, spreadRadius: 15, blurRadius: 25, offset: const Offset(0, 10), @@ -81,27 +81,27 @@ GlassmorphicContainer bottomnavigationbar(MainController _mainController) { ], ), ), - Positioned( - left: 0, - right: 0, - top: -15, - child: Container( - height: 2.h, - width: 20.w, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10.r), - color: Color(0xFFD90B2E)), - )), + // Positioned( + // left: 0, + // right: 0, + // top: -15, + // child: Container( + // height: 2.h, + // width: 20.w, + // decoration: BoxDecoration( + // borderRadius: BorderRadius.circular(10.r), + // color: const Color(0xFFD90B2E)), + // )), Positioned( top: 0, bottom: 0, right: 0, left: 0, child: Center( - child: Image.asset( - 'assets/images/png/BottomBar/ActiveHome.png', - height: 30.h, - width: 30.w, + child: SvgPicture.asset( + 'assets/images/svg/fluent_home-20-regular.svg', + // height: 25.h, + // width: 25.w, ), ), ) @@ -128,7 +128,7 @@ GlassmorphicContainer bottomnavigationbar(MainController _mainController) { shape: BoxShape.circle, boxShadow: [ BoxShadow( - color: Color(0xFFD90B2E).withOpacity(0.16), + color: const Color(0xFFD90B2E).withOpacity(0.16), spreadRadius: 15, blurRadius: 25, offset: const Offset(0, 10), @@ -145,7 +145,7 @@ GlassmorphicContainer bottomnavigationbar(MainController _mainController) { width: 20.w, decoration: BoxDecoration( borderRadius: BorderRadius.circular(10.r), - color: Color(0xFFD90B2E)), + color: const Color(0xFFD90B2E)), )), Positioned( left: 0, @@ -182,7 +182,7 @@ GlassmorphicContainer bottomnavigationbar(MainController _mainController) { shape: BoxShape.circle, boxShadow: [ BoxShadow( - color: Color(0xFFD90B2E).withOpacity(0.16), + color: const Color(0xFFD90B2E).withOpacity(0.16), spreadRadius: 15, blurRadius: 25, offset: const Offset(0, 10), @@ -199,7 +199,7 @@ GlassmorphicContainer bottomnavigationbar(MainController _mainController) { width: 20.w, decoration: BoxDecoration( borderRadius: BorderRadius.circular(10.r), - color: Color(0xFFD90B2E)), + color: const Color(0xFFD90B2E)), )), Positioned( left: 0, @@ -236,7 +236,7 @@ GlassmorphicContainer bottomnavigationbar(MainController _mainController) { shape: BoxShape.circle, boxShadow: [ BoxShadow( - color: Color(0xFFD90B2E).withOpacity(0.16), + color: const Color(0xFFD90B2E).withOpacity(0.16), spreadRadius: 15, blurRadius: 25, offset: const Offset(0, 10), @@ -253,7 +253,7 @@ GlassmorphicContainer bottomnavigationbar(MainController _mainController) { width: 20.w, decoration: BoxDecoration( borderRadius: BorderRadius.circular(10.r), - color: Color(0xFFD90B2E)), + color: const Color(0xFFD90B2E)), )), Positioned( left: 0, @@ -290,7 +290,7 @@ GlassmorphicContainer bottomnavigationbar(MainController _mainController) { shape: BoxShape.circle, boxShadow: [ BoxShadow( - color: Color(0xFFD90B2E).withOpacity(0.16), + color: const Color(0xFFD90B2E).withOpacity(0.16), spreadRadius: 15, blurRadius: 25, offset: const Offset(0, 10), @@ -307,7 +307,7 @@ GlassmorphicContainer bottomnavigationbar(MainController _mainController) { width: 20.w, decoration: BoxDecoration( borderRadius: BorderRadius.circular(10.r), - color: Color(0xFFD90B2E)), + color: const Color(0xFFD90B2E)), )), Positioned( left: 0, diff --git a/lib/Feed Module/Main_Screens/Community/Community.dart b/lib/Feed Module/Main_Screens/Community/Community.dart index 756ccce..b613e85 100644 --- a/lib/Feed Module/Main_Screens/Community/Community.dart +++ b/lib/Feed Module/Main_Screens/Community/Community.dart @@ -34,13 +34,13 @@ class _CommunityScreenState extends State { Widget build(BuildContext context) { return Scaffold( key: _scaffoldKey1, - backgroundColor: Color(0xFF222935), + backgroundColor: const Color(0xFF222935), // drawerEnableOpenDragGesture: false, - drawer: SizedBox(width: 300.w, child: SideMenu()), + drawer: SizedBox(width: 300.w, child: const SideMenu()), extendBody: true, appBar: AppBar( scrolledUnderElevation: 0.0, - backgroundColor: Color(0xff222935), + backgroundColor: const Color(0xff222935), elevation: 0, automaticallyImplyLeading: false, titleSpacing: 0, @@ -86,53 +86,52 @@ class _CommunityScreenState extends State { sizedBoxWidth(16.w), ], ), - body: Stack(children: [ - const CommonBlurLeftRed(), - const CommonBlurRightRed(), - const CommonBlurLeft(), - const CommonBlurRight(), - Stack(children: [ - Padding( - padding: const EdgeInsets.symmetric(vertical: 16), - child: Column(children: [ - Expanded( - child: DefaultTabController( - length: 3, - // initialIndex: selectedIndex.value, - child: Column( - children: [ - CommonTabBar(tabs: const [ - Tab( - text: 'Feed', - ), - Tab( - text: 'Popular', - ), - Tab( - text: 'Latest', - ), - ]), - Expanded( - child: TabBarView( - children: [ - feedTab(), - popularTab(), - latestTab(), - ], - ), + body: + // const CommonBlurLeftRed(), + // const CommonBlurRightRed(), + // const CommonBlurLeft(), + // const CommonBlurRight(), + Stack(children: [ + Padding( + padding: const EdgeInsets.symmetric(vertical: 16), + child: Column(children: [ + Expanded( + child: DefaultTabController( + length: 3, + // initialIndex: selectedIndex.value, + child: Column( + children: [ + CommonTabBar(tabs: const [ + Tab( + text: 'Feed', ), - sizedBoxHeight(90.h) - ], - ), + Tab( + text: 'Popular', + ), + Tab( + text: 'Latest', + ), + ]), + Expanded( + child: TabBarView( + children: [ + feedTab(), + popularTab(), + latestTab(), + ], + ), + ), + sizedBoxHeight(90.h) + ], ), ), - ])) - ]) + ), + ])) ]), floatingActionButton: Container( height: 55.h, width: 55.w, - decoration: BoxDecoration( + decoration: const BoxDecoration( shape: BoxShape.circle, boxShadow: [ BoxShadow( @@ -146,9 +145,9 @@ class _CommunityScreenState extends State { onPressed: () { Get.toNamed(RouteName.postscreen); }, - backgroundColor: Color(0xFFD90B2E), + backgroundColor: const Color(0xFFD90B2E), autofocus: true, - shape: CircleBorder(), + shape: const CircleBorder(), child: Image.asset( "assets/images/png/iconamoon_edit-thin.png", height: 30.h, @@ -251,7 +250,7 @@ Widget announcecardtile({ sizedBoxWidth(7.w), Icon( Icons.circle, - color: Color(0xFFFCFCFC), + color: const Color(0xFFFCFCFC), size: 4.sp, ), sizedBoxWidth(6.w), @@ -260,12 +259,12 @@ Widget announcecardtile({ ) ], ), - Spacer(), + const Spacer(), PopupMenuButton( - surfaceTintColor: Color(0xFF222935), + surfaceTintColor: const Color(0xFF222935), constraints: BoxConstraints.tightFor(width: 176.w), - offset: Offset(0, 50), - color: Color(0xFF222935), + offset: const Offset(0, 50), + color: const Color(0xFF222935), tooltip: "", itemBuilder: (BuildContext context) => [ PopupMenuItem( @@ -283,7 +282,7 @@ Widget announcecardtile({ fontFamily: "Nunito Sans", ), ), - Spacer(), + const Spacer(), Image.asset( "assets/images/png/Vector (5).png", height: 15.h, @@ -293,7 +292,7 @@ Widget announcecardtile({ ), ), ), - PopupMenuDivider(), + const PopupMenuDivider(), PopupMenuItem( onTap: () {}, child: Padding( @@ -309,7 +308,7 @@ Widget announcecardtile({ fontFamily: "Nunito Sans", ), ), - Spacer(), + const Spacer(), Image.asset( "assets/images/png/share.png", height: 20.h, @@ -319,7 +318,7 @@ Widget announcecardtile({ ), ), ), - PopupMenuDivider(), + const PopupMenuDivider(), PopupMenuItem( onTap: () {}, child: Padding( @@ -335,7 +334,7 @@ Widget announcecardtile({ fontFamily: "Nunito Sans", ), ), - Spacer(), + const Spacer(), Image.asset( "assets/images/png/f7_pin-fill (2).png", height: 25.h, @@ -405,7 +404,7 @@ Widget announcecardtile({ 'assets/images/png/party-popper 2.png' ]), ), - Spacer(), + const Spacer(), commonGlassContainer( border: 0.43, width: 30.w, @@ -490,11 +489,13 @@ Widget announcecardtile({ boxRadius: 30, itemsSpacing: 8, itemScale: 0.4, - itemSize: Size(45, 45), - boxPadding: EdgeInsets.all(8), - boxAnimationDuration: Duration(milliseconds: 200), - itemAnimationDuration: Duration(milliseconds: 500), - hoverDuration: Duration(milliseconds: 700), + itemSize: const Size(45, 45), + boxPadding: const EdgeInsets.all(8), + boxAnimationDuration: + const Duration(milliseconds: 200), + itemAnimationDuration: + const Duration(milliseconds: 500), + hoverDuration: const Duration(milliseconds: 700), // toggle: false, child: _buildReactionsIcon(mainImage.value), @@ -592,7 +593,7 @@ Widget normalcardtile({ sizedBoxWidth(7.w), Icon( Icons.circle, - color: Color(0xFFFCFCFC), + color: const Color(0xFFFCFCFC), size: 4.sp, ), sizedBoxWidth(6.w), @@ -601,12 +602,12 @@ Widget normalcardtile({ ) ], ), - Spacer(), + const Spacer(), PopupMenuButton( - surfaceTintColor: Color(0xFF222935), + surfaceTintColor: const Color(0xFF222935), constraints: BoxConstraints.tightFor(width: 176.w), - offset: Offset(0, 50), - color: Color(0xFF222935), + offset: const Offset(0, 50), + color: const Color(0xFF222935), tooltip: "", itemBuilder: (BuildContext context) => [ PopupMenuItem( @@ -624,7 +625,7 @@ Widget normalcardtile({ fontFamily: "Nunito Sans", ), ), - Spacer(), + const Spacer(), Image.asset( "assets/images/png/Vector (5).png", height: 15.h, @@ -634,7 +635,7 @@ Widget normalcardtile({ ), ), ), - PopupMenuDivider(), + const PopupMenuDivider(), PopupMenuItem( onTap: () {}, child: Padding( @@ -650,7 +651,7 @@ Widget normalcardtile({ fontFamily: "Nunito Sans", ), ), - Spacer(), + const Spacer(), Image.asset( "assets/images/png/share.png", height: 20.h, @@ -660,7 +661,7 @@ Widget normalcardtile({ ), ), ), - PopupMenuDivider(), + const PopupMenuDivider(), PopupMenuItem( onTap: () {}, child: Padding( @@ -676,7 +677,7 @@ Widget normalcardtile({ fontFamily: "Nunito Sans", ), ), - Spacer(), + const Spacer(), Image.asset( "assets/images/png/f7_pin-fill (2).png", height: 25.h, @@ -747,7 +748,7 @@ Widget normalcardtile({ 'assets/images/png/party-popper 2.png' ]), ), - Spacer(), + const Spacer(), commonGlassContainer( border: 0.43, width: 30.w, @@ -833,11 +834,13 @@ Widget normalcardtile({ boxRadius: 30, itemsSpacing: 8, itemScale: 0.4, - itemSize: Size(45, 45), - boxPadding: EdgeInsets.all(8), - boxAnimationDuration: Duration(milliseconds: 200), - itemAnimationDuration: Duration(milliseconds: 500), - hoverDuration: Duration(milliseconds: 700), + itemSize: const Size(45, 45), + boxPadding: const EdgeInsets.all(8), + boxAnimationDuration: + const Duration(milliseconds: 200), + itemAnimationDuration: + const Duration(milliseconds: 500), + hoverDuration: const Duration(milliseconds: 700), // toggle: false, direction: ReactionsBoxAlignment.rtl, @@ -915,7 +918,7 @@ Widget containertile({required String text}) { width: 130.w, height: 30.h, borderradius: 30.r, - borderColor: Color(0xFFD90B2E), + borderColor: const Color(0xFFD90B2E), customWidget: Padding( padding: EdgeInsets.symmetric(horizontal: 10.w), child: Center(child: text14w400_FCFCFC(text)), diff --git a/lib/Login/View/loginscreen.dart b/lib/Login/View/loginscreen.dart index 3327348..eabc455 100644 --- a/lib/Login/View/loginscreen.dart +++ b/lib/Login/View/loginscreen.dart @@ -13,6 +13,7 @@ import 'package:regroup/Utils/Common/sized_box.dart'; import 'package:regroup/Utils/texts.dart'; import 'package:regroup/resources/routes/route_name.dart'; import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart'; +import 'package:show_fps/show_fps.dart'; class LoginScreen extends StatefulWidget { const LoginScreen({super.key}); @@ -22,471 +23,244 @@ class LoginScreen extends StatefulWidget { } class _LoginScreenState extends State { - TextEditingController _email = TextEditingController(); + final TextEditingController _email = TextEditingController(); RxBool isObscured = true.obs; - TextEditingController _password = TextEditingController(); + final TextEditingController _password = TextEditingController(); // final GlobalKey _form = GlobalKey(); @override Widget build(BuildContext context) { return Scaffold( - backgroundColor: Color.fromARGB(255, 18, 32, 47), - body: Stack( - children: [ - Positioned(top: 210, left: -30, child: CommonBlurLeftSecond()), - Positioned(top: 400, right: -30, child: CommonBlurRightSecond()), - Positioned(top: 550, left: -30, child: CommonBlurLeftBlue()), - SingleChildScrollView( - child: GlassmorphicContainer( - width: MediaQuery.of(context).size.width, - height: - // 500.h, - MediaQuery.of(context).size.height, - borderRadius: 2, - blur: 10, - alignment: Alignment.bottomLeft, - border: 2, - linearGradient: LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [ - Color(0XFF222935).withOpacity(0.60), - Color(0XFF222935).withOpacity(0.60), - Color(0XFF222935).withOpacity(0.60), - Color(0XFF222935).withOpacity(0.60), - - // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - ], - ), - borderGradient: LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [ - // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - Color(0XFF222935).withOpacity(0.60), - - Color(0XFF222935).withOpacity(0.60), - ], - ), + resizeToAvoidBottomInset: + false, // Prevent resizing when the keyboard opens + backgroundColor: const Color.fromARGB(255, 18, 32, 47), + body: Stack( + clipBehavior: Clip.none, + children: [ + Container( + decoration: const BoxDecoration( + image: DecorationImage( + image: AssetImage("assets/images/png/Choice screen.png"))), + ), + Center( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + height: 271.h, + ), + Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Container( - width: double.infinity, - height: 271.h, - decoration: BoxDecoration( - image: DecorationImage( - image: AssetImage( - "assets/images/png/blurwhole.png"), - fit: BoxFit.fill)), - child: Column( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Padding( - padding: EdgeInsets.only(top: 100.h), - child: Center( - child: SvgPicture.asset( - "assets/images/svg/onboarding2.svg", - width: 104.w, - height: 104.h, - ), - ), - ), - sizedBoxHeight(15.h), - Center( - child: text22400white('Find your community')), - ], + sizedBoxHeight(35.h), + text16400white('Email address'), + sizedBoxHeight(10.h), + CustomTextFormField( + textEditingController: _email, + hintText: "Enter your email address", + leadingIcon: + // const Icon(Icons.mail_outline), + SizedBox( + width: 22.w, + height: 17.h, + child: Image.asset( + 'assets/images/png/mail.png', + width: 22.w, + height: 17.h, + ), + ), + // validatorText: "Email Id", + validator: (value) { + if (value!.isEmpty) { + return 'Enter your e-mail address'; + } + if (!RegExp( + r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$') + .hasMatch(value)) { + return 'Enter a valid e-mail address'; + } + return null; + }, + inputFormatters: [ + LengthLimitingTextInputFormatter(30), + RemoveEmojiInputFormatter() + ], + ), + sizedBoxHeight(10.h), + text16400white('Password'), + sizedBoxHeight(10.h), + CustomTextFormField( + isInputPassword: true, + textEditingController: _password, + hintText: 'Enter your password', + leadingIcon: Image.asset( + 'assets/images/png/lock.png', + width: 22.w, + height: 17.h, + ), + validator: (val) { + if (val == null || val.isEmpty) { + return 'Please enter your password'; + } + return null; + }, + inputFormatters: [ + LengthLimitingTextInputFormatter(20), + RemoveEmojiInputFormatter() + ], + ), + sizedBoxHeight(10.h), + Align( + alignment: Alignment.centerRight, + child: Padding( + padding: EdgeInsets.only(right: 6.w), + child: text14400white('Forgot password ?'), )), - Padding( - padding: EdgeInsets.symmetric(horizontal: 16.w), - child: Column( + sizedBoxHeight(40.h), + CustomButton( + text: "Login", + onPressed: () { + Get.toNamed(RouteName.mainscreen); + }), + sizedBoxHeight(20.h), + GestureDetector( + onTap: () { + Get.toNamed(RouteName.signupscreen); + }, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, children: [ - sizedBoxHeight(35.h), - text16400white('Email address'), - sizedBoxHeight(10.h), - // TextFormField( - // style: TextStyle( - // fontSize: 16.sp, color: Colors.white), - // validator: (value) { - // if (value == null || value.isEmpty) { - // return "Please enter email"; - // } - - // // Check if the entered value is a valid email address - // bool isEmailValid = RegExp( - // r'^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$') - // .hasMatch(value); - - // if (!isEmailValid) { - // return "Please enter valid email"; - // } - - // return null; - // }, - // inputFormatters: [ - // RemoveEmojiInputFormatter(), - // LengthLimitingTextInputFormatter(50) - // ], - // controller: _email, - // cursorColor: Colors.white, - // autovalidateMode: - // AutovalidateMode.onUserInteraction, - // decoration: InputDecoration( - // fillColor: Color(0xFFFFFFFF).withOpacity(0.10), - // filled: true, - // prefixIcon: Image.asset( - // 'assets/images/png/mail.png', - // width: 22.w, - // height: 17.h, - // ), - // // Icon( - // // Icons.mail_outline, - // // color: Colors.white, - // // ), - // hintText: 'Enter your email address', - // hintStyle: TextStyle( - // color: Colors.white, - // fontSize: 14.sp, - // fontWeight: FontWeight.w400, - // fontFamily: - // "Helvetica" // Default label color - // ), - // enabledBorder: OutlineInputBorder( - // borderSide: const BorderSide( - // color: Color(0xFF434A53), - // ), - // borderRadius: BorderRadius.all( - // Radius.circular(30.r), - // ), - // ), - // focusedBorder: OutlineInputBorder( - // borderSide: BorderSide( - // color: Color( - // 0xFF434A53), // Border color when focused - // ), - // borderRadius: BorderRadius.all( - // Radius.circular(30.r), - // ), - // ), - // errorBorder: OutlineInputBorder( - // borderRadius: BorderRadius.circular(30.r), - // borderSide: - // const BorderSide(color: Colors.red), - // ), - // focusedErrorBorder: OutlineInputBorder( - // // borderRadius: BorderRadius.circular(8.r), - // borderSide: BorderSide( - // color: Colors.red, - // ), - // borderRadius: BorderRadius.all( - // Radius.circular(30.r), - // ), - // ), - // ), - // ), - CustomTextFormField( - textEditingController: _email, - hintText: "Enter your email address", - leadingIcon: - // const Icon(Icons.mail_outline), - SizedBox( - width: 22.w, - height: 17.h, - child: Image.asset( - 'assets/images/png/mail.png', - width: 22.w, - height: 17.h, - ), - ), - // validatorText: "Email Id", - validator: (value) { - if (value!.isEmpty) { - return 'Enter your e-mail address'; - } - if (!RegExp( - r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$') - .hasMatch(value)) { - return 'Enter a valid e-mail address'; - } - return null; - }, - inputFormatters: [ - LengthLimitingTextInputFormatter(30), - RemoveEmojiInputFormatter() - ], - ), - sizedBoxHeight(10.h), - text16400white('Password'), - sizedBoxHeight(10.h), - // Obx(() { - // return TextFormField( - // style: TextStyle( - // fontSize: 16.sp, color: Colors.white), - // cursorColor: Colors.white, - // autovalidateMode: - // AutovalidateMode.onUserInteraction, - // obscureText: isObscured.value, - // controller: _password, - // decoration: InputDecoration( - // filled: true, - // fillColor: - // Color(0xFFFFFFFF).withOpacity(0.10), - // prefixIcon: Image.asset( - // 'assets/images/png/lock.png', - // width: 22.w, - // height: 17.h, - // ), - // // const Icon( - // // Icons.lock_outline, - // // color: Colors.white, - // // ), - // suffixIcon: Padding( - // padding: EdgeInsets.only(right: 5.w), - // child: IconButton( - // onPressed: () { - // isObscured.value = !isObscured.value; - // }, - // color: Color(0xFF959595), - // icon: isObscured.value - // // ? const Icon(Icons.visibility_off) - // // : const Icon(Icons.visibility)), - // ? SvgPicture.asset( - // "assets/images/svg/loginpasswordclose.svg") - // // const Icon(Icons.remove_red_eye) - // : SvgPicture.asset( - // 'assets/images/svg/loginpasswordopen.svg') - // // const Icon( - // // Icons.remove_red_eye_outlined) - // ), - // ), - // hintText: 'Enter your password', - // hintStyle: TextStyle( - // color: Colors.white, - // fontSize: 14.sp, - // fontWeight: FontWeight.w400, - // fontFamily: - // "Helvetica" // Default label color - // ), - // enabledBorder: OutlineInputBorder( - // borderSide: const BorderSide( - // color: Color(0xFF434A53), - // ), - // borderRadius: BorderRadius.all( - // Radius.circular(30.r), - // ), - // ), - // focusedBorder: OutlineInputBorder( - // borderSide: BorderSide( - // color: Color( - // 0xFF434A53), // Border color when focused - // ), - // borderRadius: BorderRadius.all( - // Radius.circular(30.r), - // ), - // ), - // errorBorder: OutlineInputBorder( - // borderRadius: BorderRadius.circular(30.r), - // borderSide: - // const BorderSide(color: Colors.red), - // ), - // focusedErrorBorder: OutlineInputBorder( - // // borderRadius: BorderRadius.circular(8.r), - // borderSide: BorderSide( - // color: Colors.red, - // ), - // borderRadius: BorderRadius.all( - // Radius.circular(30.r), - // ), - // ), - // ), - // validator: (val) { - // if (val == null || val.isEmpty) { - // return 'Please enter your password'; - // } - // return null; - // }, - // inputFormatters: [ - // RemoveEmojiInputFormatter(), - // LengthLimitingTextInputFormatter(50) - // ], - // ); - // }), - CustomTextFormField( - isInputPassword: true, - textEditingController: _password, - hintText: 'Enter your password', - leadingIcon: Image.asset( - 'assets/images/png/lock.png', - width: 22.w, - height: 17.h, - ), - // const Icon(Icons.lock_outline), - // validationMessage: "Enter your password", - validator: (val) { - if (val == null || val.isEmpty) { - return 'Please enter your password'; - } - return null; - }, - inputFormatters: [ - LengthLimitingTextInputFormatter(20), - RemoveEmojiInputFormatter() - ], - ), - sizedBoxHeight(10.h), - Align( - alignment: Alignment.centerRight, - child: Padding( - padding: EdgeInsets.only(right: 6.w), - child: text14400white('Forgot password ?'), - )), - sizedBoxHeight(40.h), - CustomButton(text: "Login", onPressed: () { - Get.toNamed(RouteName.mainscreen); - }), - sizedBoxHeight(20.h), - GestureDetector( - onTap: () { - Get.toNamed(RouteName.signupscreen); - }, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - text14400white('Don’t have account ? '), - sizedBoxWidth(5.w), - text14700white('Sign up') - ], - ), - ), - sizedBoxHeight(30.h), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Container( - width: 160, - decoration: ShapeDecoration( - shape: RoundedRectangleBorder( - side: BorderSide( - width: 0.50, - strokeAlign: - BorderSide.strokeAlignCenter, - color: Color(0xFF434A53), - ), - ), - ), - ), - sizedBoxWidth(6.w), - text14400white('Or'), - sizedBoxWidth(6.w), - Container( - width: 160, - decoration: ShapeDecoration( - shape: RoundedRectangleBorder( - side: BorderSide( - width: 0.50, - strokeAlign: - BorderSide.strokeAlignCenter, - color: Color(0xFF434A53), - ), - ), - ), - ), - ], - ), - sizedBoxHeight(20.h), - Center( - child: SizedBox( - width: 220.w, - child: Row( - children: [ - Container( - width: 55, - height: 55, - decoration: ShapeDecoration( - gradient: LinearGradient( - begin: Alignment(0.71, -0.70), - end: Alignment(-0.71, 0.7), - colors: [ - Colors.white.withOpacity( - 0.07999999821186066), - Colors.white.withOpacity( - 0.12999999523162842) - ], - ), - shape: OvalBorder( - side: BorderSide( - width: 0.50, - color: Color(0xFF434A53)), - ), - image: DecorationImage( - image: AssetImage( - 'assets/images/png/login2.png'))), - ), - Spacer(), - Container( - width: 55, - height: 55, - decoration: ShapeDecoration( - gradient: LinearGradient( - begin: Alignment(0.71, -0.70), - end: Alignment(-0.71, 0.7), - colors: [ - Colors.white.withOpacity( - 0.07999999821186066), - Colors.white.withOpacity( - 0.12999999523162842) - ], - ), - shape: OvalBorder( - side: BorderSide( - width: 0.50, - color: Color(0xFF434A53)), - ), - image: DecorationImage( - image: AssetImage( - 'assets/images/png/login3.png'))), - ), - Spacer(), - Container( - width: 55, - height: 55, - decoration: ShapeDecoration( - gradient: LinearGradient( - begin: Alignment(0.71, -0.70), - end: Alignment(-0.71, 0.7), - colors: [ - Colors.white.withOpacity( - 0.07999999821186066), - Colors.white.withOpacity( - 0.12999999523162842) - ], - ), - shape: OvalBorder( - side: BorderSide( - width: 0.50, - color: Color(0xFF434A53)), - ), - image: DecorationImage( - image: AssetImage( - 'assets/images/png/login4.png'))), - ), - ], - ), - ), - ) + text14400white('Don’t have account ? '), + sizedBoxWidth(5.w), + text14700white('Sign up') ], ), + ), + sizedBoxHeight(30.h), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + width: 160, + decoration: const ShapeDecoration( + shape: RoundedRectangleBorder( + side: BorderSide( + width: 0.50, + strokeAlign: BorderSide.strokeAlignCenter, + color: Color(0xFF434A53), + ), + ), + ), + ), + sizedBoxWidth(6.w), + text14400white('Or'), + sizedBoxWidth(6.w), + Container( + width: 160, + decoration: const ShapeDecoration( + shape: RoundedRectangleBorder( + side: BorderSide( + width: 0.50, + strokeAlign: BorderSide.strokeAlignCenter, + color: Color(0xFF434A53), + ), + ), + ), + ), + ], + ), + sizedBoxHeight(20.h), + Center( + child: SizedBox( + width: 220.w, + child: Row( + children: [ + Container( + width: 55, + height: 55, + decoration: ShapeDecoration( + gradient: LinearGradient( + begin: const Alignment(0.71, -0.70), + end: const Alignment(-0.71, 0.7), + colors: [ + Colors.white + .withOpacity(0.07999999821186066), + Colors.white + .withOpacity(0.12999999523162842) + ], + ), + shape: const OvalBorder( + side: BorderSide( + width: 0.50, + color: Color(0xFF434A53)), + ), + image: const DecorationImage( + image: AssetImage( + 'assets/images/png/login2.png'))), + ), + const Spacer(), + Container( + width: 55, + height: 55, + decoration: ShapeDecoration( + gradient: LinearGradient( + begin: const Alignment(0.71, -0.70), + end: const Alignment(-0.71, 0.7), + colors: [ + Colors.white + .withOpacity(0.07999999821186066), + Colors.white + .withOpacity(0.12999999523162842) + ], + ), + shape: const OvalBorder( + side: BorderSide( + width: 0.50, + color: Color(0xFF434A53)), + ), + image: const DecorationImage( + image: AssetImage( + 'assets/images/png/login3.png'))), + ), + const Spacer(), + Container( + width: 55, + height: 55, + decoration: ShapeDecoration( + gradient: LinearGradient( + begin: const Alignment(0.71, -0.70), + end: const Alignment(-0.71, 0.7), + colors: [ + Colors.white + .withOpacity(0.07999999821186066), + Colors.white + .withOpacity(0.12999999523162842) + ], + ), + shape: const OvalBorder( + side: BorderSide( + width: 0.50, + color: Color(0xFF434A53)), + ), + image: const DecorationImage( + image: AssetImage( + 'assets/images/png/login4.png'))), + ), + ], + ), + ), ) ], - )), + ), + ) + ], ), - ], - )); + ), + ], + ), + ); } } diff --git a/lib/Utils/Common/CustomTextformfield.dart b/lib/Utils/Common/CustomTextformfield.dart index 2aa673b..e58dcf1 100644 --- a/lib/Utils/Common/CustomTextformfield.dart +++ b/lib/Utils/Common/CustomTextformfield.dart @@ -83,7 +83,7 @@ class _CustomTextFormFieldState extends State { width: double.infinity, height: 50, borderRadius: 30, - blur: 10, + blur: 6, alignment: Alignment.bottomCenter, border: 0.8, linearGradient: LinearGradient( @@ -93,7 +93,7 @@ class _CustomTextFormFieldState extends State { const Color(0xFFffffff).withOpacity(widget.opacity1), const Color(0xFFFFFFFF).withOpacity(widget.opacity2), ], - stops: [ + stops: const [ 0.1, 1, ]), @@ -120,7 +120,7 @@ class _CustomTextFormFieldState extends State { decoration: InputDecoration( hintText: widget.hintText, prefixIconColor: widget.prefixIconColor, - constraints: BoxConstraints(minHeight: 50), + constraints: const BoxConstraints(minHeight: 50), hintStyle: TextStyle( fontSize: 16.sp, color: Colors.white, @@ -129,7 +129,7 @@ class _CustomTextFormFieldState extends State { prefixIcon: widget.leadingIcon == null ? null : Padding( - padding: EdgeInsets.symmetric(horizontal: 10), + padding: const EdgeInsets.symmetric(horizontal: 10), child: widget.leadingIcon!, ), suffixIcon: widget.isInputPassword @@ -140,7 +140,7 @@ class _CustomTextFormFieldState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ Padding( - padding: EdgeInsets.only(right: 20.0), + padding: const EdgeInsets.only(right: 20.0), child: SvgPicture.asset( "assets/images/svg/loginpasswordclose.svg", ), @@ -151,7 +151,7 @@ class _CustomTextFormFieldState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ Padding( - padding: EdgeInsets.only(right: 20.0), + padding: const EdgeInsets.only(right: 20.0), child: SvgPicture.asset( 'assets/images/svg/loginpasswordopen.svg', ), @@ -176,7 +176,7 @@ class _CustomTextFormFieldState extends State { ), sizedBoxHeight(5.h), widget.validationMessage == null - ? SizedBox() + ? const SizedBox() : Text( widget.validationMessage ?? '', style: TextStyle(color: Colors.red, fontSize: 12.sp), @@ -256,7 +256,7 @@ class _CustomTextFormField2State extends State { width: double.infinity, height: 100.h, borderRadius: 10, - blur: 10, + blur: 6, alignment: Alignment.bottomCenter, border: 0.8, linearGradient: LinearGradient( @@ -266,7 +266,7 @@ class _CustomTextFormField2State extends State { const Color(0xFFffffff).withOpacity(0.04), const Color(0xFFFFFFFF).withOpacity(0.05), ], - stops: [ + stops: const [ 0.1, 1, ]), @@ -293,7 +293,7 @@ class _CustomTextFormField2State extends State { decoration: InputDecoration( hintText: widget.hintText, prefixIconColor: widget.prefixIconColor, - constraints: BoxConstraints(minHeight: 50), + constraints: const BoxConstraints(minHeight: 50), hintStyle: TextStyle( fontSize: 16.sp, @@ -452,7 +452,7 @@ class _CustomtextFormFieldPasswordState const Color(0xFFffffff).withOpacity(0.04), const Color(0xFFFFFFFF).withOpacity(0.05), ], - stops: [0.1, 1], + stops: const [0.1, 1], ), borderGradient: const LinearGradient( begin: Alignment.topLeft, @@ -485,9 +485,10 @@ class _CustomtextFormFieldPasswordState labelStyle: const TextStyle(color: Colors.white), errorStyle: TextStyle( fontSize: 13.sp, - color: Color.fromARGB(255, 245, 130, 122), + color: const Color.fromARGB(255, 245, 130, 122), ), - contentPadding: EdgeInsets.symmetric(vertical: 10, horizontal: 0), + contentPadding: + const EdgeInsets.symmetric(vertical: 10, horizontal: 0), filled: true, fillColor: Colors.transparent, // Make sure fillColor is transparent @@ -504,7 +505,7 @@ class _CustomtextFormFieldPasswordState mainAxisAlignment: MainAxisAlignment.center, children: [ Padding( - padding: EdgeInsets.only(right: 20.0), + padding: const EdgeInsets.only(right: 20.0), child: SvgPicture.asset( "assets/images/svg/loginpasswordclose.svg", ), @@ -515,7 +516,7 @@ class _CustomtextFormFieldPasswordState mainAxisAlignment: MainAxisAlignment.center, children: [ Padding( - padding: EdgeInsets.only(right: 20.0), + padding: const EdgeInsets.only(right: 20.0), child: SvgPicture.asset( 'assets/images/svg/loginpasswordopen.svg', ), @@ -624,7 +625,7 @@ class _SearchTextFormFieldState extends State { const Color(0xFFffffff).withOpacity(0.04), const Color(0xFFFFFFFF).withOpacity(0.05), ], - stops: [ + stops: const [ 0.1, 1, ]), @@ -651,7 +652,7 @@ class _SearchTextFormFieldState extends State { decoration: InputDecoration( hintText: widget.hintText, prefixIconColor: widget.prefixIconColor, - constraints: BoxConstraints(minHeight: 50), + constraints: const BoxConstraints(minHeight: 50), hintStyle: TextStyle( fontSize: 16.sp, color: Colors.white, @@ -667,7 +668,7 @@ class _SearchTextFormFieldState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ Padding( - padding: EdgeInsets.only(right: 20.0), + padding: const EdgeInsets.only(right: 20.0), child: SvgPicture.asset( "assets/images/svg/loginpasswordclose.svg", ), @@ -678,7 +679,7 @@ class _SearchTextFormFieldState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ Padding( - padding: EdgeInsets.only(right: 20.0), + padding: const EdgeInsets.only(right: 20.0), child: SvgPicture.asset( 'assets/images/svg/loginpasswordopen.svg', ), diff --git a/lib/Utils/Common/blureffect.dart b/lib/Utils/Common/blureffect.dart index 65bee14..66178da 100644 --- a/lib/Utils/Common/blureffect.dart +++ b/lib/Utils/Common/blureffect.dart @@ -19,13 +19,10 @@ class CommonBlurLeftRed extends StatelessWidget { shape: BoxShape.circle, color: Color(0x4CD90B2E).withOpacity(0.5), ), - child: BackdropFilter( - filter: ImageFilter.blur(sigmaX: 30, sigmaY: 30), - child: Container( - height: 200, - width: 200, - color: Colors.transparent, - ), + child: Container( + height: 200, + width: 200, + color: Colors.transparent, ), ), ); @@ -49,13 +46,10 @@ class CommonBlurRightRed extends StatelessWidget { shape: BoxShape.circle, color: Color(0x4CD90B2E).withOpacity(0.5), ), - child: BackdropFilter( - filter: ImageFilter.blur(sigmaX: 30, sigmaY: 30), - child: Container( - height: 200, - width: 200, - color: Colors.transparent, - ), + child: Container( + height: 200, + width: 200, + color: Colors.transparent, ), ), ); @@ -79,13 +73,10 @@ class CommonBlurLeft extends StatelessWidget { shape: BoxShape.circle, color: Color(0xFF009DAB).withOpacity(0.50), ), - child: BackdropFilter( - filter: ImageFilter.blur(sigmaX: 30, sigmaY: 30), - child: Container( - height: 200, - width: 200, - color: Colors.transparent, - ), + child: Container( + height: 200, + width: 200, + color: Colors.transparent, ), ), ); @@ -109,13 +100,10 @@ class CommonBlurRight extends StatelessWidget { shape: BoxShape.circle, color: Color(0xFF009DAB).withOpacity(0.50), ), - child: BackdropFilter( - filter: ImageFilter.blur(sigmaX: 30, sigmaY: 30), - child: Container( - height: 200, - width: 200, - color: Colors.transparent, - ), + child: Container( + height: 200, + width: 200, + color: Colors.transparent, ), ), ); @@ -136,13 +124,10 @@ class CommonBlurLeftSecond extends StatelessWidget { shape: BoxShape.circle, color: Color(0x4CD90B2E).withOpacity(0.5), ), - child: BackdropFilter( - filter: ImageFilter.blur(sigmaX: 30, sigmaY: 30), - child: Container( - height: 200, - width: 200, - color: Colors.transparent, - ), + child: Container( + height: 200, + width: 200, + color: Colors.transparent, ), ); } @@ -162,13 +147,10 @@ class CommonBlurRightSecond extends StatelessWidget { shape: BoxShape.circle, color: Color(0x4CD90B2E).withOpacity(0.5), ), - child: BackdropFilter( - filter: ImageFilter.blur(sigmaX: 30, sigmaY: 30), - child: Container( - height: 200, - width: 200, - color: Colors.transparent, - ), + child: Container( + height: 200, + width: 200, + color: Colors.transparent, ), ); } @@ -188,13 +170,10 @@ class CommonBlurLeftBlue extends StatelessWidget { shape: BoxShape.circle, color: Color(0xFF009DAB).withOpacity(0.50), ), - child: BackdropFilter( - filter: ImageFilter.blur(sigmaX: 30, sigmaY: 30), - child: Container( - height: 200, - width: 200, - color: Colors.transparent, - ), + child: Container( + height: 200, + width: 200, + color: Colors.transparent, ), ); } diff --git a/lib/main.dart b/lib/main.dart index a5c9de1..41732c0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -11,19 +11,15 @@ import 'package:permission_handler/permission_handler.dart'; import 'package:regroup/Utils/dialogs.dart'; import 'package:regroup/resources/routes/route_name.dart'; import 'package:regroup/resources/routes/routes.dart'; -import 'package:shared_preferences/shared_preferences.dart'; - -// void main() { -// runApp(const MyApp()); -// } +import 'package:statsfl/statsfl.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); - SharedPreferences prefs = await SharedPreferences.getInstance(); SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, - ]).then((value) => runApp(const MyApp())); + ]).then((value) => runApp(StatsFl( + align: Alignment.center, width: 200, height: 100, child: const MyApp()))); } class MyApp extends StatefulWidget { @@ -40,16 +36,14 @@ class _MyAppState extends State { builder: (BuildContext context, Widget? child) => GetMaterialApp( title: 'Regroup', theme: ThemeData( - primarySwatch: - // createPrimarySwatch(Color(0xFF737373)), - Colors.grey, + primarySwatch: Colors.grey, fontFamily: 'Cambria', ), debugShowCheckedModeBanner: false, - initialRoute: RouteName.mainscreen, + initialRoute: RouteName.splashScreen, getPages: AppRoutes.appRoutes(), ), - designSize: const Size(390, 848), + designSize: const Size(390, 844), ); } } diff --git a/lib/onboarding/Signup/View/signupscreen.dart b/lib/onboarding/Signup/View/signupscreen.dart index 7adfb1c..a04be55 100644 --- a/lib/onboarding/Signup/View/signupscreen.dart +++ b/lib/onboarding/Signup/View/signupscreen.dart @@ -12,6 +12,7 @@ import 'package:regroup/Utils/dialogs.dart'; import 'package:regroup/Utils/texts.dart'; import 'package:regroup/resources/routes/route_name.dart'; import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart'; +import 'package:show_fps/show_fps.dart'; class SignupScreen extends StatefulWidget { const SignupScreen({super.key}); @@ -41,387 +42,361 @@ class _SignupScreenState extends State { @override Widget build(BuildContext context) { return Scaffold( - backgroundColor: Color.fromARGB(255, 18, 32, 47), + resizeToAvoidBottomInset: false, + backgroundColor: const Color.fromARGB(255, 18, 32, 47), body: Stack( children: [ - Positioned(top: 210, left: -30, child: CommonBlurLeftSecond()), - Positioned(top: 400, right: -30, child: CommonBlurRightSecond()), - Positioned(top: 550, left: -30, child: CommonBlurLeftBlue()), - GlassmorphicContainer( - width: MediaQuery.of(context).size.width, - height: - // 500.h, - MediaQuery.of(context).size.height, - borderRadius: 2, - blur: 10, - alignment: Alignment.bottomLeft, - border: 2, - linearGradient: LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [ - Color(0XFF222935).withOpacity(0.60), - Color(0XFF222935).withOpacity(0.60), - Color(0XFF222935).withOpacity(0.60), - Color(0XFF222935).withOpacity(0.60), - - // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - ], - ), - borderGradient: LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [ - // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - Color(0XFF222935).withOpacity(0.60), - - Color(0XFF222935).withOpacity(0.60), - ], - ), - child: ListView(physics: ScrollPhysics(), children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - width: double.infinity, - height: 221.h, - decoration: BoxDecoration( - // color: Colors.red, - image: DecorationImage( - image: AssetImage( - "assets/images/png/blurwhole.png"), - fit: BoxFit.fill)), + Container( + decoration: const BoxDecoration( + image: DecorationImage( + image: + AssetImage("assets/images/png/Choice screen.png"))), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + width: double.infinity, + height: 221.h, + child: Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Padding( + padding: EdgeInsets.only(top: 150.h), + child: + Center(child: text22400white('Create account')), + ), + ], + )), + Expanded( + child: SingleChildScrollView( + child: Column( + children: [ + Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w), child: Column( - crossAxisAlignment: CrossAxisAlignment.end, + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Padding( - padding: EdgeInsets.only(top: 150.h), - child: Center( - child: text22400white('Create account')), + text16400white('Email address'), + sizedBoxHeight(10.h), + CustomTextFormField( + textEditingController: emailidcontroller, + hintText: "Enter your email address", + leadingIcon: + // const Icon(Icons.mail_outline), + SizedBox( + width: 22.w, + height: 17.h, + child: Image.asset( + 'assets/images/png/mail.png', + width: 22.w, + height: 17.h, + ), + ), + // validatorText: "Email Id", + validator: (value) { + if (value!.isEmpty) { + return 'Enter your e-mail address'; + } + if (!RegExp( + r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$') + .hasMatch(value)) { + return 'Enter a valid e-mail address'; + } + return null; + }, + inputFormatters: [ + LengthLimitingTextInputFormatter(20), + RemoveEmojiInputFormatter() + ], ), - ], - )), - Padding( - padding: EdgeInsets.symmetric(horizontal: 16.w), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - text16400white('Email address'), - sizedBoxHeight(10.h), - CustomTextFormField( - textEditingController: emailidcontroller, - hintText: "Enter your email address", - leadingIcon: - // const Icon(Icons.mail_outline), - SizedBox( - width: 22.w, - height: 17.h, - child: Image.asset( - 'assets/images/png/mail.png', + sizedBoxHeight(10.h), + text16400white('Password'), + sizedBoxHeight(10.h), + CustomTextFormField( + isInputPassword: true, + textEditingController: _password, + hintText: 'Enter your password', + leadingIcon: Image.asset( + 'assets/images/png/lock.png', width: 22.w, height: 17.h, ), - ), - // validatorText: "Email Id", - validator: (value) { - if (value!.isEmpty) { - return 'Enter your e-mail address'; - } - if (!RegExp( - r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$') - .hasMatch(value)) { - return 'Enter a valid e-mail address'; - } - return null; - }, - inputFormatters: [ - LengthLimitingTextInputFormatter(20), - RemoveEmojiInputFormatter() - ], - ), - sizedBoxHeight(10.h), - text16400white('Password'), - sizedBoxHeight(10.h), - CustomTextFormField( - isInputPassword: true, - textEditingController: _password, - hintText: 'Enter your password', - leadingIcon: Image.asset( - 'assets/images/png/lock.png', - width: 22.w, - height: 17.h, - ), - // const Icon(Icons.lock_outline), - // validationMessage: "Enter your password", - validator: (val) { - if (val == null || val.isEmpty) { - return 'Please enter your password'; - } - return null; - }, - inputFormatters: [ - LengthLimitingTextInputFormatter(20), - RemoveEmojiInputFormatter() - ], - ), - sizedBoxHeight(10.h), - text16400white('Confirm password'), - sizedBoxHeight(10.h), - CustomTextFormField( - isInputPassword: true, - textEditingController: confirmpasscontroller, - hintText: "Enter your password", - leadingIcon: Image.asset( - 'assets/images/png/lock.png', - width: 22.w, - height: 17.h, - ), - // const Icon(Icons.lock_outline), - // validatorText: "Enter your password", - validator: (val) { - if (val == null || val.isEmpty) { - return 'Please enter your password'; - } - if (val != _password.text) { - return 'Password does not match'; - } - return null; - }, - inputFormatters: [ - LengthLimitingTextInputFormatter(20), - RemoveEmojiInputFormatter() - ], - ), - sizedBoxHeight(10.h), - Row( - children: [ - text16400white('Account type'), - sizedBoxWidth(5.w), - Image.asset( - 'assets/images/png/informationicon.png') - ], - ), - sizedBoxHeight(10.h), - CustomDropDownWidgetSignup( - header: 'Select account type', - title: '', - listData: _dropdownProductItems, - onItemSelected: _onItemSelected, - leadingImage: Image.asset( - 'assets/images/png/user.png', - ), - ), - sizedBoxHeight(30.h), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - SizedBox( - width: 320.w, - height: 42.h, - child: Text.rich( - TextSpan( - children: [ - TextSpan( - text: - 'By signing up to ReGroup you agree to our ', - style: TextStyle( - color: Color(0xCCFCFCFC), - fontSize: 14.sp, - fontFamily: 'Helvetica', - fontWeight: FontWeight.w400, - ), - ), - TextSpan( - text: 'Terms and Conditions', - style: TextStyle( - color: Color(0xCCFCFCFC), - fontSize: 14.sp, - fontFamily: 'Helvetica', - fontWeight: FontWeight.w700, - decoration: - TextDecoration.underline, - decorationColor: Color(0xffFCFCFC) - .withOpacity(0.80), - ), - ), - TextSpan( - text: ' and ', - style: TextStyle( - color: Color(0xCCFCFCFC), - fontSize: 14.sp, - fontFamily: 'Helvetica', - fontWeight: FontWeight.w400, - ), - ), - TextSpan( - text: 'Privacy Policy', - style: TextStyle( - color: Color(0xCCFCFCFC), - fontSize: 14.sp, - fontFamily: 'Helvetica', - fontWeight: FontWeight.w700, - decoration: - TextDecoration.underline, - decorationColor: Color(0xffFCFCFC) - .withOpacity(0.80), - ), - ), - ], - ), - textAlign: TextAlign.center, - ), - ), - ], - ), - sizedBoxHeight(20.h), - CustomButton( - text: "Continue", - onPressed: () { - if (_selectedAccountType == 'Individual') { - // Get.to(() => IndividualPage()); - print('individual selected'); - Get.toNamed(RouteName.verifyusercreen, - arguments: _selectedAccountType); - } else if (_selectedAccountType == - 'Business') { - print('business selected'); - Get.toNamed(RouteName.verifyusercreen, - arguments: _selectedAccountType); - - // Get.to(() => BusinessPage()); - } else { - // Handle case where no selection is made - utils.showToast( - 'Please select an account type'); + // const Icon(Icons.lock_outline), + // validationMessage: "Enter your password", + validator: (val) { + if (val == null || val.isEmpty) { + return 'Please enter your password'; } - }), - sizedBoxHeight(20.h), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Container( - width: 160, - decoration: ShapeDecoration( - shape: RoundedRectangleBorder( - side: BorderSide( - width: 0.50, - strokeAlign: - BorderSide.strokeAlignCenter, - color: Color(0xFF434A53), - ), - ), - ), + return null; + }, + inputFormatters: [ + LengthLimitingTextInputFormatter(20), + RemoveEmojiInputFormatter() + ], + ), + sizedBoxHeight(10.h), + text16400white('Confirm password'), + sizedBoxHeight(10.h), + CustomTextFormField( + isInputPassword: true, + textEditingController: confirmpasscontroller, + hintText: "Enter your password", + leadingIcon: Image.asset( + 'assets/images/png/lock.png', + width: 22.w, + height: 17.h, ), - sizedBoxWidth(6.w), - text14400white('Or'), - sizedBoxWidth(6.w), - Container( - width: 160, - decoration: ShapeDecoration( - shape: RoundedRectangleBorder( - side: BorderSide( - width: 0.50, - strokeAlign: - BorderSide.strokeAlignCenter, - color: Color(0xFF434A53), - ), - ), - ), - ), - ], - ), - sizedBoxHeight(20.h), - Center( - child: SizedBox( - width: 220.w, - child: Row( - children: [ - Container( - width: 55, - height: 55, - decoration: ShapeDecoration( - gradient: LinearGradient( - begin: Alignment(0.71, -0.70), - end: Alignment(-0.71, 0.7), - colors: [ - Colors.white.withOpacity( - 0.07999999821186066), - Colors.white.withOpacity( - 0.12999999523162842) - ], - ), - shape: OvalBorder( - side: BorderSide( - width: 0.50, - color: Color(0xFF434A53)), - ), - image: DecorationImage( - image: AssetImage( - 'assets/images/png/login2.png'))), - ), - Spacer(), - Container( - width: 55, - height: 55, - decoration: ShapeDecoration( - gradient: LinearGradient( - begin: Alignment(0.71, -0.70), - end: Alignment(-0.71, 0.7), - colors: [ - Colors.white.withOpacity( - 0.07999999821186066), - Colors.white.withOpacity( - 0.12999999523162842) - ], - ), - shape: OvalBorder( - side: BorderSide( - width: 0.50, - color: Color(0xFF434A53)), - ), - image: DecorationImage( - image: AssetImage( - 'assets/images/png/login3.png'))), - ), - Spacer(), - Container( - width: 55, - height: 55, - decoration: ShapeDecoration( - gradient: LinearGradient( - begin: Alignment(0.71, -0.70), - end: Alignment(-0.71, 0.7), - colors: [ - Colors.white.withOpacity( - 0.07999999821186066), - Colors.white.withOpacity( - 0.12999999523162842) - ], - ), - shape: OvalBorder( - side: BorderSide( - width: 0.50, - color: Color(0xFF434A53)), - ), - image: DecorationImage( - image: AssetImage( - 'assets/images/png/login4.png'))), - ), - ], + // const Icon(Icons.lock_outline), + // validatorText: "Enter your password", + validator: (val) { + if (val == null || val.isEmpty) { + return 'Please enter your password'; + } + if (val != _password.text) { + return 'Password does not match'; + } + return null; + }, + inputFormatters: [ + LengthLimitingTextInputFormatter(20), + RemoveEmojiInputFormatter() + ], + ), + sizedBoxHeight(10.h), + Row( + children: [ + text16400white('Account type'), + sizedBoxWidth(5.w), + Image.asset( + 'assets/images/png/informationicon.png') + ], + ), + sizedBoxHeight(10.h), + CustomDropDownWidgetSignup( + header: 'Select account type', + title: '', + listData: _dropdownProductItems, + onItemSelected: _onItemSelected, + leadingImage: Image.asset( + 'assets/images/png/user.png', ), ), - ), - sizedBoxHeight(20.h), - ], + sizedBoxHeight(30.h), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox( + width: 320.w, + height: 42.h, + child: Text.rich( + TextSpan( + children: [ + TextSpan( + text: + 'By signing up to ReGroup you agree to our ', + style: TextStyle( + color: const Color(0xCCFCFCFC), + fontSize: 14.sp, + fontFamily: 'Helvetica', + fontWeight: FontWeight.w400, + ), + ), + TextSpan( + text: 'Terms and Conditions', + style: TextStyle( + color: const Color(0xCCFCFCFC), + fontSize: 14.sp, + fontFamily: 'Helvetica', + fontWeight: FontWeight.w700, + decoration: + TextDecoration.underline, + decorationColor: + const Color(0xffFCFCFC) + .withOpacity(0.80), + ), + ), + TextSpan( + text: ' and ', + style: TextStyle( + color: const Color(0xCCFCFCFC), + fontSize: 14.sp, + fontFamily: 'Helvetica', + fontWeight: FontWeight.w400, + ), + ), + TextSpan( + text: 'Privacy Policy', + style: TextStyle( + color: const Color(0xCCFCFCFC), + fontSize: 14.sp, + fontFamily: 'Helvetica', + fontWeight: FontWeight.w700, + decoration: + TextDecoration.underline, + decorationColor: + const Color(0xffFCFCFC) + .withOpacity(0.80), + ), + ), + ], + ), + textAlign: TextAlign.center, + ), + ), + ], + ), + sizedBoxHeight(20.h), + CustomButton( + text: "Continue", + onPressed: () { + if (_selectedAccountType == 'Individual') { + // Get.to(() => IndividualPage()); + print('individual selected'); + Get.toNamed(RouteName.verifyusercreen, + arguments: _selectedAccountType); + } else if (_selectedAccountType == + 'Business') { + print('business selected'); + Get.toNamed(RouteName.verifyusercreen, + arguments: _selectedAccountType); + + // Get.to(() => BusinessPage()); + } else { + // Handle case where no selection is made + utils.showToast( + 'Please select an account type'); + } + }), + sizedBoxHeight(20.h), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + width: 160, + decoration: const ShapeDecoration( + shape: RoundedRectangleBorder( + side: BorderSide( + width: 0.50, + strokeAlign: + BorderSide.strokeAlignCenter, + color: Color(0xFF434A53), + ), + ), + ), + ), + sizedBoxWidth(6.w), + text14400white('Or'), + sizedBoxWidth(6.w), + Container( + width: 160, + decoration: const ShapeDecoration( + shape: RoundedRectangleBorder( + side: BorderSide( + width: 0.50, + strokeAlign: + BorderSide.strokeAlignCenter, + color: Color(0xFF434A53), + ), + ), + ), + ), + ], + ), + sizedBoxHeight(20.h), + Center( + child: SizedBox( + width: 220.w, + child: Row( + children: [ + Container( + width: 55, + height: 55, + decoration: ShapeDecoration( + gradient: LinearGradient( + begin: + const Alignment(0.71, -0.70), + end: const Alignment(-0.71, 0.7), + colors: [ + Colors.white.withOpacity( + 0.07999999821186066), + Colors.white.withOpacity( + 0.12999999523162842) + ], + ), + shape: const OvalBorder( + side: BorderSide( + width: 0.50, + color: Color(0xFF434A53)), + ), + image: const DecorationImage( + image: AssetImage( + 'assets/images/png/login2.png'))), + ), + const Spacer(), + Container( + width: 55, + height: 55, + decoration: ShapeDecoration( + gradient: LinearGradient( + begin: + const Alignment(0.71, -0.70), + end: const Alignment(-0.71, 0.7), + colors: [ + Colors.white.withOpacity( + 0.07999999821186066), + Colors.white.withOpacity( + 0.12999999523162842) + ], + ), + shape: const OvalBorder( + side: BorderSide( + width: 0.50, + color: Color(0xFF434A53)), + ), + image: const DecorationImage( + image: AssetImage( + 'assets/images/png/login3.png'))), + ), + const Spacer(), + Container( + width: 55, + height: 55, + decoration: ShapeDecoration( + gradient: LinearGradient( + begin: + const Alignment(0.71, -0.70), + end: const Alignment(-0.71, 0.7), + colors: [ + Colors.white.withOpacity( + 0.07999999821186066), + Colors.white.withOpacity( + 0.12999999523162842) + ], + ), + shape: const OvalBorder( + side: BorderSide( + width: 0.50, + color: Color(0xFF434A53)), + ), + image: const DecorationImage( + image: AssetImage( + 'assets/images/png/login4.png'))), + ), + ], + ), + ), + ), + sizedBoxHeight(20.h), + ], + ), ), - ) - ], + ], + ), ), - ])), + ) + ], + ), ], )); } diff --git a/lib/onboarding/onboarding1.dart b/lib/onboarding/onboarding1.dart index a58f604..7c9221f 100644 --- a/lib/onboarding/onboarding1.dart +++ b/lib/onboarding/onboarding1.dart @@ -20,15 +20,78 @@ class _Onboarding1State extends State { @override Widget build(BuildContext context) { return Scaffold( - body: Stack( - children: [ - Container( - width: MediaQuery.of(context).size.width, - height: MediaQuery.of(context).size.height, - decoration: BoxDecoration( - gradient: LinearGradient( - begin: Alignment.center, - end: Alignment.bottomCenter, + body: Container( + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.center, + end: Alignment.bottomCenter, + colors: [ + Color(0xFF222935).withOpacity(0.12), + Color(0xFF222935).withOpacity(0.60), + Color(0XFF222B37), + Color(0xFF222935), + ], + ), + image: DecorationImage( + image: AssetImage("assets/images/png/onboarding1.png"), + fit: BoxFit.fill)), + child: Stack(children: [ + Positioned( + top: 800, + left: 0, + child: Container( + height: 70.h, + width: MediaQuery.of(context).size.width, + decoration: BoxDecoration( + // shape: BoxShape.circle, + color: + // Colors.red + Color(0xFF009DAB).withOpacity(0.50), + ), + ), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Spacer(), + SvgPicture.asset( + "assets/images/svg/onboarding2.svg", + width: 104.w, + height: 104.h, + ), + const Spacer( + flex: 8, + ), + SizedBox( + width: 301.w, + height: 64.h, + child: text22400white( + "Find motivation and support from like-minded people"), + ), + sizedBoxHeight(30.h), + GlassmorphicContainer( + width: MediaQuery.of(context).size.width, + height: 180.h, + borderRadius: 2, + blur: 30, + alignment: Alignment.bottomLeft, + border: 2, + linearGradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.centerRight, + colors: [ + Color(0xFF222935).withOpacity(0.12), + Color(0xFF222935).withOpacity(0.60), + Color(0XFF222B37).withOpacity(0.12), + Color(0xFF222935).withOpacity(0.60), + ], + ), + borderGradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, colors: [ Color(0xFF222935).withOpacity(0.12), Color(0xFF222935).withOpacity(0.60), @@ -36,110 +99,29 @@ class _Onboarding1State extends State { Color(0xFF222935), ], ), - image: DecorationImage( - image: AssetImage("assets/images/png/onboarding1.png"), - fit: BoxFit.fill)), - child: Stack(children: [ - Positioned( - top: 800, - left: 0, - child: Container( - height: 70.h, - width: MediaQuery.of(context).size.width, - decoration: BoxDecoration( - // shape: BoxShape.circle, - color: - // Colors.red - Color(0xFF009DAB).withOpacity(0.50), + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w), + child: Column( + children: [ + CustomButton( + text: "Sign up", + onPressed: () { + Get.toNamed(RouteName.signupscreen); + }), + sizedBoxHeight(30.h), + CustomButton2( + text: "Login", + onPressed: () { + Get.toNamed(RouteName.loginScreen); + }), + // sizedBoxHeight(10.h), + ], ), ), ), - Column( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Spacer(), - SvgPicture.asset( - "assets/images/svg/onboarding2.svg", - width: 104.w, - height: 104.h, - ), - const Spacer( - flex: 8, - ), - SizedBox( - width: 301.w, - height: 64.h, - child: text22400white( - "Find motivation and support from like-minded people"), - ), - sizedBoxHeight(30.h), - GlassmorphicContainer( - width: MediaQuery.of(context).size.width, - height: 180.h, - borderRadius: 2, - blur: 30, - alignment: Alignment.bottomLeft, - border: 2, - linearGradient: LinearGradient( - begin: Alignment.topLeft, - end: Alignment.centerRight, - colors: [ - Color(0xFF222935).withOpacity(0.12), - Color(0xFF222935).withOpacity(0.60), - Color(0XFF222B37).withOpacity(0.12), - Color(0xFF222935).withOpacity(0.60), - - // Color(0xFF009DAB40), - // Color(0xFF35798C6F), - // Color(0xFFD90B2E54), - // Color(0xFFD90B2E85), - // Color(0xFFD90B2E96), - - // Colors.green.withOpacity(0.9), - // Colors.amber.withOpacity(0.1) - ], - ), - borderGradient: LinearGradient( - begin: Alignment.topLeft, - end: Alignment.bottomRight, - colors: [ - // Color(0xFFffffff).withOpacity(0.5), - // Color((0xFFFFFFFF)).withOpacity(0.5), - - Color(0xFF222935).withOpacity(0.12), - Color(0xFF222935).withOpacity(0.60), - Color(0XFF222B37), - Color(0xFF222935), - - // Colors.green.withOpacity(0.1), - // Color((0xFFFFFFFF)).withOpacity(0.5), - ], - ), - child: Padding( - padding: EdgeInsets.symmetric(horizontal: 16.w), - child: Column( - children: [ - CustomButton( - text: "Sign up", - onPressed: () { - Get.toNamed(RouteName.signupscreen); - }), - sizedBoxHeight(30.h), - CustomButton2( - text: "Login", - onPressed: () { - Get.toNamed(RouteName.loginScreen); - }), - // sizedBoxHeight(10.h), - ], - ), - )), - ], - ), - ]), + ], ), - ], + ]), ), ); } diff --git a/pubspec.lock b/pubspec.lock index f7c33ad..4e96466 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -352,6 +352,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.0" + glassmorphism_ui: + dependency: "direct main" + description: + name: glassmorphism_ui + sha256: "4a28b45fedb74c2b30e25495980394e3cf5b3634c74ec1ebedaef4d4c295f46f" + url: "https://pub.dev" + source: hosted + version: "0.3.0" google_maps_flutter: dependency: "direct main" description: @@ -792,6 +800,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.0" + show_fps: + dependency: "direct main" + description: + name: show_fps + sha256: "398124dd74456ad92fbb791cd6dd1018b5ced5ac3b9d0b401ab8c0e035ac9920" + url: "https://pub.dev" + source: hosted + version: "1.0.6" sky_engine: dependency: transitive description: flutter @@ -821,6 +837,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.11.1" + statsfl: + dependency: "direct main" + description: + name: statsfl + sha256: "12901533eee23cc04f01858f1e6851beec27d927a9afa694bb3d68403a5e0d13" + url: "https://pub.dev" + source: hosted + version: "2.3.0" stream_channel: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 60293b6..a6fe0b6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -64,6 +64,10 @@ dependencies: google_maps_flutter: ^2.2.8 geolocator: ^11.1.0 syncfusion_flutter_calendar: ^21.2.10 + glassmorphism_ui: ^0.3.0 + show_fps: ^1.0.6 + statsfl: ^2.3.0 + dev_dependencies: