From 23bc9470a22450d148ba6ea9e2f0c58ce6cc53f1 Mon Sep 17 00:00:00 2001 From: Rishav Naskar Date: Wed, 18 Aug 2021 17:37:51 +0530 Subject: [PATCH 1/3] fix: restructured the login screen by putting them in a seperate directory --- .gitignore | 2 - .idea/workspace.xml | 338 +------------ README.md | 58 --- android/.gitignore | 11 + android/app/build.gradle | 63 +++ android/app/src/debug/AndroidManifest.xml | 7 + android/app/src/main/AndroidManifest.xml | 41 ++ .../flutterloginscreens/MainActivity.kt | 6 + .../res/drawable-v21/launch_background.xml | 12 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../app/src/main/res/values-night/styles.xml | 18 + android/app/src/main/res/values/styles.xml | 18 + android/app/src/profile/AndroidManifest.xml | 7 + android/build.gradle | 29 ++ android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 6 + android/settings.gradle | 11 + ios/.gitignore | 33 ++ ios/Flutter/AppFrameworkInfo.plist | 26 + ios/Flutter/Debug.xcconfig | 1 + ios/Flutter/Release.xcconfig | 1 + ios/Runner.xcodeproj/project.pbxproj | 471 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 91 ++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 +++++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 564 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 1283 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 1588 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 1025 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 1716 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 1920 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 1283 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 1895 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 3831 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 1888 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 3294 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 3612 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + ios/Runner/Base.lproj/LaunchScreen.storyboard | 37 ++ ios/Runner/Base.lproj/Main.storyboard | 26 + ios/Runner/Info.plist | 45 ++ ios/Runner/Runner-Bridging-Header.h | 1 + lib/landing_pages/page1.dart | 157 ++++++ lib/landing_pages/swiper_pagination.dart | 67 +++ lib/{ => login_screens}/login_screen_1.dart | 0 lib/{ => login_screens}/login_screen_2.dart | 0 lib/{ => login_screens}/login_screen_3.dart | 0 lib/{ => login_screens}/login_screen_4.dart | 0 lib/{ => login_screens}/login_screen_5.dart | 0 lib/{ => login_screens}/login_screen_6.dart | 0 lib/main.dart | 3 +- pubspec.lock | 235 ++++++++- pubspec.yaml | 67 ++- screenshots/login_screen_4.jpeg | Bin 28206 -> 0 bytes screenshots/login_screen_5.jpeg | Bin 25505 -> 0 bytes screenshots/login_screen_6.jpeg | Bin 21220 -> 0 bytes test/widget_test.dart | 2 +- web/favicon.png | Bin 917 -> 0 bytes web/icons/Icon-192.png | Bin 5292 -> 0 bytes web/icons/Icon-512.png | Bin 8252 -> 0 bytes web/index.html | 45 -- web/manifest.json | 23 - 80 files changed, 1684 insertions(+), 498 deletions(-) create mode 100644 android/.gitignore create mode 100644 android/app/build.gradle create mode 100644 android/app/src/debug/AndroidManifest.xml create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/kotlin/com/samarth/flutterloginscreens/MainActivity.kt create mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 android/app/src/main/res/drawable/launch_background.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/values-night/styles.xml create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/app/src/profile/AndroidManifest.xml create mode 100644 android/build.gradle create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100644 android/settings.gradle create mode 100644 ios/.gitignore create mode 100644 ios/Flutter/AppFrameworkInfo.plist create mode 100644 ios/Flutter/Debug.xcconfig create mode 100644 ios/Flutter/Release.xcconfig create mode 100644 ios/Runner.xcodeproj/project.pbxproj create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner/AppDelegate.swift create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 ios/Runner/Base.lproj/Main.storyboard create mode 100644 ios/Runner/Info.plist create mode 100644 ios/Runner/Runner-Bridging-Header.h create mode 100644 lib/landing_pages/page1.dart create mode 100644 lib/landing_pages/swiper_pagination.dart rename lib/{ => login_screens}/login_screen_1.dart (100%) rename lib/{ => login_screens}/login_screen_2.dart (100%) rename lib/{ => login_screens}/login_screen_3.dart (100%) rename lib/{ => login_screens}/login_screen_4.dart (100%) rename lib/{ => login_screens}/login_screen_5.dart (100%) rename lib/{ => login_screens}/login_screen_6.dart (100%) delete mode 100644 screenshots/login_screen_4.jpeg delete mode 100644 screenshots/login_screen_5.jpeg delete mode 100644 screenshots/login_screen_6.jpeg delete mode 100644 web/favicon.png delete mode 100644 web/icons/Icon-192.png delete mode 100644 web/icons/Icon-512.png delete mode 100644 web/index.html delete mode 100644 web/manifest.json diff --git a/.gitignore b/.gitignore index 462250d..0fa6b67 100644 --- a/.gitignore +++ b/.gitignore @@ -44,5 +44,3 @@ app.*.map.json /android/app/debug /android/app/profile /android/app/release -/android/ -/ios/ diff --git a/.idea/workspace.xml b/.idea/workspace.xml index e6a7fec..818bdab 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,354 +1,44 @@ - - - - - - + + - - - - - - + - - - - - - - - - - - - + - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - + - - 1531561389514 + + 1629218150354 - - 1532274318766 - - - 1532274502966 - - - 1532274576533 - - - 1533849994514 - - - 1533850102253 - - - 1534115504798 - - - 1534115523966 - - - 1534115590265 - - - 1534845237544 - - - 1534845418806 - - - 1534912707712 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/README.md b/README.md index 6c7c890..4da5ff3 100644 --- a/README.md +++ b/README.md @@ -151,64 +151,6 @@ Container( ) ``` - ### Login Screen 4 - - ![Screenshot on Android](./screenshots/login_screen_4.jpeg) - - ##### Usage - - ``` - Container( - child: LoginScreen4( - primaryColor: Color(0xff18203d), - secondaryColor: Color(0xff232c51), - logoGreen: Color(0xff25bcbb), - ), - ) - ``` - - ### Login Screen 5 - - ![Screenshot on Android](./screenshots/login_screen_5.jpeg) - - ##### Usage - - ``` - Container( - child: LoginScreen5( - avatarImage: "path/to/image.png", - onLoginClick: () { - // when login button is pressed - }, - googleSignIn: () { - // when google signin button is pressed - }, - navigatePage: () { - // change to signup screen - } - ), - ) - ``` - - ### Login Screen 6 - - ![Screenshot on Android](./screenshots/login_screen_6.jpeg) - - ##### Usage - - ``` - Container( - child: LoginScreen6( - onLoginClick: () { - // when login button is pressed - }, - navigatePage: () { - // change to signup screen - } - ), - ) - ``` - ## Contribution and Donation Feel free to contribute. If you like the project and want to donate, [click here](https://www.paypal.me/samarthagarwal). diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 0000000..0a741cb --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,11 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 0000000..0e616a9 --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,63 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion 30 + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "com.samarth.flutterloginscreens" + minSdkVersion 16 + targetSdkVersion 30 + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + testImplementation 'junit:junit:4.12' + androidTestImplementation 'com.android.support.test:runner:1.0.1' + androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' +} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..1e8713a --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..c8006fa --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/kotlin/com/samarth/flutterloginscreens/MainActivity.kt b/android/app/src/main/kotlin/com/samarth/flutterloginscreens/MainActivity.kt new file mode 100644 index 0000000..a7a597b --- /dev/null +++ b/android/app/src/main/kotlin/com/samarth/flutterloginscreens/MainActivity.kt @@ -0,0 +1,6 @@ +package com.samarth.flutterloginscreens + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..f74085f --- /dev/null +++ b/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..304732f --- /dev/null +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0 GIT binary patch literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..449a9f9 --- /dev/null +++ b/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..d74aa35 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..1e8713a --- /dev/null +++ b/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..9b6ed06 --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,29 @@ +buildscript { + ext.kotlin_version = '1.3.50' + repositories { + google() + jcenter() + } + + dependencies { + classpath 'com.android.tools.build:gradle:4.1.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + jcenter() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" + project.evaluationDependsOn(':app') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..94adc3a --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..bc6a58a --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Jun 23 08:50:38 CEST 2017 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..44e62bc --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,11 @@ +include ':app' + +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + +def flutterSdkPath = properties.getProperty("flutter.sdk") +assert flutterSdkPath != null, "flutter.sdk not set in local.properties" +apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 0000000..151026b --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,33 @@ +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000..9367d48 --- /dev/null +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 8.0 + + diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..07bf1ff --- /dev/null +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,471 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 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 */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 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 = ""; }; + 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 = ""; }; + 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; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 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 = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1020; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.samarth.flutterloginscreens; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.samarth.flutterloginscreens; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.samarth.flutterloginscreens; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..a28140c --- /dev/null +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000..70693e4 --- /dev/null +++ b/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d36b1fa --- /dev/null +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332 GIT binary patch literal 10932 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f091b6b0bca859a3f474b03065bef75ba58a9e4c GIT binary patch literal 1588 zcmV-42Fv-0P)C1SqPt}wig>|5Crh^=oyX$BK<}M8eLU3e2hGT;=G|!_SP)7zNI6fqUMB=)y zRAZ>eDe#*r`yDAVgB_R*LB*MAc)8(b{g{9McCXW!lq7r(btRoB9!8B-#AI6JMb~YFBEvdsV)`mEQO^&#eRKx@b&x- z5lZm*!WfD8oCLzfHGz#u7sT0^VLMI1MqGxF^v+`4YYnVYgk*=kU?HsSz{v({E3lb9 z>+xILjBN)t6`=g~IBOelGQ(O990@BfXf(DRI5I$qN$0Gkz-FSc$3a+2fX$AedL4u{ z4V+5Ong(9LiGcIKW?_352sR;LtDPmPJXI{YtT=O8=76o9;*n%_m|xo!i>7$IrZ-{l z-x3`7M}qzHsPV@$v#>H-TpjDh2UE$9g6sysUREDy_R(a)>=eHw-WAyfIN z*qb!_hW>G)Tu8nSw9yn#3wFMiLcfc4pY0ek1}8(NqkBR@t4{~oC>ryc-h_ByH(Cg5 z>ao-}771+xE3um9lWAY1FeQFxowa1(!J(;Jg*wrg!=6FdRX+t_<%z&d&?|Bn){>zm zZQj(aA_HeBY&OC^jj*)N`8fa^ePOU72VpInJoI1?`ty#lvlNzs(&MZX+R%2xS~5Kh zX*|AU4QE#~SgPzOXe9>tRj>hjU@c1k5Y_mW*Jp3fI;)1&g3j|zDgC+}2Q_v%YfDax z!?umcN^n}KYQ|a$Lr+51Nf9dkkYFSjZZjkma$0KOj+;aQ&721~t7QUKx61J3(P4P1 zstI~7-wOACnWP4=8oGOwz%vNDqD8w&Q`qcNGGrbbf&0s9L0De{4{mRS?o0MU+nR_! zrvshUau0G^DeMhM_v{5BuLjb#Hh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG z;P%vktHcXwTj~+IE(~px)3*MY77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC z(zYC$g|@+I+kY;dg_dE>scBf&bP1Nc@Hz<3R)V`=AGkc;8CXqdi=B4l2k|g;2%#m& z*jfX^%b!A8#bI!j9-0Fi0bOXl(-c^AB9|nQaE`*)Hw+o&jS9@7&Gov#HbD~#d{twV zXd^Tr^mWLfFh$@Dr$e;PBEz4(-2q1FF0}c;~B5sA}+Q>TOoP+t>wf)V9Iy=5ruQa;z)y zI9C9*oUga6=hxw6QasLPnee@3^Rr*M{CdaL5=R41nLs(AHk_=Y+A9$2&H(B7!_pURs&8aNw7?`&Z&xY_Ye z)~D5Bog^td-^QbUtkTirdyK^mTHAOuptDflut!#^lnKqU md>ggs(5nOWAqO?umG&QVYK#ibz}*4>0000U6E9hRK9^#O7(mu>ETqrXGsduA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnbRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yI zC*%Wgg22K|8E#!~cTNYR~@Y9KepMPrrB8cABapAFa=`H+UGhkXUZV1GnwR1*lPyZ;*K(i~2gp|@bzp8}og7e*#% zEnr|^CWdVV!-4*Y_7rFvlww2Ze+>j*!Z!pQ?2l->4q#nqRu9`ELo6RMS5=br47g_X zRw}P9a7RRYQ%2Vsd0Me{_(EggTnuN6j=-?uFS6j^u69elMypu?t>op*wBx<=Wx8?( ztpe^(fwM6jJX7M-l*k3kEpWOl_Vk3@(_w4oc}4YF4|Rt=2V^XU?#Yz`8(e?aZ@#li0n*=g^qOcVpd-Wbok=@b#Yw zqn8u9a)z>l(1kEaPYZ6hwubN6i<8QHgsu0oE) ziJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+&KI9y^);#0qt}t-$C|Bo71lHi{_+lg#f%RFy z0um=e3$K3i6K{U_4K!EX?F&rExl^W|G8Z8;`5z-k}OGNZ0#WVb$WCpQu-_YsiqKP?BB# vzVHS-CTUF4Ozn5G+mq_~Qqto~ahA+K`|lyv3(-e}00000NkvXXu0mjfd`9t{ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d0ef06e7edb86cdfe0d15b4b0d98334a86163658 GIT binary patch literal 1716 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f9ed8f5cee1c98386d13b17e89f719e83555b2 GIT binary patch literal 1895 zcmV-t2blPYP)FQtfgmafE#=YDCq`qUBt#QpG%*H6QHY765~R=q zZ6iudfM}q!Pz#~9JgOi8QJ|DSu?1-*(kSi1K4#~5?#|rh?sS)(-JQqX*}ciXJ56_H zdw=^s_srbAdqxlvGyrgGet#6T7_|j;95sL%MtM;q86vOxKM$f#puR)Bjv9Zvz9-di zXOTSsZkM83)E9PYBXC<$6(|>lNLVBb&&6y{NByFCp%6+^ALR@NCTse_wqvNmSWI-m z!$%KlHFH2omF!>#%1l3LTZg(s7eof$7*xB)ZQ0h?ejh?Ta9fDv59+u#MokW+1t8Zb zgHv%K(u9G^Lv`lh#f3<6!JVTL3(dCpxHbnbA;kKqQyd1~^Xe0VIaYBSWm6nsr;dFj z4;G-RyL?cYgsN1{L4ZFFNa;8)Rv0fM0C(~Tkit94 zz#~A)59?QjD&pAPSEQ)p8gP|DS{ng)j=2ux)_EzzJ773GmQ_Cic%3JJhC0t2cx>|v zJcVusIB!%F90{+}8hG3QU4KNeKmK%T>mN57NnCZ^56=0?&3@!j>a>B43pi{!u z7JyDj7`6d)qVp^R=%j>UIY6f+3`+qzIc!Y_=+uN^3BYV|o+$vGo-j-Wm<10%A=(Yk^beI{t%ld@yhKjq0iNjqN4XMGgQtbKubPM$JWBz}YA65k%dm*awtC^+f;a-x4+ddbH^7iDWGg&N0n#MW{kA|=8iMUiFYvMoDY@sPC#t$55gn6ykUTPAr`a@!(;np824>2xJthS z*ZdmT`g5-`BuJs`0LVhz+D9NNa3<=6m;cQLaF?tCv8)zcRSh66*Z|vXhG@$I%U~2l z?`Q zykI#*+rQ=z6Jm=Bui-SfpDYLA=|vzGE(dYm=OC8XM&MDo7ux4UF1~0J1+i%aCUpRe zt3L_uNyQ*cE(38Uy03H%I*)*Bh=Lb^Xj3?I^Hnbeq72(EOK^Y93CNp*uAA{5Lc=ky zx=~RKa4{iTm{_>_vSCm?$Ej=i6@=m%@VvAITnigVg{&@!7CDgs908761meDK5azA} z4?=NOH|PdvabgJ&fW2{Mo$Q0CcD8Qc84%{JPYt5EiG{MdLIAeX%T=D7NIP4%Hw}p9 zg)==!2Lbp#j{u_}hMiao9=!VSyx0gHbeCS`;q&vzeq|fs`y&^X-lso(Ls@-706qmA z7u*T5PMo_w3{se1t2`zWeO^hOvTsohG_;>J0wVqVe+n)AbQCx)yh9;w+J6?NF5Lmo zecS@ieAKL8%bVd@+-KT{yI|S}O>pYckUFs;ry9Ow$CD@ztz5K-*D$^{i(_1llhSh^ zEkL$}tsQt5>QA^;QgjgIfBDmcOgi5YDyu?t6vSnbp=1+@6D& z5MJ}B8q;bRlVoxasyhcUF1+)o`&3r0colr}QJ3hcSdLu;9;td>kf@Tcn<@9sIx&=m z;AD;SCh95=&p;$r{Xz3iWCO^MX83AGJ(yH&eTXgv|0=34#-&WAmw{)U7OU9!Wz^!7 zZ%jZFi@JR;>Mhi7S>V7wQ176|FdW2m?&`qa(ScO^CFPR80HucLHOTy%5s*HR0^8)i h0WYBP*#0Ks^FNSabJA*5${_#%002ovPDHLkV1oKhTl@e3 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22 GIT binary patch literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22 GIT binary patch literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..75b2d164a5a98e212cca15ea7bf2ab5de5108680 GIT binary patch literal 3831 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..c4df70d39da7941ef3f6dcb7f06a192d8dcb308d GIT binary patch literal 1888 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 iW8Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 0000000..89c2725 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f2e259c --- /dev/null +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f3c2851 --- /dev/null +++ b/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist new file mode 100644 index 0000000..23f8ec8 --- /dev/null +++ b/ios/Runner/Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + flutterloginscreens + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000..308a2a5 --- /dev/null +++ b/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/lib/landing_pages/page1.dart b/lib/landing_pages/page1.dart new file mode 100644 index 0000000..e35bf12 --- /dev/null +++ b/lib/landing_pages/page1.dart @@ -0,0 +1,157 @@ +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_swiper_null_safety/flutter_swiper_null_safety.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'swiper_pagination.dart'; + + +class IntroThreePage extends StatefulWidget { + static final String path = "lib/src/pages/onboarding/intro3.dart"; + @override + _IntroThreePageState createState() => _IntroThreePageState(); +} + +class _IntroThreePageState extends State { + final SwiperController _swiperController = SwiperController(); + final int _pageCount = 3; + int _currentIndex = 0; + final List titles = [ + "Lorem ipsum dolor \nsit amet, consectetur adipiscing \n elit placerat. ", + "Aliquam eget justo \n nec arcu ultricies elementum \n id at metus. ", + "Nulla facilisi. \nFusce non tempus risus.\n Sed ultrices scelerisque sem," + ]; + final List pageBgs = [ + Colors.blue.shade300, + Colors.grey.shade600, + Colors.cyan.shade300 + ]; + static const List images = [ + 'https://firebasestorage.googleapis.com/v0/b/dl-flutter-ui-challenges.appspot.com/o/img%2F1.jpg?alt=media', + 'https://firebasestorage.googleapis.com/v0/b/dl-flutter-ui-challenges.appspot.com/o/img%2F2.jpg?alt=media', + 'https://firebasestorage.googleapis.com/v0/b/dl-flutter-ui-challenges.appspot.com/o/img%2F3.jpg?alt=media', + 'https://firebasestorage.googleapis.com/v0/b/dl-flutter-ui-challenges.appspot.com/o/img%2F4.jpg?alt=media', + 'https://firebasestorage.googleapis.com/v0/b/dl-flutter-ui-challenges.appspot.com/o/img%2F5.jpg?alt=media', + 'https://firebasestorage.googleapis.com/v0/b/dl-flutter-ui-challenges.appspot.com/o/img%2F6.jpg?alt=media', + 'https://firebasestorage.googleapis.com/v0/b/dl-flutter-ui-challenges.appspot.com/o/img%2F7.jpg?alt=media', +]; + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Colors.white, + body: Stack( + children: [ + Center( + child: Container( + height: 300, + margin: const EdgeInsets.only(left: 8.0, right: 8.0), + decoration: BoxDecoration( + color: Theme.of(context).accentColor, + borderRadius: BorderRadius.circular(5.0)), + ), + ), + Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded( + child: Swiper( + index: _currentIndex, + controller: _swiperController, + itemCount: _pageCount, + onIndexChanged: (index) { + setState(() { + _currentIndex = index; + }); + }, + loop: false, + itemBuilder: (context, index) { + return _buildPage( + title: titles[index], + icon: images[index + 2], + pageBg: pageBgs[index]); + }, + pagination: SwiperPagination( + builder: CustomPaginationBuilder( + activeSize: Size(10.0, 20.0), + size: Size(10.0, 15.0), + color: Colors.grey.shade600)), + )), + SizedBox(height: 10.0), + _buildButtons(), + ], + ), + ], + ), + ); + } + + Widget _buildButtons() { + return Container( + margin: const EdgeInsets.only(right: 16.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + TextButton( + child: Text("Skip"), + style: ButtonStyle( + textStyle: MaterialStateProperty.all( + TextStyle(color: Colors.grey.shade600), + ), + ), + onPressed: () { + Navigator.of(context).pushReplacementNamed('home'); + }, + ), + IconButton( + icon: Icon(_currentIndex < _pageCount - 1 + ? Icons.arrow_forward_ios + : FontAwesomeIcons.check), + onPressed: () async { + if (_currentIndex < _pageCount - 1) + _swiperController.next(); + else { + Navigator.of(context).pushReplacementNamed('home'); + } + }, + ) + ], + ), + ); + } + + Widget _buildPage({String? title, String? icon, Color? pageBg}) { + final TextStyle titleStyle = TextStyle( + fontWeight: FontWeight.w500, fontSize: 20.0, color: Colors.white); + return Container( + width: double.infinity, + margin: const EdgeInsets.fromLTRB(16.0, 50.0, 16.0, 40.0), + padding: const EdgeInsets.all(16.0), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(30.0), color: pageBg), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox(height: 20.0), + Text( + title!, + textAlign: TextAlign.center, + style: titleStyle, + ), + SizedBox(height: 30.0), + Expanded( + child: ClipOval( + child: Container( + height: 300, + width: 300, + decoration: BoxDecoration( + image: DecorationImage( + image: CachedNetworkImageProvider(icon!), + fit: BoxFit.cover)), + )), + ), + SizedBox(height: 50.0), + ], + ), + ); + } +} diff --git a/lib/landing_pages/swiper_pagination.dart b/lib/landing_pages/swiper_pagination.dart new file mode 100644 index 0000000..2e93244 --- /dev/null +++ b/lib/landing_pages/swiper_pagination.dart @@ -0,0 +1,67 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_swiper_null_safety/flutter_swiper_null_safety.dart'; + +class CustomPaginationBuilder extends SwiperPlugin { + final Color? activeColor; + final Color? color; + final Size activeSize; + final Size size; + final double space; + + final Key? key; + + const CustomPaginationBuilder( + {this.activeColor, + this.color, + this.key, + this.size: const Size(10.0, 2.0), + this.activeSize: const Size(10.0, 2.0), + this.space: 3.0}); + + @override + Widget build(BuildContext context, SwiperPluginConfig config) { + ThemeData themeData = Theme.of(context); + Color activeColor = this.activeColor ?? themeData.primaryColor; + Color color = this.color ?? themeData.scaffoldBackgroundColor; + + List list = []; + + if (config.itemCount > 20) { + print( + "The itemCount is too big, we suggest use FractionPaginationBuilder instead of DotSwiperPaginationBuilder in this sitituation"); + } + + int itemCount = config.itemCount; + int activeIndex = config.activeIndex; + + for (int i = 0; i < itemCount; ++i) { + bool active = i == activeIndex; + Size size = active ? this.activeSize : this.size; + list.add(SizedBox( + width: size.width, + height: size.height, + child: Container( + decoration: BoxDecoration( + color: active ? activeColor : color, + borderRadius: BorderRadius.circular(10.0)), + key: Key("pagination_$i"), + margin: EdgeInsets.all(space), + ), + )); + } + + if (config.scrollDirection == Axis.vertical) { + return new Column( + key: key, + mainAxisSize: MainAxisSize.min, + children: list, + ); + } else { + return new Row( + key: key, + mainAxisSize: MainAxisSize.min, + children: list, + ); + } + } +} diff --git a/lib/login_screen_1.dart b/lib/login_screens/login_screen_1.dart similarity index 100% rename from lib/login_screen_1.dart rename to lib/login_screens/login_screen_1.dart diff --git a/lib/login_screen_2.dart b/lib/login_screens/login_screen_2.dart similarity index 100% rename from lib/login_screen_2.dart rename to lib/login_screens/login_screen_2.dart diff --git a/lib/login_screen_3.dart b/lib/login_screens/login_screen_3.dart similarity index 100% rename from lib/login_screen_3.dart rename to lib/login_screens/login_screen_3.dart diff --git a/lib/login_screen_4.dart b/lib/login_screens/login_screen_4.dart similarity index 100% rename from lib/login_screen_4.dart rename to lib/login_screens/login_screen_4.dart diff --git a/lib/login_screen_5.dart b/lib/login_screens/login_screen_5.dart similarity index 100% rename from lib/login_screen_5.dart rename to lib/login_screens/login_screen_5.dart diff --git a/lib/login_screen_6.dart b/lib/login_screens/login_screen_6.dart similarity index 100% rename from lib/login_screen_6.dart rename to lib/login_screens/login_screen_6.dart diff --git a/lib/main.dart b/lib/main.dart index d35d344..072c773 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; - -import 'login_screen_1.dart'; +import 'login_screens/login_screen_1.dart'; void main() => runApp(new MyApp()); diff --git a/pubspec.lock b/pubspec.lock index c8baac6..0ae2b39 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -7,7 +7,7 @@ packages: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.5.0" + version: "2.6.1" boolean_selector: dependency: transitive description: @@ -15,6 +15,27 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.0" + cached_network_image: + dependency: "direct main" + description: + name: cached_network_image + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" + cached_network_image_platform_interface: + dependency: transitive + description: + name: cached_network_image_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + cached_network_image_web: + dependency: transitive + description: + name: cached_network_image_web + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" characters: dependency: transitive description: @@ -43,13 +64,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.15.0" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" cupertino_icons: dependency: "direct main" description: name: cupertino_icons url: "https://pub.dartlang.org" source: hosted - version: "0.1.2" + version: "1.0.3" fake_async: dependency: transitive description: @@ -57,16 +85,86 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.2.0" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.2" + file: + dependency: transitive + description: + name: file + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.2" flutter: dependency: "direct main" description: flutter source: sdk version: "0.0.0" + flutter_blurhash: + dependency: transitive + description: + name: flutter_blurhash + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.0" + flutter_cache_manager: + dependency: transitive + description: + name: flutter_cache_manager + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.2" + flutter_page_indicator: + dependency: transitive + description: + name: flutter_page_indicator + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.3" + flutter_swiper: + dependency: "direct main" + description: + name: flutter_swiper + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.6" + flutter_swiper_null_safety: + dependency: "direct main" + description: + name: flutter_swiper_null_safety + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" flutter_test: dependency: "direct dev" description: flutter source: sdk version: "0.0.0" + font_awesome_flutter: + dependency: "direct main" + description: + name: font_awesome_flutter + url: "https://pub.dartlang.org" + source: hosted + version: "9.1.0" + http: + dependency: transitive + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.3" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.0" matcher: dependency: transitive description: @@ -81,6 +179,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.0" + octo_image: + dependency: transitive + description: + name: octo_image + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0+1" path: dependency: transitive description: @@ -88,6 +193,76 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.8.0" + path_provider: + dependency: transitive + description: + name: path_provider + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" + path_provider_macos: + dependency: transitive + description: + name: path_provider_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.3" + pedantic: + dependency: transitive + description: + name: pedantic + url: "https://pub.dartlang.org" + source: hosted + version: "1.11.1" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.2" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.3" + rxdart: + dependency: transitive + description: + name: rxdart + url: "https://pub.dartlang.org" + source: hosted + version: "0.27.1" sky_engine: dependency: transitive description: flutter @@ -99,7 +274,21 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.8.0" + version: "1.8.1" + sqflite: + dependency: transitive + description: + name: sqflite + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0+3" + sqflite_common: + dependency: transitive + description: + name: sqflite_common + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0+2" stack_trace: dependency: transitive description: @@ -121,6 +310,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.0" + synchronized: + dependency: transitive + description: + name: synchronized + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0" term_glyph: dependency: transitive description: @@ -134,7 +330,14 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.19" + version: "0.3.0" + transformer_page_view: + dependency: transitive + description: + name: transformer_page_view + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.6" typed_data: dependency: transitive description: @@ -142,6 +345,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.0" + uuid: + dependency: transitive + description: + name: uuid + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.4" vector_math: dependency: transitive description: @@ -149,5 +359,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.0" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.5" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0" sdks: - dart: ">=2.12.0 <3.0.0" + dart: ">=2.13.0 <3.0.0" + flutter: ">=2.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 6e3e476..dabf193 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,65 +1,56 @@ -name: flutter_login_screens -description: A new Flutter application. -version: "1.0.0+1" +name: flutterloginscreens +description: A new Flutter project. + +# The following line prevents the package from being accidentally published to +# pub.dev using `pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +# The following defines the version and build number for your application. +# A version number is three numbers separated by dots, like 1.2.43 +# followed by an optional build number separated by a +. +# Both the version and the builder number may be overridden in flutter +# build by specifying --build-name and --build-number, respectively. +# In Android, build-name is used as versionName while build-number used as versionCode. +# Read more about Android versioning at https://developer.android.com/studio/publish/versioning +# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. +# Read more about iOS versioning at +# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html +version: 1.0.0+1 + environment: - sdk: '>=2.12.0 <3.0.0' + sdk: ">=2.12.0 <3.0.0" + dependencies: flutter: sdk: flutter + # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^0.1.2 + cupertino_icons: ^1.0.2 + flutter_swiper_null_safety: ^1.0.2 + flutter_swiper: ^1.1.6 + cached_network_image: ^3.1.0 + font_awesome_flutter: ^9.1.0 dev_dependencies: flutter_test: sdk: flutter - # For information on the generic Dart part of this file, see the -# following page: https://www.dartlang.org/tools/pub/pubspec +# following page: https://dart.dev/tools/pub/pubspec # The following section is specific to Flutter. flutter: - # The following line ensures that the Material Icons font is - # included with your application, so that you can use the icons in - # the material Icons class. uses-material-design: true - # To add assets to your application, add an assets section, like this: assets: - assets/images/full-bloom.png - assets/images/mountains.jpeg - assets/images/mountains.jpg - # - images/a_dot_ham.jpeg - - # An image asset can refer to one or more resolution-specific "variants", see - # https://flutter.io/assets-and-images/#resolution-aware. - - # For details regarding adding assets from package dependencies, see - # https://flutter.io/assets-and-images/#from-packages - # To add custom fonts to your application, add a fonts section here, - # in this "flutter" section. Each entry in this list should have a - # "family" key with the font family name, and a "fonts" key with a - # list giving the asset and other descriptors for the font. For - # example: fonts: - family: icomoon fonts: - - asset: assets/fonts/IcoMoon.ttf - # fonts: - # - family: Schyler - # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf - # style: italic - # - family: Trajan Pro - # fonts: - # - asset: fonts/TrajanPro.ttf - # - asset: fonts/TrajanPro_Bold.ttf - # weight: 700 - # - # For details regarding fonts from package dependencies, - # see https://flutter.io/custom-fonts/#from-packages + - asset: assets/fonts/IcoMoon.ttf \ No newline at end of file diff --git a/screenshots/login_screen_4.jpeg b/screenshots/login_screen_4.jpeg deleted file mode 100644 index 99f8d05279031e68f0467f5f5e98ac14dd537667..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28206 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 glLo1IsZ>T%+EnqL#OiOtN; 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 diff --git a/screenshots/login_screen_6.jpeg b/screenshots/login_screen_6.jpeg deleted file mode 100644 index 066b765f0da940eee2c798851f2cfe57c7b03fbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21220 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 y1Y~;-^(>V8I(1AfjnEK zjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o z3raHc^AtelCMM;Vme?vOfh>Xph&xL%(-1c06+^uR^q@XSM&D4+Kp$>4P^%3{)XKjo zGZknv$b36P8?Z_gF{nK@`XI}Z90TzwSQO}0J1!f2c(B=V`5aP@1P1a|PZ!4!3&Gl8 zTYqUsf!gYFyJnXpu0!n&N*SYAX-%d(5gVjrHJWqXQshj@!Zm{!01WsQrH~9=kTxW#6SvuapgMqt>$=j#%eyGrQzr zP{L-3gsMA^$I1&gsBAEL+vxi1*Igl=8#8`5?A-T5=z-sk46WA1IUT)AIZHx1rdUrf zVJrJn<74DDw`j)Ki#gt}mIT-Q`XRa2-jQXQoI%w`nb|XblvzK${ZzlV)m-XcwC(od z71_OEC5Bt9GEXosOXaPTYOia#R4ID2TiU~`zVMl08TV_C%DnU4^+HE>9(CE4D6?Fz oujB08i7adh9xk7*FX66dWH6F5TM;?E2b5PlUHx3vIVCg!0Dx9vYXATM diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png deleted file mode 100644 index b749bfef07473333cf1dd31e9eed89862a5d52aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5292 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 diff --git a/web/icons/Icon-512.png b/web/icons/Icon-512.png deleted file mode 100644 index 88cfd48dff1169879ba46840804b412fe02fefd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8252 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 diff --git a/web/index.html b/web/index.html deleted file mode 100644 index 954c9f7..0000000 --- a/web/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - flutter_screens - - - - - - - - diff --git a/web/manifest.json b/web/manifest.json deleted file mode 100644 index 0c3f1cd..0000000 --- a/web/manifest.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "flutter_screens", - "short_name": "flutter_screens", - "start_url": ".", - "display": "standalone", - "background_color": "#0175C2", - "theme_color": "#0175C2", - "description": "A new Flutter project.", - "orientation": "portrait-primary", - "prefer_related_applications": false, - "icons": [ - { - "src": "icons/Icon-192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "icons/Icon-512.png", - "sizes": "512x512", - "type": "image/png" - } - ] -} From c6f51562d17a27cc2865c8f3ff9e1add8d255b43 Mon Sep 17 00:00:00 2001 From: Rishav Naskar Date: Wed, 18 Aug 2021 18:33:10 +0530 Subject: [PATCH 2/3] feat: added sliding page view one --- assets/images/toggleIcon.png | Bin 0 -> 2917 bytes .../sliding_page_view_1.dart | 251 ++++++++++++++++++ pubspec.yaml | 4 +- 3 files changed, 252 insertions(+), 3 deletions(-) create mode 100644 assets/images/toggleIcon.png create mode 100644 lib/sliding_page_views/sliding_page_view_1.dart diff --git a/assets/images/toggleIcon.png b/assets/images/toggleIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..2fb5d176e1b3455a2713cb2e67f0485d9f23c106 GIT binary patch literal 2917 zcmV-r3!3zaP)faq3ADq`NAJD< zF+Ee%5dE;r9hw?qB%k!ml{BAg^`lx>CuQQGm1-rG<~X=%7l?o1?gvjn7lZmovAX~9H0u2QRORQS&GsX z?XLLzdQ=fcg+Wvi4e94Pajh~geq6lD}F zKVZz_h<3cJS#a&b@c4=qVByw$8PaGKM#_SEg^SzjDMcFHMK2-?%VGyO54*a@YP1O> zYZgvJb^&RwlSZ@%BYQ(VVr--b#!Ysh0tr6-EuYcv64 z3nS--&?D*)Qy0)gisSG3u2yW8W|Fvy1;V(LhTg5i&`C@hRz zykl&3lqrRUac8&-r6jIf8U<3)Y|*teMI#KSqUNCH{0fm<7@3NC#59R+(bSYHC2_B) z(I7P)%G+zo8)0yfS%;V=f?$w)6gV@&$U^rkVw%o;o{a$VL>MD$MVZRUb)Hir3`dvN zkr`#OA`C~Dc9D6$6C(^qm)4RRWzr%HN0)YzdfsD&kdiX2;er!Z6e>9cnpCf4C?<45AB5zo#dke1dFcfB!pQ z@SU6gp|}3=cOA!?fAkk~MjkWZ*sm76Cw}x}Z|%}$@4)@^N$PdgPnhSn%T`GOUGkIz{!Cu z>g3>gRncZ|Z{Lr0>R8Y=w@Q<^8+9aF^md6E0X4yU@4hpr4NzRpJ^u?@x^QvQ9!Vik zr_4S7B3;^eRM?&u_0`D}$EhT`(Ju@Yyk7t4EJfh!8%L*XwBgz}SXYo0kuI*h z{Z8Wdk)~FcFVaiLeo0yQ5lV;>ty7{u@1~HYsDu-Ods;rOUic|V$f9nZ$>aoSBkknk zq@EI~78JfHfa5rK_B7r3=)Zni zDiRIQ+q(17ExNS!MyxpMeK7@Kn1LUDN)iTbP_WRO$pES2>~DV;D+|U$bj~|%iaH6! zZ(KdI{?|9O_Q*2mi?nnGPn0k`{*nWnxD&6Q9yx)!MTwFmjzMV#<1tE@Z-_TuP9;v3 zqjN|6@en+k03*DcTi1th)v>ItUmiLh%qM8PpGp8ul>X;$FNlzhSqz9XPcSQCY2 zFqUGbMwtY4ygw9$cS#eWeoqO)V6uYu*NuP^VDqxfBve6M!m-~F!Yn`-?ou;(@VnL+ z>E-S;lN%O>$x8=+urN#^P{Vk{FgXx4%+zDV7y-SP=+Xpqf$P*06S3tW3sVwUim|hZqv+t=Z%)%n%%v@+ zVPPf&k>#bA%}m4L@{+B0|7rS)fiQ!q0hgGU^Z{fyuOb&K-ZdF#h#9_FW8AKT15|haX z=C5f^<;vT}gt@1-U{%6=NK7WSq$34VQqqP1ni<)FitCsRu+@f5=}2+=_QzxZM?EV}J&U7sGCe&_B{LLA!kZ#u5!E-uFvHA>lr&t!0NKxWh+!V#hGhZK zdkye-3=?Lgu8rPnfYTBaW;Qj#a9UzQjHDwFch5)eUNc}d?u#S$e3WSk3&Z)+lXi1R z4(JXs5@BRos$>lyV-5W{SwPZli2KB}nZ$q*D~v359Aest6P`PYavmMEFR$R5+1#59?H z+%!NOnJEeI=x?LJK<#YOKwXqPDM^j~ask{--pnft$Q5A}TmUzYT!n6!qQZ2a!l&Z(&xtQM686pAnk5o!9wR~Xb8%ookm7>p|nQW8>AhnTwIiZ(w^ zbOB=t1H9laqbP#8o~akJdBE?m)$>yia%i!eZTw-IR$ z6H_%VP0)Q#LaQ)b-ADJhCfQCEql6N=za zAWLN<>P90>7#VGlqRtTCO(lzPRH=0OrLqVUMn;4~HxiMNwG|lLkI4d4Uyb9EaM0LqRur-d0&^15y=M^?A+Y zx)(&$T3}^LO2P|joUUlEQ@v-x(bK_x$QxzP{phAv!i16XV2$wMQB ziQ)w-09E9{<3S2Unvt!OUUJVTvHrn~yD{t2XgHsyy`^WC}j| P00000NkvXXu0mjf6;@CX literal 0 HcmV?d00001 diff --git a/lib/sliding_page_views/sliding_page_view_1.dart b/lib/sliding_page_views/sliding_page_view_1.dart new file mode 100644 index 0000000..06c027a --- /dev/null +++ b/lib/sliding_page_views/sliding_page_view_1.dart @@ -0,0 +1,251 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutterloginscreens/loaders/color_loader_2.dart'; +import 'package:flutterloginscreens/loaders/color_loader_3.dart'; +import 'package:flutterloginscreens/loaders/color_loader_4.dart'; +import 'package:flutterloginscreens/loaders/dot_type.dart'; + +enum ToggleStatus { request, helper, none } +late ToggleStatus _toggleStatus; + +class SlidingPageViewOne extends StatefulWidget { + const SlidingPageViewOne({Key? key}) : super(key: key); + + @override + _SlidingPageViewOneState createState() => _SlidingPageViewOneState(); +} + +class _SlidingPageViewOneState extends State { + final PageController _pageController = PageController(initialPage: 1); + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Colors.black, + appBar: AppBar( + backgroundColor: Colors.black, + elevation: 0, + title: Text( + "Slider Page View", + style: TextStyle(fontFamily: "icomoon", fontWeight: FontWeight.w500), + ), + centerTitle: true, + ), + body: Container( + color: Colors.black, + width: double.infinity, + child: Stack( + children: [ + PageView( + physics: NeverScrollableScrollPhysics(), + children: [ + ColorLoader2( + color1: Colors.red[900]!, + color2: Colors.blue[900]!, + color3: Colors.black, + ), + ColorLoader3(dotRadius: 30, radius: 60), + ColorLoader4( + dotIcon: Icon(CupertinoIcons.circle_fill), + dotOneColor: Colors.blue[900]!, + dotTwoColor: Colors.amber, + dotThreeColor: Colors.red[900]!, + dotType: DotType.icon, + duration: Duration(milliseconds: 600), + ), + ], + controller: _pageController, + ), + Align( + alignment: Alignment.bottomCenter, + child: Padding( + padding: const EdgeInsets.fromLTRB(30, 5, 30, 30), + child: ToggleSwitch(pageController: _pageController), + ), + ), + ], + ), + ), + ); + } + + @override + void initState() { + super.initState(); + _toggleStatus = ToggleStatus.none; + } + + @override + void dispose() { + super.dispose(); + _pageController.dispose(); + } +} + +class ToggleSwitch extends StatefulWidget { + ToggleSwitch({ + required this.pageController, + this.valueChanged, + }); + final PageController pageController; + final ValueChanged? valueChanged; + + @override + _ToggleSwitchState createState() => _ToggleSwitchState(); +} + +class _ToggleSwitchState extends State { + late double val; + late ValueNotifier valueListener; + + @override + Widget build(BuildContext context) { + final height = MediaQuery.of(context).size.height; + return Row( + children: [ + Expanded( + child: Container( + height: height * 0.08, + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [Colors.blue[900]!, Colors.red[900]!], + ), + boxShadow: [ + BoxShadow( + color: Colors.red[900]!.withOpacity(0.3), + spreadRadius: 4, + blurRadius: 10, + offset: Offset(2, 2), + ), + ], + borderRadius: BorderRadius.circular(30), + ), + padding: EdgeInsets.symmetric(horizontal: 10), + child: Stack( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Visibility( + visible: _toggleStatus != ToggleStatus.helper, + child: DragTargetChild( + text: "Page 1", + color: _toggleStatus == ToggleStatus.none + ? Colors.white + : Colors.white70), + ), + Visibility( + visible: _toggleStatus != ToggleStatus.request, + child: DragTargetChild( + text: "Page 3", + color: _toggleStatus == ToggleStatus.none + ? Colors.white + : Colors.white70), + ), + ], + ), + AnimatedBuilder( + animation: valueListener, + builder: (context, child) { + val = valueListener.value * 2 - 1; + // if (valueListener.value <= 0.4) + // val = -1.0; + // else if (valueListener.value >= 0.7) val = 1.0; + return Align( + alignment: Alignment(val, .5), + child: child, + ); + }, + child: GestureDetector( + onHorizontalDragUpdate: (details) { + valueListener.value = (valueListener.value + + details.delta.dx / context.size!.width) + .clamp(.0, 1.0); + if (valueListener.value <= 0.4) { + setState(() => _toggleStatus = ToggleStatus.helper); + changeToggle(false); + } + + if (valueListener.value >= 0.6) { + setState(() => _toggleStatus = ToggleStatus.request); + changeToggle(true); + } + + if (valueListener.value >= 0.46 && + valueListener.value <= 0.56) { + setState(() => _toggleStatus = ToggleStatus.none); + _toggleMiddle(); + } + }, + child: draggableToggleSwitch(height, 1.2), + ), + ), + ], + ), + ), + ), + ], + ); + } + + Widget draggableToggleSwitch(double height, double scale) => Transform.scale( + scale: scale, + child: Image.asset("assets/images/toggleIcon.png", fit: BoxFit.contain), + ); + + changeToggle(bool val) => widget.pageController.animateToPage( + val ? 2 : 0, + duration: Duration(milliseconds: 200), + curve: Curves.fastLinearToSlowEaseIn, + ); + + _toggleMiddle() => widget.pageController.animateToPage(1, + duration: Duration(milliseconds: 400), curve: Curves.decelerate); + + @override + void initState() { + super.initState(); + initialSliderValue(); + valueListener.addListener(notifyParent); + } + + @override + void dispose() { + valueListener.dispose(); + super.dispose(); + } + + void notifyParent() { + if (widget.valueChanged != null) { + widget.valueChanged!(valueListener.value); + } + } + + initialSliderValue() { + if (_toggleStatus == ToggleStatus.request) + val = 1.0; + else if (_toggleStatus == ToggleStatus.helper) + val = 0.0; + else + val = 0.5; + + valueListener = ValueNotifier(val); + } +} + +class DragTargetChild extends StatelessWidget { + const DragTargetChild({required this.text, required this.color}); + final String? text; + final Color? color; + + @override + Widget build(BuildContext context) { + return Container( + child: Center( + child: Text( + text!, + style: TextStyle(color: color, fontWeight: FontWeight.w500), + ), + ), + ); + } +} diff --git a/pubspec.yaml b/pubspec.yaml index dabf193..dd3e4da 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -46,9 +46,7 @@ flutter: uses-material-design: true assets: - - assets/images/full-bloom.png - - assets/images/mountains.jpeg - - assets/images/mountains.jpg + - assets/images/ fonts: - family: icomoon From 63c3f0c413551ca2114d96bee25c01156f445da8 Mon Sep 17 00:00:00 2001 From: Rishav Naskar Date: Wed, 18 Aug 2021 18:44:51 +0530 Subject: [PATCH 3/3] fix: updated names --- .../sliding_page_view_1.dart | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/sliding_page_views/sliding_page_view_1.dart b/lib/sliding_page_views/sliding_page_view_1.dart index 06c027a..5f04938 100644 --- a/lib/sliding_page_views/sliding_page_view_1.dart +++ b/lib/sliding_page_views/sliding_page_view_1.dart @@ -5,7 +5,7 @@ import 'package:flutterloginscreens/loaders/color_loader_3.dart'; import 'package:flutterloginscreens/loaders/color_loader_4.dart'; import 'package:flutterloginscreens/loaders/dot_type.dart'; -enum ToggleStatus { request, helper, none } +enum ToggleStatus { left, right, middle } late ToggleStatus _toggleStatus; class SlidingPageViewOne extends StatefulWidget { @@ -71,7 +71,7 @@ class _SlidingPageViewOneState extends State { @override void initState() { super.initState(); - _toggleStatus = ToggleStatus.none; + _toggleStatus = ToggleStatus.middle; } @override @@ -126,18 +126,18 @@ class _ToggleSwitchState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Visibility( - visible: _toggleStatus != ToggleStatus.helper, + visible: _toggleStatus != ToggleStatus.right, child: DragTargetChild( text: "Page 1", - color: _toggleStatus == ToggleStatus.none + color: _toggleStatus == ToggleStatus.middle ? Colors.white : Colors.white70), ), Visibility( - visible: _toggleStatus != ToggleStatus.request, + visible: _toggleStatus != ToggleStatus.left, child: DragTargetChild( text: "Page 3", - color: _toggleStatus == ToggleStatus.none + color: _toggleStatus == ToggleStatus.middle ? Colors.white : Colors.white70), ), @@ -161,18 +161,18 @@ class _ToggleSwitchState extends State { details.delta.dx / context.size!.width) .clamp(.0, 1.0); if (valueListener.value <= 0.4) { - setState(() => _toggleStatus = ToggleStatus.helper); + setState(() => _toggleStatus = ToggleStatus.right); changeToggle(false); } if (valueListener.value >= 0.6) { - setState(() => _toggleStatus = ToggleStatus.request); + setState(() => _toggleStatus = ToggleStatus.left); changeToggle(true); } if (valueListener.value >= 0.46 && valueListener.value <= 0.56) { - setState(() => _toggleStatus = ToggleStatus.none); + setState(() => _toggleStatus = ToggleStatus.middle); _toggleMiddle(); } }, @@ -221,9 +221,9 @@ class _ToggleSwitchState extends State { } initialSliderValue() { - if (_toggleStatus == ToggleStatus.request) + if (_toggleStatus == ToggleStatus.left) val = 1.0; - else if (_toggleStatus == ToggleStatus.helper) + else if (_toggleStatus == ToggleStatus.right) val = 0.0; else val = 0.5;