├── ios ├── Flutter │ ├── Debug.xcconfig │ ├── Release.xcconfig │ └── AppFrameworkInfo.plist ├── Runner │ ├── Runner-Bridging-Header.h │ ├── Assets.xcassets │ │ ├── LaunchImage.imageset │ │ │ ├── LaunchImage.png │ │ │ ├── LaunchImage@2x.png │ │ │ ├── LaunchImage@3x.png │ │ │ ├── README.md │ │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ └── Contents.json │ ├── AppDelegate.swift │ ├── Base.lproj │ │ ├── Main.storyboard │ │ └── LaunchScreen.storyboard │ └── Info.plist ├── Runner.xcodeproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── WorkspaceSettings.xcsettings │ │ └── IDEWorkspaceChecks.plist └── .gitignore ├── images ├── 1.png ├── 2.png ├── 3.png ├── 4.png ├── ac.png ├── mac.png ├── tv.png ├── dell.jpg ├── drone.jpg ├── dslr.jpg ├── logo.png ├── mac1.png ├── mac2.png ├── redmi.jpg ├── watch.png ├── flipkart.jpg ├── guitar.jpg ├── noimage.png ├── clothing.jpeg ├── consoles.jpeg ├── flipkart1.png ├── flipkart2.jpg ├── flipkart3.jpg ├── category │ ├── books │ │ ├── jee.jpg │ │ ├── book.jpg │ │ ├── neet.jpg │ │ ├── 10cbse.jpg │ │ ├── 12cbse.jpg │ │ ├── 12state.jpg │ │ ├── 10thstate.jpg │ │ └── documentary.jpeg │ ├── combo │ │ ├── dev.jpg │ │ ├── camp.jpg │ │ ├── 96combo.jpg │ │ ├── applefam.jpg │ │ └── theartist.jpg │ ├── Consoles │ │ ├── ps.jpg │ │ ├── xbox.jpg │ │ ├── drones.jpg │ │ └── nintendo.jpg │ ├── devices │ │ ├── tv.jpg │ │ ├── vr.jpg │ │ ├── dslr.jpg │ │ ├── laptop.jpg │ │ └── smartwatch.jpg │ ├── musical │ │ ├── mic.jpg │ │ ├── drums.jpg │ │ ├── flute.jpg │ │ ├── guitar.jpg │ │ ├── violin.jpg │ │ ├── elecbass.jpg │ │ └── electric bass.jpg │ └── supplies │ │ └── glass.jpg ├── ac.svg ├── no_internet.svg ├── unique.svg ├── devices.svg ├── emptycart.svg └── consoles.svg ├── web ├── favicon.png ├── icons │ ├── Icon-192.png │ ├── Icon-512.png │ ├── Icon-maskable-192.png │ └── Icon-maskable-512.png ├── manifest.json └── index.html ├── android ├── gradle.properties ├── app │ ├── src │ │ ├── main │ │ │ ├── res │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ └── ic_launcher.png │ │ │ │ ├── drawable │ │ │ │ │ └── launch_background.xml │ │ │ │ ├── drawable-v21 │ │ │ │ │ └── launch_background.xml │ │ │ │ ├── values │ │ │ │ │ └── styles.xml │ │ │ │ └── values-night │ │ │ │ │ └── styles.xml │ │ │ └── AndroidManifest.xml │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ └── profile │ │ │ └── AndroidManifest.xml │ └── build.gradle ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties ├── .gitignore ├── settings.gradle └── build.gradle ├── .metadata ├── lib ├── pages │ ├── categories │ │ ├── category │ │ │ ├── unique.dart │ │ │ ├── consoles.dart │ │ │ ├── combo.dart │ │ │ ├── devices.dart │ │ │ ├── clothing.dart │ │ │ ├── musicalInstruments.dart │ │ │ └── books.dart │ │ └── categories.dart │ ├── search │ │ └── search.dart │ ├── splash.dart │ ├── profile │ │ ├── settings │ │ │ ├── yourRequests │ │ │ │ ├── refunds.dart │ │ │ │ ├── yourRequests.dart │ │ │ │ └── requests.dart │ │ │ └── LegalAndAbout.dart │ │ └── viewOptions │ │ │ └── viewOptions.dart │ └── login │ │ └── ui.dart ├── widgets │ ├── navigation │ │ └── tab_navigator.dart │ ├── navbar │ │ ├── themes.dart │ │ └── navBar.dart │ └── widgets.dart └── main.dart ├── .gitignore ├── test └── widget_test.dart ├── analysis_options.yaml ├── README.md └── pubspec.yaml /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /images/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/1.png -------------------------------------------------------------------------------- /images/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/2.png -------------------------------------------------------------------------------- /images/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/3.png -------------------------------------------------------------------------------- /images/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/4.png -------------------------------------------------------------------------------- /images/ac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/ac.png -------------------------------------------------------------------------------- /images/mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/mac.png -------------------------------------------------------------------------------- /images/tv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/tv.png -------------------------------------------------------------------------------- /images/dell.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/dell.jpg -------------------------------------------------------------------------------- /images/drone.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/drone.jpg -------------------------------------------------------------------------------- /images/dslr.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/dslr.jpg -------------------------------------------------------------------------------- /images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/logo.png -------------------------------------------------------------------------------- /images/mac1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/mac1.png -------------------------------------------------------------------------------- /images/mac2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/mac2.png -------------------------------------------------------------------------------- /images/redmi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/redmi.jpg -------------------------------------------------------------------------------- /images/watch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/watch.png -------------------------------------------------------------------------------- /web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/web/favicon.png -------------------------------------------------------------------------------- /images/flipkart.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/flipkart.jpg -------------------------------------------------------------------------------- /images/guitar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/guitar.jpg -------------------------------------------------------------------------------- /images/noimage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/noimage.png -------------------------------------------------------------------------------- /images/clothing.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/clothing.jpeg -------------------------------------------------------------------------------- /images/consoles.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/consoles.jpeg -------------------------------------------------------------------------------- /images/flipkart1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/flipkart1.png -------------------------------------------------------------------------------- /images/flipkart2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/flipkart2.jpg -------------------------------------------------------------------------------- /images/flipkart3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/flipkart3.jpg -------------------------------------------------------------------------------- /web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/web/icons/Icon-192.png -------------------------------------------------------------------------------- /web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/web/icons/Icon-512.png -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /images/category/books/jee.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/books/jee.jpg -------------------------------------------------------------------------------- /images/category/combo/dev.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/combo/dev.jpg -------------------------------------------------------------------------------- /images/category/Consoles/ps.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/Consoles/ps.jpg -------------------------------------------------------------------------------- /images/category/books/book.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/books/book.jpg -------------------------------------------------------------------------------- /images/category/books/neet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/books/neet.jpg -------------------------------------------------------------------------------- /images/category/combo/camp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/combo/camp.jpg -------------------------------------------------------------------------------- /images/category/devices/tv.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/devices/tv.jpg -------------------------------------------------------------------------------- /images/category/devices/vr.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/devices/vr.jpg -------------------------------------------------------------------------------- /images/category/musical/mic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/musical/mic.jpg -------------------------------------------------------------------------------- /web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /images/category/Consoles/xbox.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/Consoles/xbox.jpg -------------------------------------------------------------------------------- /images/category/books/10cbse.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/books/10cbse.jpg -------------------------------------------------------------------------------- /images/category/books/12cbse.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/books/12cbse.jpg -------------------------------------------------------------------------------- /images/category/books/12state.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/books/12state.jpg -------------------------------------------------------------------------------- /images/category/combo/96combo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/combo/96combo.jpg -------------------------------------------------------------------------------- /images/category/combo/applefam.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/combo/applefam.jpg -------------------------------------------------------------------------------- /images/category/devices/dslr.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/devices/dslr.jpg -------------------------------------------------------------------------------- /images/category/devices/laptop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/devices/laptop.jpg -------------------------------------------------------------------------------- /images/category/musical/drums.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/musical/drums.jpg -------------------------------------------------------------------------------- /images/category/musical/flute.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/musical/flute.jpg -------------------------------------------------------------------------------- /images/category/musical/guitar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/musical/guitar.jpg -------------------------------------------------------------------------------- /images/category/musical/violin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/musical/violin.jpg -------------------------------------------------------------------------------- /images/category/supplies/glass.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/supplies/glass.jpg -------------------------------------------------------------------------------- /images/category/Consoles/drones.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/Consoles/drones.jpg -------------------------------------------------------------------------------- /images/category/books/10thstate.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/books/10thstate.jpg -------------------------------------------------------------------------------- /images/category/combo/theartist.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/combo/theartist.jpg -------------------------------------------------------------------------------- /images/category/musical/elecbass.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/musical/elecbass.jpg -------------------------------------------------------------------------------- /images/category/Consoles/nintendo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/Consoles/nintendo.jpg -------------------------------------------------------------------------------- /images/category/books/documentary.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/books/documentary.jpeg -------------------------------------------------------------------------------- /images/category/devices/smartwatch.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/devices/smartwatch.jpg -------------------------------------------------------------------------------- /images/category/musical/electric bass.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/images/category/musical/electric bass.jpg -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CRYPTOcoderAS/RentALL-Flutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip 7 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: f18b9281c2280c2646aa3d4348715ed5bb9446c8 8 | channel: beta 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | 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. -------------------------------------------------------------------------------- /lib/pages/categories/category/unique.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | 3 | class Unique extends StatefulWidget { 4 | @override 5 | _UniqueState createState() => _UniqueState(); 6 | } 7 | 8 | class _UniqueState extends State { 9 | @override 10 | Widget build(BuildContext context) { 11 | return Container( 12 | width: 100, 13 | child: Text("Unique"), 14 | ); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /lib/pages/search/search.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:rentall/widgets/appBar/appBar.dart'; 3 | 4 | class Search extends StatefulWidget { 5 | @override 6 | _SearchState createState() => _SearchState(); 7 | } 8 | 9 | class _SearchState extends State { 10 | @override 11 | Widget build(BuildContext context) { 12 | return Scaffold( 13 | backgroundColor: Colors.transparent, 14 | appBar: PreferredSize( 15 | preferredSize: Size.fromHeight(120), 16 | child: CommonAppBar(), 17 | ), 18 | body: Text('Search page')); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | *.mode1v3 2 | *.mode2v3 3 | *.moved-aside 4 | *.pbxuser 5 | *.perspectivev3 6 | **/*sync/ 7 | .sconsign.dblite 8 | .tags* 9 | **/.vagrant/ 10 | **/DerivedData/ 11 | Icon? 12 | **/Pods/ 13 | **/.symlinks/ 14 | profile 15 | xcuserdata 16 | **/.generated/ 17 | Flutter/App.framework 18 | Flutter/Flutter.framework 19 | Flutter/Flutter.podspec 20 | Flutter/Generated.xcconfig 21 | Flutter/ephemeral/ 22 | Flutter/app.flx 23 | Flutter/app.zip 24 | Flutter/flutter_assets/ 25 | Flutter/flutter_export_environment.sh 26 | ServiceDefinitions.json 27 | Runner/GeneratedPluginRegistrant.* 28 | 29 | # Exceptions to above rules. 30 | !default.mode1v3 31 | !default.mode2v3 32 | !default.pbxuser 33 | !default.perspectivev3 34 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.3.50' 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:4.1.0' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | classpath 'com.google.gms:google-services:4.3.8' 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | google() 18 | jcenter() 19 | } 20 | } 21 | 22 | rootProject.buildDir = '../build' 23 | subprojects { 24 | project.buildDir = "${rootProject.buildDir}/${project.name}" 25 | } 26 | subprojects { 27 | project.evaluationDependsOn(':app') 28 | } 29 | 30 | task clean(type: Delete) { 31 | delete rootProject.buildDir 32 | } 33 | -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | **/ios/Flutter/.last_build_id 26 | .dart_tool/ 27 | .flutter-plugins 28 | .flutter-plugins-dependencies 29 | .packages 30 | .pub-cache/ 31 | .pub/ 32 | /build/ 33 | 34 | # Web related 35 | lib/generated_plugin_registrant.dart 36 | 37 | # Symbolication related 38 | app.*.symbols 39 | 40 | # Obfuscation related 41 | app.*.map.json 42 | 43 | # Android Studio will place build artifacts here 44 | /android/app/debug 45 | /android/app/profile 46 | /android/app/release 47 | -------------------------------------------------------------------------------- /web/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rentall", 3 | "short_name": "rentall", 4 | "start_url": ".", 5 | "display": "standalone", 6 | "background_color": "#0175C2", 7 | "theme_color": "#0175C2", 8 | "description": "A new Flutter project.", 9 | "orientation": "portrait-primary", 10 | "prefer_related_applications": false, 11 | "icons": [ 12 | { 13 | "src": "icons/Icon-192.png", 14 | "sizes": "192x192", 15 | "type": "image/png" 16 | }, 17 | { 18 | "src": "icons/Icon-512.png", 19 | "sizes": "512x512", 20 | "type": "image/png" 21 | }, 22 | { 23 | "src": "icons/Icon-maskable-192.png", 24 | "sizes": "192x192", 25 | "type": "image/png", 26 | "purpose": "maskable" 27 | }, 28 | { 29 | "src": "icons/Icon-maskable-512.png", 30 | "sizes": "512x512", 31 | "type": "image/png", 32 | "purpose": "maskable" 33 | } 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/main/res/values-night/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:rentall/main.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(const MyApp()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /lib/widgets/navigation/tab_navigator.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:rentall/pages/home/homepage.dart'; 4 | import 'package:rentall/pages/profile/profile.dart'; 5 | import 'package:rentall/pages/search/search.dart'; 6 | 7 | import '../../pages/cart/cartPage.dart'; 8 | 9 | class TabNavigatorRoutes { 10 | static const String root = '/'; 11 | static const String detail = '/detail'; 12 | } 13 | 14 | class TabNavigator extends StatelessWidget { 15 | TabNavigator({this.navigatorKey, this.tabItem}); 16 | final GlobalKey navigatorKey; 17 | final String tabItem; 18 | 19 | @override 20 | Widget build(BuildContext context) { 21 | Widget child; 22 | if (tabItem == "Home") 23 | child = HomePage(); 24 | else if (tabItem == "Search") 25 | child = Search(); 26 | else if (tabItem == "Cart") 27 | child = CartPage(); 28 | else if (tabItem == "Profile") child = Profile(); 29 | 30 | return Navigator( 31 | key: navigatorKey, 32 | onGenerateRoute: (routeSettings) { 33 | return MaterialPageRoute(builder: (context) => child); 34 | }, 35 | ); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /analysis_options.yaml: -------------------------------------------------------------------------------- 1 | # This file configures the analyzer, which statically analyzes Dart code to 2 | # check for errors, warnings, and lints. 3 | # 4 | # The issues identified by the analyzer are surfaced in the UI of Dart-enabled 5 | # IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be 6 | # invoked from the command line by running `flutter analyze`. 7 | 8 | # The following line activates a set of recommended lints for Flutter apps, 9 | # packages, and plugins designed to encourage good coding practices. 10 | include: package:flutter_lints/flutter.yaml 11 | 12 | linter: 13 | # The lint rules applied to this project can be customized in the 14 | # section below to disable rules from the `package:flutter_lints/flutter.yaml` 15 | # included above or to enable additional rules. A list of all available lints 16 | # and their documentation is published at 17 | # https://dart-lang.github.io/linter/lints/index.html. 18 | # 19 | # Instead of disabling a lint rule for the entire project in the 20 | # section below, it can also be suppressed for a single line of code 21 | # or a specific dart file by using the `// ignore: name_of_lint` and 22 | # `// ignore_for_file: name_of_lint` syntax on the line or in the file 23 | # producing the lint. 24 | rules: 25 | # avoid_print: false # Uncomment to disable the `avoid_print` rule 26 | # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule 27 | 28 | # Additional information about this file can be found at 29 | # https://dart.dev/guides/language/analysis-options 30 | -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /lib/widgets/navbar/themes.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter/scheduler.dart'; 3 | import 'package:provider/provider.dart'; 4 | 5 | class ChangeThemeButtonWidget extends StatelessWidget { 6 | @override 7 | Widget build(BuildContext context) { 8 | final themeProvider = Provider.of(context); 9 | 10 | return Switch.adaptive( 11 | value: themeProvider.isDarkMode, 12 | onChanged: (value) { 13 | final provider = Provider.of(context, listen: false); 14 | provider.toggleTheme(value); 15 | }, 16 | ); 17 | } 18 | } 19 | 20 | class ThemeProvider extends ChangeNotifier { 21 | ThemeMode themeMode = ThemeMode.system; 22 | 23 | bool get isDarkMode { 24 | if (themeMode == ThemeMode.system) { 25 | final brightness = SchedulerBinding.instance.window.platformBrightness; 26 | return brightness == Brightness.dark; 27 | } else { 28 | return themeMode == ThemeMode.dark; 29 | } 30 | } 31 | 32 | void toggleTheme(bool isOn) { 33 | themeMode = isOn ? ThemeMode.dark : ThemeMode.light; 34 | notifyListeners(); 35 | } 36 | } 37 | 38 | class MyThemes { 39 | static final darkTheme = ThemeData( 40 | scaffoldBackgroundColor: Colors.grey.shade900, 41 | primaryColor: Colors.black, 42 | secondaryHeaderColor: Colors.white, 43 | colorScheme: ColorScheme.dark(), 44 | iconTheme: IconThemeData(color: Colors.purple.shade200, opacity: 0.8), 45 | ); 46 | 47 | static final lightTheme = ThemeData( 48 | scaffoldBackgroundColor: Colors.white, 49 | primaryColor: Colors.white, 50 | secondaryHeaderColor: Colors.black, 51 | colorScheme: ColorScheme.light(), 52 | iconTheme: IconThemeData(color: Colors.red, opacity: 0.8), 53 | ); 54 | } 55 | -------------------------------------------------------------------------------- /images/ac.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | 9 | 10 | 12 | 13 | 15 | 16 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | rentall 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | $(FLUTTER_BUILD_NAME) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSRequiresIPhoneOS 24 | 25 | NSLocationWhenInUseUsageDescription 26 | This app needs access to location when open. 27 | NSLocationAlwaysUsageDescription 28 | This app needs access to location when in the background. 29 | UILaunchStoryboardName 30 | LaunchScreen 31 | UIMainStoryboardFile 32 | Main 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | UISupportedInterfaceOrientations~ipad 40 | 41 | UIInterfaceOrientationPortrait 42 | UIInterfaceOrientationPortraitUpsideDown 43 | UIInterfaceOrientationLandscapeLeft 44 | UIInterfaceOrientationLandscapeRight 45 | 46 | UIViewControllerBasedStatusBarAppearance 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:firebase_core/firebase_core.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:flutter/services.dart'; 4 | import 'package:provider/provider.dart'; 5 | import 'package:rentall/pages/login/login_screen.dart'; 6 | import 'package:rentall/pages/login/register_screen.dart'; 7 | import 'package:rentall/pages/splash.dart'; 8 | import 'package:rentall/widgets/navbar/navBar.dart'; 9 | import 'package:rentall/widgets/navbar/themes.dart'; 10 | 11 | Future main() async { 12 | WidgetsFlutterBinding.ensureInitialized(); 13 | await Firebase.initializeApp(); 14 | await SystemChrome.setPreferredOrientations([ 15 | DeviceOrientation.portraitUp, 16 | DeviceOrientation.portraitDown, 17 | ]); 18 | SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( 19 | statusBarColor: Color(0xFFbe3144), 20 | statusBarBrightness: Brightness.dark, 21 | statusBarIconBrightness: Brightness.dark)); 22 | runApp( 23 | ChangeNotifierProvider( 24 | create: (context) => ThemeProvider(), 25 | builder: (context, _) { 26 | final themeProvider = Provider.of(context); 27 | 28 | return MaterialApp( 29 | title: 'RentAll', 30 | debugShowCheckedModeBanner: false, 31 | themeMode: themeProvider.themeMode, 32 | theme: MyThemes.lightTheme, 33 | darkTheme: MyThemes.darkTheme, 34 | home: SplashScreen(), 35 | routes: { 36 | '/home': (context) => NavigationBar(), 37 | '/login': (context) => LoginScreen(), 38 | '/register': (context) => RegisterScreen() 39 | }, 40 | ); 41 | }, 42 | ), 43 | ); 44 | } 45 | 46 | // class MyApp extends StatelessWidget { 47 | // @override 48 | // Widget build(BuildContext context) { 49 | // return MaterialApp( 50 | // 51 | // debugShowCheckedModeBanner: false, 52 | // theme: ThemeData( 53 | // primarySwatch: Colors.blue, 54 | // visualDensity: VisualDensity.adaptivePlatformDensity, 55 | // ), 56 | // home: Start(), 57 | // 58 | // ); 59 | // } 60 | // } 61 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | def flutterRoot = localProperties.getProperty('flutter.sdk') 10 | if (flutterRoot == null) { 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 12 | } 13 | 14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | apply plugin: 'kotlin-android' 26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 27 | apply plugin: 'com.google.gms.google-services' 28 | 29 | android { 30 | compileSdkVersion 30 31 | 32 | sourceSets { 33 | main.java.srcDirs += 'src/main/kotlin' 34 | } 35 | 36 | defaultConfig { 37 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 38 | applicationId "com.rentall.rentall" 39 | minSdkVersion 21 40 | targetSdkVersion 30 41 | versionCode flutterVersionCode.toInteger() 42 | versionName flutterVersionName 43 | } 44 | 45 | buildTypes { 46 | release { 47 | // TODO: Add your own signing config for the release build. 48 | // Signing with the debug keys for now, so `flutter run --release` works. 49 | signingConfig signingConfigs.debug 50 | } 51 | } 52 | } 53 | 54 | flutter { 55 | source '../..' 56 | } 57 | 58 | dependencies { 59 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 60 | implementation platform('com.google.firebase:firebase-bom:28.3.0') 61 | implementation 'com.google.firebase:firebase-analytics' 62 | } 63 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 8 | 15 | 19 | 23 | 28 | 32 | 33 | 34 | 35 | 36 | 37 | 39 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /lib/pages/splash.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:firebase_auth/firebase_auth.dart'; 4 | import 'package:flutter/cupertino.dart'; 5 | import 'package:flutter/material.dart'; 6 | import 'package:flutter_secure_storage/flutter_secure_storage.dart'; 7 | import 'package:google_fonts/google_fonts.dart'; 8 | import 'package:rentall/widgets/navbar/navBar.dart'; 9 | 10 | class SplashScreen extends StatefulWidget { 11 | @override 12 | _SplashScreenState createState() => _SplashScreenState(); 13 | } 14 | 15 | class _SplashScreenState extends State { 16 | bool state = false; 17 | 18 | @override 19 | void initState() { 20 | // TODO: implement initState 21 | super.initState(); 22 | startTimer(); 23 | checkState(); 24 | } 25 | 26 | checkState() async { 27 | final store = new FlutterSecureStorage(); 28 | if (FirebaseAuth.instance.currentUser == null) { 29 | if (await store.containsKey(key: 'sn')) { 30 | if (await store.read(key: 'sn') == 'true') { 31 | setState(() { 32 | state = true; 33 | }); 34 | } else { 35 | setState(() { 36 | state = false; 37 | }); 38 | } 39 | } else { 40 | setState(() { 41 | state = false; 42 | }); 43 | } 44 | } else { 45 | setState(() { 46 | state = true; 47 | }); 48 | } 49 | print('-----------store'); 50 | print(await store.read(key: 'sn')); 51 | } 52 | 53 | @override 54 | startTimer() async { 55 | var duration = Duration( 56 | seconds: 57 | 1); // After 1 seconds, it is re-directed to the sign-in screen if the user is not authenticated, else it takes him into the app. 58 | return Timer(duration, callback); 59 | } 60 | 61 | callback() { 62 | Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) { 63 | return NavigationBar(index: 0, page: "Home"); 64 | })); 65 | } 66 | 67 | @override 68 | Widget build(BuildContext context) { 69 | return Scaffold( 70 | resizeToAvoidBottomInset: true, 71 | body: Container( 72 | alignment: Alignment.center, 73 | child: Stack( 74 | alignment: Alignment.center, 75 | children: [ 76 | Image.asset( 77 | 'images/logo.png', 78 | width: 300, 79 | height: 300, 80 | ), 81 | Padding( 82 | padding: const EdgeInsets.only(top: 100.0, left: 120), 83 | child: Text( 84 | "Dream it. Get it.", 85 | style: GoogleFonts.mukta(color: Color(0xFFbe3144)), 86 | ), 87 | ), 88 | ], 89 | ), 90 | ), 91 | ); 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /lib/pages/categories/category/consoles.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:google_fonts/google_fonts.dart'; 4 | import 'package:rentall/widgets/widgets.dart'; 5 | 6 | class Consoles extends StatefulWidget { 7 | @override 8 | _ConsolesState createState() => _ConsolesState(); 9 | } 10 | 11 | class _ConsolesState extends State { 12 | List itemNames = [ 13 | "PlayStation", 14 | "Xbox", 15 | "Drones", 16 | ]; 17 | List itemImg = [ 18 | "images/category/Consoles/ps.jpg", 19 | "images/category/Consoles/xbox.jpg", 20 | "images/category/Consoles/drones.jpg", 21 | ]; 22 | @override 23 | Widget build(BuildContext context) { 24 | return SafeArea( 25 | child: Scaffold( 26 | backgroundColor: Theme.of(context).primaryColor, 27 | body: Column( 28 | children: [ 29 | Column( 30 | crossAxisAlignment: CrossAxisAlignment.center, 31 | children: [ 32 | Padding( 33 | padding: const EdgeInsets.all(8.0), 34 | child: Text( 35 | "“If you want to be happy, be.” ", 36 | style: GoogleFonts.nunito( 37 | fontSize: 20, 38 | color: Theme.of(context).secondaryHeaderColor, 39 | ), 40 | ), 41 | ), 42 | Divider( 43 | indent: 100, 44 | endIndent: 100, 45 | color: color, 46 | ), 47 | ], 48 | ), 49 | Expanded( 50 | child: GridView.builder( 51 | gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent( 52 | maxCrossAxisExtent: 200, 53 | ), 54 | itemCount: itemNames.length, 55 | itemBuilder: (BuildContext ctx, index) { 56 | return CardsStack( 57 | lightCardChild: Center( 58 | child: Text( 59 | itemNames[index], 60 | style: GoogleFonts.nunito( 61 | color: Theme.of(context).secondaryHeaderColor, 62 | ), 63 | ), 64 | ), 65 | darkCardChild: Container( 66 | width: 200, 67 | height: 200, 68 | decoration: BoxDecoration( 69 | color: Theme.of(context).primaryColor, 70 | borderRadius: BorderRadius.circular(12), 71 | image: DecorationImage( 72 | image: AssetImage(itemImg[index]), 73 | fit: BoxFit.cover, 74 | ), 75 | ), 76 | ), 77 | ); 78 | }), 79 | ), 80 | ], 81 | ), 82 | ), 83 | ); 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /lib/pages/categories/category/combo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:google_fonts/google_fonts.dart'; 4 | import 'package:rentall/widgets/widgets.dart'; 5 | 6 | class Combos extends StatefulWidget { 7 | @override 8 | _CombosState createState() => _CombosState(); 9 | } 10 | 11 | class _CombosState extends State { 12 | List itemNames = [ 13 | "The Wanderlust", 14 | "24/7 Developer", 15 | "The Artist", 16 | "The 96' combo", 17 | "Apple FAM", 18 | ]; 19 | List itemImg = [ 20 | "images/category/combo/camp.jpg", 21 | "images/category/combo/dev.jpg", 22 | "images/category/combo/theartist.jpg", 23 | "images/category/combo/96combo.jpg", 24 | "images/category/combo/applefam.jpg", 25 | ]; 26 | @override 27 | Widget build(BuildContext context) { 28 | return SafeArea( 29 | child: Scaffold( 30 | backgroundColor: Theme.of(context).primaryColor, 31 | body: Column( 32 | children: [ 33 | Column( 34 | crossAxisAlignment: CrossAxisAlignment.center, 35 | children: [ 36 | Padding( 37 | padding: const EdgeInsets.all(8.0), 38 | child: Text( 39 | "“Life's a one time journey, no compromise on that!”", 40 | style: GoogleFonts.nunito( 41 | fontSize: 18, 42 | color: Theme.of(context).secondaryHeaderColor, 43 | ), 44 | ), 45 | ), 46 | Divider( 47 | indent: 100, 48 | endIndent: 100, 49 | color: color, 50 | ), 51 | ], 52 | ), 53 | Expanded( 54 | child: GridView.builder( 55 | gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent( 56 | maxCrossAxisExtent: 200, 57 | ), 58 | itemCount: itemNames.length, 59 | itemBuilder: (BuildContext ctx, index) { 60 | return CardsStack( 61 | lightCardChild: Center( 62 | child: Text( 63 | itemNames[index], 64 | style: GoogleFonts.nunito( 65 | color: Theme.of(context).secondaryHeaderColor, 66 | ), 67 | ), 68 | ), 69 | darkCardChild: Container( 70 | width: 200, 71 | height: 200, 72 | decoration: BoxDecoration( 73 | color: Theme.of(context).primaryColor, 74 | borderRadius: BorderRadius.circular(12), 75 | image: DecorationImage( 76 | image: AssetImage(itemImg[index]), 77 | fit: BoxFit.cover, 78 | ), 79 | ), 80 | ), 81 | ); 82 | }), 83 | ), 84 | ], 85 | ), 86 | ), 87 | ); 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /lib/pages/categories/category/devices.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:google_fonts/google_fonts.dart'; 4 | import 'package:rentall/widgets/widgets.dart'; 5 | 6 | class Devices extends StatefulWidget { 7 | @override 8 | _DevicesState createState() => _DevicesState(); 9 | } 10 | 11 | class _DevicesState extends State { 12 | List itemNames = [ 13 | "Smart Phones", 14 | "Laptops", 15 | "Television", 16 | "Cameras", 17 | "Smart Watches", 18 | "VR Glasses", 19 | ]; 20 | List itemImg = [ 21 | "images/noimage.png", 22 | "images/category/devices/laptop.jpg", 23 | "images/category/devices/tv.jpg", 24 | "images/category/devices/dslr.jpg", 25 | "images/category/devices/smartwatch.jpg", 26 | "images/category/devices/vr.jpg", 27 | ]; 28 | @override 29 | Widget build(BuildContext context) { 30 | return SafeArea( 31 | child: Scaffold( 32 | backgroundColor: Theme.of(context).primaryColor, 33 | body: Column( 34 | children: [ 35 | Column( 36 | crossAxisAlignment: CrossAxisAlignment.center, 37 | children: [ 38 | Padding( 39 | padding: const EdgeInsets.all(8.0), 40 | child: Text( 41 | "“Prove it, make a remark on it.”", 42 | style: GoogleFonts.nunito( 43 | fontSize: 18, 44 | color: Theme.of(context).secondaryHeaderColor, 45 | ), 46 | ), 47 | ), 48 | Divider( 49 | indent: 100, 50 | endIndent: 100, 51 | color: color, 52 | ), 53 | ], 54 | ), 55 | Expanded( 56 | child: GridView.builder( 57 | gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent( 58 | maxCrossAxisExtent: 200, 59 | ), 60 | itemCount: itemNames.length, 61 | itemBuilder: (BuildContext ctx, index) { 62 | return CardsStack( 63 | lightCardChild: Center( 64 | child: Text( 65 | itemNames[index], 66 | style: GoogleFonts.nunito( 67 | color: Theme.of(context).secondaryHeaderColor, 68 | ), 69 | ), 70 | ), 71 | darkCardChild: Container( 72 | width: 200, 73 | height: 200, 74 | decoration: BoxDecoration( 75 | color: Theme.of(context).primaryColor, 76 | borderRadius: BorderRadius.circular(12), 77 | image: DecorationImage( 78 | image: AssetImage(itemImg[index]), 79 | fit: BoxFit.cover, 80 | ), 81 | ), 82 | ), 83 | ); 84 | }), 85 | ), 86 | ], 87 | ), 88 | ), 89 | ); 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /lib/pages/categories/category/clothing.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:google_fonts/google_fonts.dart'; 4 | import 'package:rentall/widgets/widgets.dart'; 5 | 6 | class Clothing extends StatefulWidget { 7 | @override 8 | _ClothingState createState() => _ClothingState(); 9 | } 10 | 11 | class _ClothingState extends State { 12 | List itemNames = [ 13 | "The Ambitious", 14 | "Jerseys", 15 | "Traditional Dress", 16 | "Photoshoot Collections", 17 | "Classic", 18 | "Wedding dress", 19 | "Outfits", 20 | ]; 21 | List itemImg = [ 22 | "images/noimage.png", 23 | "images/noimage.png", 24 | "images/noimage.png", 25 | "images/noimage.png", 26 | "images/noimage.png", 27 | "images/noimage.png", 28 | "images/noimage.png", 29 | ]; 30 | @override 31 | Widget build(BuildContext context) { 32 | return SafeArea( 33 | child: Scaffold( 34 | backgroundColor: Theme.of(context).primaryColor, 35 | body: Column( 36 | children: [ 37 | Column( 38 | crossAxisAlignment: CrossAxisAlignment.center, 39 | children: [ 40 | Padding( 41 | padding: const EdgeInsets.all(8.0), 42 | child: Text( 43 | "“Because the way you dress defines who you are.”", 44 | style: GoogleFonts.nunito( 45 | fontSize: 18, 46 | color: Theme.of(context).secondaryHeaderColor, 47 | ), 48 | ), 49 | ), 50 | Divider( 51 | indent: 100, 52 | endIndent: 100, 53 | color: color, 54 | ), 55 | ], 56 | ), 57 | Expanded( 58 | child: GridView.builder( 59 | gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent( 60 | maxCrossAxisExtent: 200, 61 | ), 62 | itemCount: itemNames.length, 63 | itemBuilder: (BuildContext ctx, index) { 64 | return CardsStack( 65 | lightCardChild: Center( 66 | child: Text( 67 | itemNames[index], 68 | style: GoogleFonts.nunito( 69 | color: Theme.of(context).secondaryHeaderColor, 70 | ), 71 | ), 72 | ), 73 | darkCardChild: Container( 74 | width: 200, 75 | height: 200, 76 | decoration: BoxDecoration( 77 | color: Theme.of(context).primaryColor, 78 | borderRadius: BorderRadius.circular(12), 79 | image: DecorationImage( 80 | image: AssetImage(itemImg[index]), 81 | fit: BoxFit.cover, 82 | ), 83 | ), 84 | ), 85 | ); 86 | }), 87 | ), 88 | ], 89 | ), 90 | ), 91 | ); 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /lib/pages/categories/category/musicalInstruments.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:google_fonts/google_fonts.dart'; 4 | import 'package:rentall/widgets/widgets.dart'; 5 | 6 | class MusicalInstruments extends StatefulWidget { 7 | @override 8 | _MusicalInstrumentsState createState() => _MusicalInstrumentsState(); 9 | } 10 | 11 | class _MusicalInstrumentsState extends State { 12 | List itemNames = [ 13 | "Guitar", 14 | "Flute", 15 | "Electric Bass", 16 | "Microphone", 17 | "Drums", 18 | "Violin", 19 | "Harmonium", 20 | "Sarod", 21 | "Sitar" 22 | ]; 23 | List itemImg = [ 24 | "images/category/musical/guitar.jpg", 25 | "images/category/musical/flute.jpg", 26 | "images/category/musical/elecbass.jpg", 27 | "images/category/musical/mic.jpg", 28 | "images/noimage.png", 29 | "images/category/musical/violin.jpg", 30 | "images/noimage.png", 31 | "images/noimage.png", 32 | "images/noimage.png", 33 | ]; 34 | @override 35 | Widget build(BuildContext context) { 36 | return SafeArea( 37 | child: Scaffold( 38 | backgroundColor: Theme.of(context).primaryColor, 39 | body: Column( 40 | children: [ 41 | Column( 42 | crossAxisAlignment: CrossAxisAlignment.center, 43 | children: [ 44 | Padding( 45 | padding: const EdgeInsets.all(8.0), 46 | child: Text( 47 | "“Sometimes all you need is music & you.”", 48 | style: GoogleFonts.nunito( 49 | fontSize: 18, 50 | color: Theme.of(context).secondaryHeaderColor, 51 | ), 52 | ), 53 | ), 54 | Divider( 55 | indent: 100, 56 | endIndent: 100, 57 | color: color, 58 | ), 59 | ], 60 | ), 61 | Expanded( 62 | child: GridView.builder( 63 | gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent( 64 | maxCrossAxisExtent: 200, 65 | ), 66 | itemCount: itemNames.length, 67 | itemBuilder: (BuildContext ctx, index) { 68 | return CardsStack( 69 | lightCardChild: Center( 70 | child: Text( 71 | itemNames[index], 72 | style: GoogleFonts.nunito( 73 | color: Theme.of(context).secondaryHeaderColor, 74 | ), 75 | ), 76 | ), 77 | darkCardChild: Container( 78 | width: 200, 79 | height: 200, 80 | decoration: BoxDecoration( 81 | color: Theme.of(context).primaryColor, 82 | borderRadius: BorderRadius.circular(12), 83 | image: DecorationImage( 84 | image: AssetImage(itemImg[index]), 85 | fit: BoxFit.cover, 86 | ), 87 | ), 88 | ), 89 | ); 90 | }), 91 | ), 92 | ], 93 | ), 94 | ), 95 | ); 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /lib/pages/categories/category/books.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:google_fonts/google_fonts.dart'; 4 | import 'package:rentall/widgets/widgets.dart'; 5 | 6 | class Books extends StatefulWidget { 7 | @override 8 | _BooksState createState() => _BooksState(); 9 | } 10 | 11 | class _BooksState extends State { 12 | List itemNames = [ 13 | "Documentaries", 14 | "Self-help books", 15 | "JEE guides", 16 | "NEET guides", 17 | "10th Guides", 18 | "12th Guides", 19 | "Other Exams(UPSC..,)", 20 | ]; 21 | List itemImg = [ 22 | "images/category/books/documentary.jpeg", 23 | "images/category/books/book.jpg", 24 | "images/category/books/jee.jpg", 25 | "images/category/books/neet.jpg", 26 | "images/category/books/10cbse.jpg", 27 | // "images/category/books/10thstate.jpg", 28 | "images/category/books/12cbse.jpg", 29 | "images/noimage.png", 30 | // "images/category/books/12state.jpg", 31 | ]; 32 | @override 33 | Widget build(BuildContext context) { 34 | return SafeArea( 35 | child: Scaffold( 36 | backgroundColor: Theme.of(context).primaryColor, 37 | body: Column( 38 | children: [ 39 | Column( 40 | crossAxisAlignment: CrossAxisAlignment.center, 41 | children: [ 42 | Padding( 43 | padding: const EdgeInsets.all(8.0), 44 | child: Text( 45 | "“The beautiful thing about learning is that nobody can take it away from you.”", 46 | style: GoogleFonts.nunito( 47 | fontSize: 18, 48 | color: Theme.of(context).secondaryHeaderColor, 49 | ), 50 | ), 51 | ), 52 | Divider( 53 | indent: 100, 54 | endIndent: 100, 55 | color: color, 56 | ), 57 | ], 58 | ), 59 | Expanded( 60 | child: GridView.builder( 61 | gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent( 62 | maxCrossAxisExtent: 200, 63 | ), 64 | itemCount: itemNames.length, 65 | itemBuilder: (BuildContext ctx, index) { 66 | return CardsStack( 67 | lightCardChild: Center( 68 | child: Text( 69 | itemNames[index], 70 | style: GoogleFonts.nunito( 71 | color: Theme.of(context).secondaryHeaderColor, 72 | ), 73 | ), 74 | ), 75 | darkCardChild: Container( 76 | width: 200, 77 | height: 200, 78 | decoration: BoxDecoration( 79 | color: Theme.of(context).primaryColor, 80 | borderRadius: BorderRadius.circular(12), 81 | image: DecorationImage( 82 | image: AssetImage(itemImg[index]), 83 | fit: BoxFit.cover, 84 | ), 85 | ), 86 | ), 87 | ); 88 | }), 89 | ), 90 | ], 91 | ), 92 | ), 93 | ); 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | ![Akshat Sachan](https://drive.google.com/uc?id=1ytvxXV_6FFZzt71OToGbZ9c4I0TOpwhQ) 4 | 5 |

6 | 7 | 8 |

Welcome to RentALL Mobile App 👋

9 |

10 | Version 11 | 12 | Documentation 13 | 14 | 15 | License: MIT 16 | 17 |

18 | 19 | > A renting platform to rent products 20 | 21 | ## APP PREVIEW 22 | 23 |

24 | accessibility text 25 | 26 | 27 | 28 | 29 |

30 | 31 | ## Install 32 | 33 | ```sh 34 | flutter create . 35 | ``` 36 | 37 | ## Usage 38 | 39 | ```sh 40 | flutter run 41 | ``` 42 | 43 | ## Run tests 44 | 45 | ```sh 46 | f5 / debug 47 | ``` 48 | 49 | 50 | 51 | 52 |
53 | 54 |
55 |
56 | 57 | 58 |
59 | 60 | 61 | 62 | 78 | 79 | 80 |
63 | 64 | 👤 **Akshat Sachan** 65 | 66 |

67 | Akshat Sachan 68 |

69 |

70 | 71 | 73 | 74 | 75 | 76 |

77 |
81 | 82 |
83 |
84 | 85 | 86 |
87 | 88 |
89 | 90 | ## Show your support 91 | 92 | Give a ⭐️ if this project helped you! 93 | 94 | ## 📝 License 95 | 96 | Copyright © 2021 [Akshat Sachan](https://github.com/CryptocoderAS)
97 | This project is [MIT](none) licensed. 98 | 99 | ## MIT License 100 | 101 | ``` 102 | 103 | Copyright (c) 2021 AKSHAT SACHAN 104 | 105 | Permission is hereby granted, free of charge, to any person obtaining a copy 106 | of this software and associated documentation files (the "Software"), to deal 107 | in the Software without restriction, including without limitation the rights 108 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 109 | copies of the Software, and to permit persons to whom the Software is 110 | furnished to do so, subject to the following conditions: 111 | 112 | The above copyright notice and this permission notice shall be included in all 113 | copies or substantial portions of the Software. 114 | 115 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 116 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 117 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 118 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 119 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 120 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 121 | SOFTWARE. 122 | ``` 123 | -------------------------------------------------------------------------------- /web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | rentall 30 | 31 | 32 | 33 | 36 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /lib/pages/profile/settings/yourRequests/refunds.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:flutter_svg/svg.dart'; 4 | import 'package:google_fonts/google_fonts.dart'; 5 | import 'package:rentall/widgets/navbar/navBar.dart'; 6 | import 'package:rentall/widgets/widgets.dart'; 7 | 8 | class Refunds extends StatefulWidget { 9 | @override 10 | _RefundsState createState() => _RefundsState(); 11 | } 12 | 13 | class _RefundsState extends State { 14 | List refunds = []; 15 | @override 16 | Widget build(BuildContext context) { 17 | return Scaffold( 18 | backgroundColor: Theme.of(context).primaryColor, 19 | body: Column( 20 | mainAxisAlignment: MainAxisAlignment.center, 21 | crossAxisAlignment: CrossAxisAlignment.center, 22 | children: [ 23 | SingleChildScrollView( 24 | child: refunds.isEmpty 25 | ? Column( 26 | mainAxisAlignment: MainAxisAlignment.center, 27 | crossAxisAlignment: CrossAxisAlignment.center, 28 | children: [ 29 | Padding( 30 | padding: const EdgeInsets.only( 31 | left: 8, 32 | right: 8, 33 | bottom: 45, 34 | ), 35 | child: SvgPicture.asset( 36 | 'images/requestEmpty.svg', 37 | width: 250, 38 | height: 250, 39 | ), 40 | ), 41 | Padding( 42 | padding: const EdgeInsets.only( 43 | left: 15.0, right: 5, top: 25), 44 | child: Text( 45 | "Seems like there's no issues. Good luck with your new adventure!", 46 | style: GoogleFonts.nunito( 47 | color: 48 | Theme.of(context).primaryColor == Colors.black 49 | ? Colors.grey 50 | : Theme.of(context).secondaryHeaderColor, 51 | ), 52 | ), 53 | ), 54 | Padding( 55 | padding: const EdgeInsets.only( 56 | left: 80, 57 | right: 80, 58 | top: 50, 59 | // bottom: 8, 60 | ), 61 | child: GestureDetector( 62 | onTap: () { 63 | Navigator.of(context, rootNavigator: true) 64 | .pushReplacement(MaterialPageRoute( 65 | builder: (context) => new NavigationBar( 66 | page: "Home", index: 0))); 67 | }, 68 | child: Container( 69 | height: 50, 70 | width: double.infinity, 71 | decoration: BoxDecoration( 72 | gradient: LinearGradient( 73 | colors: [ 74 | color, 75 | // Colors.redAccent, 76 | Colors.red.withOpacity(0.9), 77 | // Colors.orangeAccent, 78 | // Colors.orange 79 | ], 80 | ), 81 | borderRadius: BorderRadius.circular(10.0), 82 | ), 83 | child: Center( 84 | child: Text("RETURN TO HOMEPAGE", 85 | style: TextStyle( 86 | color: Theme.of(context).primaryColor, 87 | fontSize: 14, 88 | fontWeight: FontWeight.bold)), 89 | )), 90 | ), 91 | ), 92 | ], 93 | ) 94 | : Container(), 95 | ), 96 | ], 97 | ), 98 | ); 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /lib/pages/profile/settings/yourRequests/yourRequests.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:google_fonts/google_fonts.dart'; 4 | import 'package:rentall/pages/profile/settings/yourRequests/refunds.dart'; 5 | import 'package:rentall/pages/profile/settings/yourRequests/requests.dart'; 6 | import 'package:rentall/widgets/widgets.dart'; 7 | 8 | class yourRequests extends StatefulWidget { 9 | final int index; 10 | 11 | const yourRequests({Key key, this.index}) : super(key: key); 12 | @override 13 | _yourRequestsState createState() => _yourRequestsState(); 14 | } 15 | 16 | class _yourRequestsState extends State 17 | with SingleTickerProviderStateMixin { 18 | int selectedValue; 19 | PageController _controller; 20 | TabController controller; 21 | @override 22 | void setActiveTab(int selectedValue) { 23 | setState(() { 24 | selectedValue = widget.index; 25 | }); 26 | } 27 | 28 | void initState() { 29 | // TODO: implement initState 30 | super.initState(); 31 | setState(() { 32 | selectedValue = widget.index; 33 | }); 34 | controller = 35 | TabController(length: 2, vsync: this, initialIndex: selectedValue); 36 | _controller = PageController( 37 | initialPage: selectedValue, 38 | viewportFraction: 1, 39 | ); 40 | } 41 | 42 | @override 43 | Widget build(BuildContext context) { 44 | Size size = MediaQuery.of(context).size; 45 | return SafeArea( 46 | child: SingleChildScrollView( 47 | child: Column( 48 | children: [ 49 | DefaultTabController( 50 | initialIndex: selectedValue, 51 | length: 2, 52 | child: Container( 53 | width: 500, 54 | height: size.height, 55 | child: Scaffold( 56 | backgroundColor: Theme.of(context).primaryColor, 57 | appBar: PreferredSize( 58 | preferredSize: Size.fromHeight(140), 59 | child: Container( 60 | // decoration: BoxDecoration( 61 | // border: Border.all(color: Colors.white), 62 | // borderRadius: BorderRadius.circular(30), 63 | // ), 64 | child: Column( 65 | mainAxisSize: MainAxisSize.min, 66 | // mainAxisAlignment: MainAxisAlignment.spaceBetween, 67 | // crossAxisAlignment: CrossAxisAlignment 68 | children: [ 69 | TabBar( 70 | controller: controller, 71 | onTap: (value) { 72 | setState(() { 73 | selectedValue = value; 74 | _controller.jumpToPage(selectedValue); 75 | }); 76 | }, 77 | isScrollable: true, 78 | unselectedLabelColor: 79 | Theme.of(context).secondaryHeaderColor, 80 | indicatorColor: color, 81 | labelColor: color, 82 | labelStyle: GoogleFonts.nunito(), 83 | indicatorWeight: 3, 84 | tabs: [ 85 | Padding( 86 | padding: const EdgeInsets.symmetric( 87 | horizontal: 20.0), 88 | child: Tab( 89 | text: 'Requests', 90 | ), 91 | ), 92 | Padding( 93 | padding: const EdgeInsets.symmetric( 94 | horizontal: 20.0), 95 | child: Tab( 96 | text: 'Refunds', 97 | ), 98 | ), 99 | ], 100 | ), 101 | ], 102 | ), 103 | ), 104 | ), 105 | body: PageView( 106 | onPageChanged: (index) { 107 | setState(() { 108 | selectedValue = index; 109 | controller.animateTo((selectedValue)); 110 | }); 111 | }, 112 | controller: _controller, 113 | children: [ 114 | Requests(), 115 | Refunds(), 116 | ], 117 | ), 118 | ), 119 | ), 120 | ), 121 | ], 122 | ), 123 | ), 124 | ); 125 | } 126 | } 127 | -------------------------------------------------------------------------------- /lib/pages/login/ui.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:google_fonts/google_fonts.dart'; 4 | import 'package:rentall/widgets/widgets.dart'; 5 | 6 | import 'login_screen.dart'; 7 | import 'register_screen.dart'; 8 | 9 | bool isLoading = false; 10 | 11 | class Start extends StatefulWidget { 12 | @override 13 | _StartState createState() => _StartState(); 14 | } 15 | 16 | class _StartState extends State { 17 | int switchTab = 0; // this variable is used for switching tabs 18 | 19 | @override 20 | void initState() { 21 | // TODO: implement initState 22 | super.initState(); 23 | } 24 | 25 | @override 26 | Widget build(BuildContext context) { 27 | double height = MediaQuery.of(context).size.height; 28 | //double width = MediaQuery.of(context).size.width; 29 | return SafeArea( 30 | child: Scaffold( 31 | bottomNavigationBar: null, 32 | body: Container( 33 | decoration: BoxDecoration( 34 | color: color, 35 | ), 36 | child: SingleChildScrollView( 37 | child: Column( 38 | children: [ 39 | Image.asset( 40 | 'images/logo.png', 41 | width: 300, 42 | height: 200, 43 | ), 44 | Container( 45 | height: height * 0.72, 46 | decoration: BoxDecoration( 47 | color: Theme.of(context).primaryColor, 48 | borderRadius: BorderRadius.only( 49 | topLeft: Radius.circular(40), 50 | topRight: Radius.circular(40), 51 | ), 52 | boxShadow: [ 53 | BoxShadow( 54 | color: Colors.black.withAlpha(100), blurRadius: 10.0), 55 | ], 56 | ), 57 | child: SingleChildScrollView( 58 | child: Column( 59 | children: [ 60 | SizedBox( 61 | height: 20, 62 | ), 63 | Row( 64 | mainAxisAlignment: MainAxisAlignment.center, 65 | crossAxisAlignment: CrossAxisAlignment.center, 66 | children: [ 67 | MaterialButton( 68 | onPressed: () { 69 | setState(() { 70 | switchTab = 0; 71 | }); 72 | }, 73 | child: Center( 74 | child: Padding( 75 | padding: const EdgeInsets.all(8.0), 76 | child: Text( 77 | 'Register', 78 | style: GoogleFonts.montserrat( 79 | fontWeight: FontWeight.bold, 80 | fontSize: 20, 81 | color: switchTab == 0 ? color : Colors.grey, 82 | ), 83 | ), 84 | )), 85 | ), 86 | Container( 87 | height: 30, 88 | child: VerticalDivider( 89 | thickness: 1.0, 90 | color: Theme.of(context).secondaryHeaderColor, 91 | ), 92 | ), 93 | SizedBox(width: 10), 94 | MaterialButton( 95 | onPressed: () { 96 | setState(() { 97 | switchTab = 1; 98 | }); 99 | }, 100 | child: Center( 101 | child: Padding( 102 | padding: const EdgeInsets.all(8.0), 103 | child: Text( 104 | 'Login', 105 | style: GoogleFonts.montserrat( 106 | fontWeight: FontWeight.bold, 107 | fontSize: 20, 108 | color: switchTab == 1 ? color : Colors.grey, 109 | ), 110 | ), 111 | ), 112 | ), 113 | ), 114 | ], 115 | ), 116 | SizedBox( 117 | height: 15, 118 | ), 119 | switchTab == 0 ? RegisterScreen() : LoginScreen(), 120 | ], 121 | ), 122 | ), 123 | ), 124 | ], 125 | ), 126 | ), 127 | ), 128 | )); 129 | } 130 | } 131 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: rentall 2 | description: A renting platform to rent products 3 | 4 | # The following line prevents the package from being accidentally published to 5 | # pub.dev using `pub publish`. This is preferred for private packages. 6 | publish_to: 'none' # Remove this line if you wish to publish to pub.dev 7 | 8 | # The following defines the version and build number for your application. 9 | # A version number is three numbers separated by dots, like 1.2.43 10 | # followed by an optional build number separated by a +. 11 | # Both the version and the builder number may be overridden in flutter 12 | # build by specifying --build-name and --build-number, respectively. 13 | # In Android, build-name is used as versionName while build-number used as versionCode. 14 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning 15 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. 16 | # Read more about iOS versioning at 17 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html 18 | version: 1.0.0+1 19 | 20 | environment: 21 | sdk: ">=2.10.0 <3.0.0" 22 | 23 | dependencies: 24 | flutter: 25 | sdk: flutter 26 | 27 | 28 | # The following adds the Cupertino Icons font to your application. 29 | # Use with the CupertinoIcons class for iOS style icons. 30 | cupertino_icons: ^1.0.2 31 | shared_preferences: any 32 | google_fonts: any 33 | ffi: ^1.1.2 34 | carousel_slider: ^4.0.0 35 | bottom_navy_bar: ^5.6.0 36 | geolocator: any 37 | geocoder: any 38 | flutter_svg: ^0.22.0 39 | provider: any 40 | fluttertoast: any 41 | mongo_dart: 0.7.0 42 | objectid: ^2.0.0 43 | flutter_secure_storage: ^4.2.1 44 | firebase_auth: ^3.0.1 45 | firebase_core: ^1.4.0 46 | sms_autofill: ^2.0.1 47 | 48 | 49 | dev_dependencies: 50 | flutter_test: 51 | sdk: flutter 52 | 53 | # For information on the generic Dart part of this file, see the 54 | # following page: https://dart.dev/tools/pub/pubspec 55 | 56 | # The following section is specific to Flutter. 57 | flutter: 58 | 59 | # The following line ensures that the Material Icons font is 60 | # included with your application, so that you can use the icons in 61 | # the material Icons class. 62 | uses-material-design: true 63 | 64 | # To add assets to your application, add an assets section, like this: 65 | assets: 66 | - images/logo.png 67 | - images/redmi.jpg 68 | - images/dslr.jpg 69 | - images/dell.jpg 70 | - images/mac.png 71 | - images/mac1.png 72 | - images/mac2.png 73 | - images/flipkart.jpg 74 | - images/flipkart1.png 75 | - images/flipkart2.jpg 76 | - images/flipkart3.jpg 77 | - images/music.svg 78 | - images/devices.svg 79 | - images/consoles.svg 80 | - images/clothing.svg 81 | - images/ac.svg 82 | - images/combos.svg 83 | - images/unique.svg 84 | - images/guitar.jpg 85 | - images/clothing.jpeg 86 | - images/ac.png 87 | - images/tv.png 88 | - images/drone.jpg 89 | - images/watch.png 90 | - images/consoles.jpeg 91 | - images/emptycart.svg 92 | - images/emptyprofile.svg 93 | - images/no_internet.svg 94 | - images/requestEmpty.svg 95 | - images/category/books/book.jpg 96 | - images/category/Consoles/drones.jpg 97 | - images/category/Consoles/nintendo.jpg 98 | - images/category/Consoles/ps.jpg 99 | - images/category/Consoles/xbox.jpg 100 | - images/category/devices/dslr.jpg 101 | - images/category/devices/laptop.jpg 102 | - images/category/devices/smartwatch.jpg 103 | - images/category/devices/tv.jpg 104 | - images/category/devices/vr.jpg 105 | - images/category/musical/drums.jpg 106 | - images/category/musical/elecbass.jpg 107 | - images/category/musical/flute.jpg 108 | - images/category/musical/guitar.jpg 109 | - images/category/musical/mic.jpg 110 | - images/category/musical/violin.jpg 111 | - images/category/supplies/glass.jpg 112 | - images/noimage.png 113 | - images/book.svg 114 | - images/category/books/10cbse.jpg 115 | - images/category/books/10thstate.jpg 116 | - images/category/books/12cbse.jpg 117 | - images/category/books/12state.jpg 118 | - images/category/books/documentary.jpeg 119 | - images/category/books/jee.jpg 120 | - images/category/books/neet.jpg 121 | - images/category/combo/dev.jpg 122 | - images/category/combo/96combo.jpg 123 | - images/category/combo/camp.jpg 124 | - images/category/combo/theartist.jpg 125 | - images/category/combo/applefam.jpg 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | # An image asset can refer to one or more resolution-specific "variants", see 135 | # https://flutter.dev/assets-and-images/#resolution-aware. 136 | 137 | # For details regarding adding assets from package dependencies, see 138 | # https://flutter.dev/assets-and-images/#from-packages 139 | 140 | # To add custom fonts to your application, add a fonts section here, 141 | # in this "flutter" section. Each entry in this list should have a 142 | # "family" key with the font family name, and a "fonts" key with a 143 | # list giving the asset and other descriptors for the font. For 144 | # example: 145 | # fonts: 146 | # - family: Schyler 147 | # fonts: 148 | # - asset: fonts/Schyler-Regular.ttf 149 | # - asset: fonts/Schyler-Italic.ttf 150 | # style: italic 151 | # - family: Trajan Pro 152 | # fonts: 153 | # - asset: fonts/TrajanPro.ttf 154 | # - asset: fonts/TrajanPro_Bold.ttf 155 | # weight: 700 156 | # 157 | # For details regarding fonts from package dependencies, 158 | # see https://flutter.dev/custom-fonts/#from-packages 159 | -------------------------------------------------------------------------------- /lib/pages/categories/categories.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:google_fonts/google_fonts.dart'; 4 | import 'package:rentall/pages/categories/category/books.dart'; 5 | import 'package:rentall/pages/categories/category/clothing.dart'; 6 | import 'package:rentall/pages/categories/category/combo.dart'; 7 | import 'package:rentall/pages/categories/category/consoles.dart'; 8 | import 'package:rentall/pages/categories/category/devices.dart'; 9 | import 'package:rentall/pages/categories/category/musicalInstruments.dart'; 10 | import 'package:rentall/pages/categories/category/unique.dart'; 11 | import 'package:rentall/widgets/appBar/appBar.dart'; 12 | 13 | class CategoriesList extends StatefulWidget { 14 | final int index; 15 | 16 | const CategoriesList({Key key, this.index}) : super(key: key); 17 | @override 18 | _CategoriesListState createState() => _CategoriesListState(); 19 | } 20 | 21 | class _CategoriesListState extends State 22 | with SingleTickerProviderStateMixin { 23 | int selectedValue; 24 | PageController _controller; 25 | TabController controller; 26 | @override 27 | void setActiveTab(int selectedValue) { 28 | setState(() { 29 | selectedValue = widget.index; 30 | }); 31 | } 32 | 33 | void initState() { 34 | // TODO: implement initState 35 | super.initState(); 36 | setState(() { 37 | selectedValue = widget.index; 38 | }); 39 | controller = 40 | TabController(length: 7, vsync: this, initialIndex: selectedValue); 41 | _controller = PageController( 42 | initialPage: selectedValue, 43 | viewportFraction: 1, 44 | ); 45 | } 46 | 47 | void dispose() { 48 | _controller.dispose(); 49 | controller.dispose(); 50 | super.dispose(); 51 | } 52 | 53 | @override 54 | Widget build(BuildContext context) { 55 | Color color = Color(0xFFbe3144); 56 | return SafeArea( 57 | child: DefaultTabController( 58 | initialIndex: selectedValue, 59 | length: 7, 60 | child: Scaffold( 61 | backgroundColor: Theme.of(context).primaryColor, 62 | appBar: PreferredSize( 63 | preferredSize: Size.fromHeight(140), 64 | child: Container( 65 | child: Column( 66 | mainAxisSize: MainAxisSize.min, 67 | mainAxisAlignment: MainAxisAlignment.start, 68 | crossAxisAlignment: CrossAxisAlignment.start, 69 | children: [ 70 | CommonAppBar(), 71 | TabBar( 72 | controller: controller, 73 | onTap: (value) { 74 | setState(() { 75 | selectedValue = value; 76 | _controller.jumpToPage(selectedValue); 77 | }); 78 | }, 79 | isScrollable: true, 80 | unselectedLabelColor: 81 | Theme.of(context).secondaryHeaderColor, 82 | indicatorColor: color, 83 | labelColor: color, 84 | labelStyle: GoogleFonts.nunito(), 85 | indicatorWeight: 3, 86 | indicatorPadding: EdgeInsets.symmetric(horizontal: 25), 87 | tabs: [ 88 | Padding( 89 | padding: const EdgeInsets.symmetric(horizontal: 20.0), 90 | child: Tab( 91 | text: 'Musical Instruments', 92 | ), 93 | ), 94 | Padding( 95 | padding: const EdgeInsets.symmetric(horizontal: 20.0), 96 | child: Tab( 97 | text: 'Devices', 98 | ), 99 | ), 100 | Padding( 101 | padding: const EdgeInsets.symmetric(horizontal: 20.0), 102 | child: Tab( 103 | text: 'Consoles', 104 | ), 105 | ), 106 | Padding( 107 | padding: const EdgeInsets.symmetric(horizontal: 20.0), 108 | child: Tab( 109 | text: 'Clothing', 110 | ), 111 | ), 112 | Padding( 113 | padding: const EdgeInsets.symmetric(horizontal: 20.0), 114 | child: Tab( 115 | text: 'Books', 116 | ), 117 | ), 118 | Padding( 119 | padding: const EdgeInsets.symmetric(horizontal: 20.0), 120 | child: Tab( 121 | text: 'Combos', 122 | ), 123 | ), 124 | Padding( 125 | padding: const EdgeInsets.symmetric(horizontal: 20.0), 126 | child: Tab( 127 | text: 'Unique', 128 | ), 129 | ), 130 | ], 131 | ), 132 | ], 133 | ), 134 | ), 135 | ), 136 | body: PageView( 137 | onPageChanged: (index) { 138 | setState(() { 139 | selectedValue = index; 140 | controller.animateTo((selectedValue)); 141 | }); 142 | }, 143 | controller: _controller, 144 | children: [ 145 | //PageNo : 0. Musical instruments, 1. Devices, 2. Consoles, 3.Clothing, 4. ACs, 5. Combos, 6. Unique 146 | MusicalInstruments(), 147 | Devices(), 148 | Consoles(), 149 | Clothing(), 150 | Books(), 151 | Combos(), 152 | Unique(), 153 | ], 154 | ), 155 | ), 156 | ), 157 | ); 158 | } 159 | } 160 | -------------------------------------------------------------------------------- /lib/pages/profile/viewOptions/viewOptions.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:google_fonts/google_fonts.dart'; 4 | import 'package:rentall/pages/profile/viewOptions/increaseTime.dart'; 5 | import 'package:rentall/pages/profile/viewOptions/ownIt.dart'; 6 | import 'package:rentall/widgets/widgets.dart'; 7 | 8 | class viewOptions extends StatefulWidget { 9 | final int productIndex; 10 | final int index; 11 | 12 | const viewOptions({Key key, this.productIndex, this.index}) : super(key: key); 13 | @override 14 | _viewOptionsState createState() => _viewOptionsState(); 15 | } 16 | 17 | class _viewOptionsState extends State 18 | with SingleTickerProviderStateMixin { 19 | int selectedValue; 20 | PageController _controller; 21 | TabController controller; 22 | @override 23 | void setActiveTab(int selectedValue) { 24 | setState(() { 25 | selectedValue = widget.index; 26 | }); 27 | } 28 | 29 | void initState() { 30 | // TODO: implement initState 31 | super.initState(); 32 | setState(() { 33 | selectedValue = widget.index; 34 | }); 35 | controller = 36 | TabController(length: 2, vsync: this, initialIndex: selectedValue); 37 | _controller = PageController( 38 | initialPage: selectedValue, 39 | viewportFraction: 1, 40 | ); 41 | } 42 | 43 | void dispose() { 44 | _controller.dispose(); 45 | controller.dispose(); 46 | super.dispose(); 47 | } 48 | 49 | @override 50 | Widget build(BuildContext context) { 51 | Color color = Color(0xFFbe3144); 52 | return Center( 53 | child: Padding( 54 | padding: const EdgeInsets.all(32.0), 55 | child: Hero( 56 | tag: "viewOptions", 57 | createRectTween: (begin, end) { 58 | return CustomRectTween(begin: begin, end: end); 59 | }, 60 | child: Material( 61 | elevation: 2, 62 | shape: 63 | RoundedRectangleBorder(borderRadius: BorderRadius.circular(35)), 64 | child: Container( 65 | width: 500, 66 | height: 500, 67 | child: SingleChildScrollView( 68 | child: Padding( 69 | padding: const EdgeInsets.all(8.0), 70 | child: Column( 71 | children: [ 72 | DefaultTabController( 73 | initialIndex: selectedValue, 74 | length: 2, 75 | child: Container( 76 | width: 300, 77 | height: 500, 78 | child: Scaffold( 79 | backgroundColor: Colors.transparent, 80 | appBar: PreferredSize( 81 | preferredSize: Size.fromHeight(140), 82 | child: Container( 83 | // decoration: BoxDecoration( 84 | // border: Border.all(color: Colors.white), 85 | // borderRadius: BorderRadius.circular(30), 86 | // ), 87 | child: Column( 88 | mainAxisSize: MainAxisSize.min, 89 | mainAxisAlignment: MainAxisAlignment.start, 90 | crossAxisAlignment: CrossAxisAlignment.start, 91 | children: [ 92 | TabBar( 93 | controller: controller, 94 | onTap: (value) { 95 | setState(() { 96 | selectedValue = value; 97 | _controller.jumpToPage(selectedValue); 98 | }); 99 | }, 100 | isScrollable: true, 101 | unselectedLabelColor: Theme.of(context) 102 | .secondaryHeaderColor, 103 | indicatorColor: color, 104 | labelColor: color, 105 | labelStyle: GoogleFonts.nunito(), 106 | indicatorWeight: 3, 107 | tabs: [ 108 | Padding( 109 | padding: const EdgeInsets.symmetric( 110 | horizontal: 20.0), 111 | child: Tab( 112 | text: 'Increase Period', 113 | ), 114 | ), 115 | Padding( 116 | padding: const EdgeInsets.symmetric( 117 | horizontal: 20.0), 118 | child: Tab( 119 | text: 'Own it', 120 | ), 121 | ), 122 | ], 123 | ), 124 | ], 125 | ), 126 | ), 127 | ), 128 | body: PageView( 129 | onPageChanged: (index) { 130 | setState(() { 131 | selectedValue = index; 132 | controller.animateTo((selectedValue)); 133 | }); 134 | }, 135 | controller: _controller, 136 | children: [ 137 | //index : 0. Increase period, 1. Own it 138 | // productIndex: Index of the product (i.e.,cartItemName[index]) 139 | IncreaseTime(productIndex: widget.productIndex), 140 | OwnIt(productIndex: widget.productIndex), 141 | ], 142 | ), 143 | ), 144 | ), 145 | ), 146 | ], 147 | ), 148 | ), 149 | ), 150 | ), 151 | ), 152 | ), 153 | ), 154 | ); 155 | } 156 | } 157 | -------------------------------------------------------------------------------- /lib/widgets/widgets.dart: -------------------------------------------------------------------------------- 1 | import 'dart:ui'; 2 | 3 | import 'package:flutter/cupertino.dart'; 4 | import 'package:flutter/material.dart'; 5 | import 'package:intl/intl.dart'; 6 | 7 | Color color = Color(0xFFbe3144); 8 | var formatter = NumberFormat('#,##,000'); 9 | passwordType(String password) { 10 | final perfectPass = RegExp(r'^(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z]).{6}$'); 11 | return perfectPass.hasMatch(password); 12 | } 13 | 14 | bool isEmail(String string) { 15 | //Check whether the user entered is an email or not 16 | // Null or empty string is invalid 17 | if (string == null || string.isEmpty) { 18 | return false; 19 | } 20 | 21 | const pattern = r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$'; 22 | final regExp = RegExp(pattern); 23 | 24 | if (!regExp.hasMatch(string)) { 25 | return false; 26 | } 27 | return true; 28 | } 29 | 30 | bool validatePincode(String value) { 31 | // String regex; 32 | // regex = "^[1-9]{1}[0-9]{2}\\s{0, 1}[0-9]{3}\$"; 33 | // print(regex); 34 | String patttern = r'(^[1-9][0-9]{5}$)'; 35 | RegExp regExp = new RegExp(patttern); 36 | if (regExp.hasMatch(value)) { 37 | return true; 38 | } else { 39 | return false; 40 | } 41 | // if (value.length == 0) { 42 | // return false; 43 | // } else if (!regExp.hasMatch(value)) { 44 | // return false; 45 | // } else if (value.length > 6) { 46 | // return false; 47 | // } 48 | } 49 | 50 | bool validateMobile(String value) { 51 | // Check whether the user entered is a mobile number or not 52 | String patttern = r'(^(?:[+0]9)?[0-9]{10,12}$)'; 53 | RegExp regExp = new RegExp(patttern); 54 | if (value.length == 0) { 55 | return false; 56 | } else if (!regExp.hasMatch(value)) { 57 | return false; 58 | } else if (value.length > 10) { 59 | return false; 60 | } 61 | 62 | return true; 63 | } 64 | 65 | Container linearProgress(BuildContext context) { 66 | return Container( 67 | padding: EdgeInsets.only(bottom: 10.0), 68 | child: LinearProgressIndicator( 69 | backgroundColor: Theme.of(context).primaryColor, 70 | valueColor: AlwaysStoppedAnimation(color), 71 | ), 72 | ); 73 | } 74 | 75 | class CustomRectTween extends RectTween { 76 | /// {@macro custom_rect_tween} 77 | CustomRectTween({ 78 | @required Rect begin, 79 | @required Rect end, 80 | }) : super(begin: begin, end: end); 81 | 82 | @override 83 | Rect lerp(double t) { 84 | final elasticCurveValue = Curves.easeOut.transform(t); 85 | return Rect.fromLTRB( 86 | lerpDouble(begin.left, end.left, elasticCurveValue), 87 | lerpDouble(begin.top, end.top, elasticCurveValue), 88 | lerpDouble(begin.right, end.right, elasticCurveValue), 89 | lerpDouble(begin.bottom, end.bottom, elasticCurveValue), 90 | ); 91 | } 92 | } 93 | 94 | class HeroDialogRoute extends PageRoute { 95 | HeroDialogRoute({ 96 | @required WidgetBuilder builder, 97 | RouteSettings settings, 98 | bool fullscreenDialog = false, 99 | }) : _builder = builder, 100 | super(settings: settings, fullscreenDialog: fullscreenDialog); 101 | 102 | final WidgetBuilder _builder; 103 | 104 | @override 105 | bool get opaque => false; 106 | 107 | @override 108 | bool get barrierDismissible => true; 109 | 110 | @override 111 | Duration get transitionDuration => const Duration(milliseconds: 300); 112 | 113 | @override 114 | bool get maintainState => true; 115 | 116 | @override 117 | Color get barrierColor => Colors.black54; 118 | 119 | @override 120 | Widget buildTransitions(BuildContext context, Animation animation, 121 | Animation secondaryAnimation, Widget child) { 122 | return child; 123 | } 124 | 125 | @override 126 | Widget buildPage(BuildContext context, Animation animation, 127 | Animation secondaryAnimation) { 128 | return _builder(context); 129 | } 130 | 131 | @override 132 | String get barrierLabel => 'Popup dialog open'; 133 | } 134 | 135 | class Utils { 136 | static List modelBuilder( 137 | List models, Widget Function(int index, M model) builder) => 138 | models 139 | .asMap() 140 | .map( 141 | (index, model) => MapEntry(index, builder(index, model))) 142 | .values 143 | .toList(); 144 | } 145 | 146 | class DottedText extends Text { 147 | const DottedText( 148 | String data, { 149 | Key key, 150 | TextStyle style, 151 | TextAlign textAlign, 152 | TextDirection textDirection, 153 | Locale locale, 154 | bool softWrap, 155 | TextOverflow overflow, 156 | double textScaleFactor, 157 | int maxLines, 158 | String semanticsLabel, 159 | }) : super( 160 | '\u2022 $data', 161 | key: key, 162 | style: style, 163 | textAlign: textAlign, 164 | locale: locale, 165 | softWrap: softWrap, 166 | overflow: overflow, 167 | textScaleFactor: textScaleFactor, 168 | maxLines: maxLines, 169 | semanticsLabel: semanticsLabel, 170 | ); 171 | } 172 | 173 | class CardsStack extends StatelessWidget { 174 | final Widget lightCardChild; 175 | final Widget darkCardChild; 176 | 177 | const CardsStack({ 178 | @required this.lightCardChild, 179 | @required this.darkCardChild, 180 | }); 181 | 182 | @override 183 | Widget build(BuildContext context) { 184 | return Padding( 185 | padding: const EdgeInsets.all(8.0), 186 | child: Stack( 187 | alignment: AlignmentDirectional.center, 188 | clipBehavior: Clip.none, 189 | children: [ 190 | Card( 191 | elevation: 2.5, 192 | shape: RoundedRectangleBorder( 193 | borderRadius: BorderRadius.circular(12.0), 194 | ), 195 | // color: color, 196 | child: darkCardChild, 197 | ), 198 | Positioned( 199 | // !isOddPageNumber ? -25.0 : null, 200 | bottom: -15.0, 201 | // isOddPageNumber ? -25.0 : null, 202 | child: Card( 203 | shape: RoundedRectangleBorder( 204 | borderRadius: BorderRadius.circular(25), 205 | ), 206 | child: Container( 207 | width: 110, 208 | height: 35, 209 | decoration: BoxDecoration( 210 | color: Theme.of(context).primaryColor, 211 | // borderRadius: BorderRadius.circular(10), 212 | border: Border.all( 213 | color: Colors.grey, 214 | width: Theme.of(context).primaryColor == Colors.white 215 | ? 0.5 216 | : 0.1), 217 | borderRadius: BorderRadius.circular(25), 218 | ), 219 | child: Center(child: lightCardChild), 220 | ), 221 | ), 222 | ), 223 | ], 224 | ), 225 | ); 226 | } 227 | } 228 | -------------------------------------------------------------------------------- /images/no_internet.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/unique.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/devices.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/emptycart.svg: -------------------------------------------------------------------------------- 1 | i can fly -------------------------------------------------------------------------------- /lib/widgets/navbar/navBar.dart: -------------------------------------------------------------------------------- 1 | import 'package:bottom_navy_bar/bottom_navy_bar.dart'; 2 | import 'package:flutter/cupertino.dart'; 3 | import 'package:flutter/material.dart'; 4 | import 'package:google_fonts/google_fonts.dart'; 5 | import 'package:rentall/widgets/navigation/tab_navigator.dart'; 6 | 7 | import '../../pages/cart/cartPage.dart'; 8 | 9 | class NavigationBar extends StatefulWidget { 10 | final int index; 11 | final String page; 12 | 13 | const NavigationBar({Key key, this.index, this.page}) : super(key: key); 14 | @override 15 | _NavigationBarState createState() => _NavigationBarState(); 16 | } 17 | 18 | class _NavigationBarState extends State { 19 | int _selectedIndex; 20 | String _currentPage; 21 | @override 22 | void initState() { 23 | _selectedIndex = widget.index; 24 | _currentPage = widget.page; 25 | super.initState(); 26 | } 27 | 28 | @override 29 | List pageKeys = ["Home", "Search", "Cart", "Profile"]; 30 | Map> _navigatorKeys = { 31 | "Home": GlobalKey(), 32 | "Search": GlobalKey(), 33 | "Cart": GlobalKey(), 34 | "Profile": GlobalKey(), 35 | }; 36 | 37 | Color color = Color(0xFFbe3144); 38 | 39 | void _selectTab(String tabItem, int index) { 40 | if (tabItem == _currentPage) { 41 | _navigatorKeys[tabItem].currentState.popUntil((route) => route.isFirst); 42 | } else { 43 | setState(() { 44 | _currentPage = pageKeys[index]; 45 | _selectedIndex = index; 46 | }); 47 | } 48 | } 49 | 50 | @override 51 | Widget build(BuildContext context) { 52 | return WillPopScope( 53 | onWillPop: () async { 54 | final isFirstRouteInCurrentTab = 55 | !await _navigatorKeys[_currentPage].currentState.maybePop(); 56 | if (isFirstRouteInCurrentTab) { 57 | if (_currentPage != "Home") { 58 | _selectTab("Home", 1); 59 | 60 | return false; 61 | } 62 | } 63 | // let system handle back button if we're on the first route 64 | return isFirstRouteInCurrentTab; 65 | }, 66 | child: Scaffold( 67 | body: Stack(children: [ 68 | _buildOffstageNavigator("Home"), 69 | _buildOffstageNavigator("Search"), 70 | _buildOffstageNavigator("Cart"), 71 | _buildOffstageNavigator("Profile"), 72 | ]), 73 | bottomNavigationBar: BottomNavyBar( 74 | backgroundColor: Theme.of(context).primaryColor, 75 | 76 | selectedIndex: _selectedIndex, 77 | showElevation: true, // use this to remove appBar's elevation 78 | onItemSelected: (int index) { 79 | _selectTab(pageKeys[index], index); 80 | }, 81 | items: [ 82 | BottomNavyBarItem( 83 | inactiveColor: Theme.of(context).secondaryHeaderColor, 84 | icon: Icon(Icons.home), 85 | title: 86 | Row(mainAxisAlignment: MainAxisAlignment.center, children: [ 87 | Text('Home'), 88 | ]), 89 | activeColor: color, 90 | ), 91 | BottomNavyBarItem( 92 | inactiveColor: Theme.of(context).secondaryHeaderColor, 93 | icon: Icon(Icons.search), 94 | activeColor: color, 95 | title: 96 | Row(mainAxisAlignment: MainAxisAlignment.center, children: [ 97 | Text('Search'), 98 | ]), 99 | ), 100 | BottomNavyBarItem( 101 | inactiveColor: Theme.of(context).secondaryHeaderColor, 102 | icon: Stack( 103 | children: [ 104 | Icon( 105 | Icons.add_shopping_cart_outlined, 106 | color: _selectedIndex == 2 107 | ? color 108 | : Theme.of(context).secondaryHeaderColor, 109 | size: 25, 110 | ), 111 | Positioned( 112 | width: cartItemName.length < 10 ? 8 : 10, 113 | height: cartItemName.length < 10 ? 13 : 9, 114 | right: cartItemName.length < 10 ? 8.8 : 7.2, 115 | // left: 10, 116 | bottom: cartItemName.length < 10 ? 15 : 15, 117 | // width: 10, 118 | // height: 10, 119 | // right: 8.9, 120 | 121 | // bottom: 17, 122 | child: Container( 123 | width: 15, 124 | height: 13.9, 125 | // width: 15, 126 | // height: 10, 127 | color: Theme.of(context).primaryColor, 128 | child: Center( 129 | child: Text(cartItemName.length.toString(), 130 | style: GoogleFonts.merriweather( 131 | fontSize: cartItemName.length < 10 ? 14 : 9, 132 | height: 1.2, 133 | color: _selectedIndex == 2 134 | ? color 135 | : Theme.of(context).secondaryHeaderColor, 136 | backgroundColor: _selectedIndex == 2 137 | ? color.withOpacity(0.2) 138 | : Theme.of(context).primaryColor, 139 | )))), 140 | ), 141 | ], 142 | ), 143 | title: 144 | Row(mainAxisAlignment: MainAxisAlignment.center, children: [ 145 | Text('Cart'), 146 | ]), 147 | activeColor: color, 148 | ), 149 | BottomNavyBarItem( 150 | inactiveColor: Theme.of(context).secondaryHeaderColor, 151 | icon: Icon(CupertinoIcons.person), 152 | title: 153 | Row(mainAxisAlignment: MainAxisAlignment.center, children: [ 154 | Text('Profile'), 155 | ]), 156 | activeColor: color, 157 | ), 158 | ], 159 | ), 160 | // BottomNavigationBar( 161 | // onTap: (int index) { 162 | // _selectTab(pageKeys[index], index); 163 | // }, 164 | // currentIndex: _selectedIndex, 165 | // items: [ 166 | // BottomNavigationBarItem( 167 | // icon: Icon( 168 | // Icons.home, 169 | // color: color, 170 | // ), 171 | // title: Text("Home"), 172 | // ), 173 | // BottomNavigationBarItem( 174 | // icon: Icon( 175 | // Icons.search, 176 | // color: color, 177 | // ), 178 | // title: Text("Home"), 179 | // ), 180 | // BottomNavigationBarItem( 181 | // icon: Stack( 182 | // children: [ 183 | // Icon( 184 | // Icons.add_shopping_cart_outlined, 185 | // color: color, 186 | // size: 30, 187 | // ), 188 | // Positioned( 189 | // right: 10, 190 | // left: 10, 191 | // bottom: 19, 192 | // child: Container( 193 | // width: 13, 194 | // height: 13.9, 195 | // color: Theme.of(context).primaryColor, 196 | // child: Center( 197 | // child: Text(cartItems.toString(), 198 | // style: 199 | // GoogleFonts.merriweather(color: color)))), 200 | // ), 201 | // ], 202 | // ), 203 | // title: Text("Home"), 204 | // ), 205 | // BottomNavigationBarItem( 206 | // icon: Icon( 207 | // CupertinoIcons.person, 208 | // color: color, 209 | // ), 210 | // title: Text("Home"), 211 | // ), 212 | // ], 213 | // ), 214 | ), 215 | ); 216 | } 217 | 218 | Widget _buildOffstageNavigator(String tabItem) { 219 | return Offstage( 220 | offstage: _currentPage != tabItem, 221 | child: TabNavigator( 222 | navigatorKey: _navigatorKeys[tabItem], 223 | tabItem: tabItem, 224 | ), 225 | ); 226 | } 227 | } 228 | 229 | // class NavBar extends StatefulWidget { 230 | // @override 231 | // _NavBarState createState() => _NavBarState(); 232 | // } 233 | // 234 | // class _NavBarState extends State { 235 | // int _currentIndex = 0; 236 | // // String currentPage; 237 | // // List pageKeys = ["Home", "Search", "Cart", "Profile"]; 238 | // 239 | // final tabs = [ 240 | // HomePage(), 241 | // Container(), 242 | // CartPage(), 243 | // Profile(), 244 | // ]; 245 | // 246 | // @override 247 | // Widget build(BuildContext context) { 248 | // int cartItems = 0; 249 | // Color color = Color(0xFFbe3144); 250 | // return Scaffold( 251 | // body: tabs[_currentIndex], 252 | // bottomNavigationBar: CurvedNavigationBar( 253 | // backgroundColor: color, 254 | // height: 55, 255 | // color: Theme.of(context).primaryColor, 256 | // index: _currentIndex, 257 | // items: [ 258 | // Icon( 259 | // Icons.home, 260 | // color: color, 261 | // ), 262 | // Icon( 263 | // Icons.search, 264 | // color: color, 265 | // ), 266 | // Stack( 267 | // children: [ 268 | // Icon( 269 | // Icons.add_shopping_cart_outlined, 270 | // color: color, 271 | // size: 30, 272 | // ), 273 | // Positioned( 274 | // right: 10, 275 | // left: 10, 276 | // bottom: 19, 277 | // child: Container( 278 | // width: 13, 279 | // height: 13.9, 280 | // color: Theme.of(context).primaryColor, 281 | // child: Center( 282 | // child: Text(cartItems.toString(), 283 | // style: GoogleFonts.merriweather(color: color)))), 284 | // ), 285 | // ], 286 | // ), 287 | // Icon( 288 | // CupertinoIcons.person, 289 | // color: color, 290 | // ), 291 | // ], 292 | // onTap: (index) { 293 | // setState(() { 294 | // _currentIndex = index; 295 | // }); 296 | // }, 297 | // animationCurve: Curves.easeInBack, 298 | // animationDuration: const Duration(milliseconds: 300), 299 | // ), 300 | // ); 301 | // } 302 | // } 303 | -------------------------------------------------------------------------------- /lib/pages/profile/settings/yourRequests/requests.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_svg/svg.dart'; 3 | import 'package:google_fonts/google_fonts.dart'; 4 | import 'package:rentall/widgets/navbar/navBar.dart'; 5 | import 'package:rentall/widgets/widgets.dart'; 6 | 7 | class Requests extends StatefulWidget { 8 | @override 9 | _RequestsState createState() => _RequestsState(); 10 | } 11 | 12 | class _RequestsState extends State { 13 | List requests = []; 14 | List queries = [ 15 | 'Account related', 16 | 'Order Related', 17 | 'Payment Related', 18 | 'Delivery and Pickup related', 19 | 'Refund information', 20 | 'Other' 21 | ]; 22 | List accountRelatedIssue = ['Update mobile number', 'Update email']; 23 | List orderRelatedIssue = [ 24 | 'Add item/Change quantity', 25 | 'Remove an item', 26 | ]; 27 | int issue = 1; 28 | void showRequestSheet() { 29 | showModalBottomSheet( 30 | backgroundColor: Colors.transparent, 31 | context: context, 32 | isScrollControlled: true, 33 | builder: (builder) { 34 | return StatefulBuilder( 35 | builder: (BuildContext context, StateSetter bsState) { 36 | return Container( 37 | height: 600, 38 | padding: EdgeInsets.only( 39 | bottom: MediaQuery.of(context).viewInsets.bottom), 40 | decoration: new BoxDecoration( 41 | color: Theme.of(context).primaryColor, 42 | borderRadius: new BorderRadius.only( 43 | topLeft: const Radius.circular(30.0), 44 | topRight: const Radius.circular(30.0))), 45 | child: Column( 46 | children: [ 47 | Padding( 48 | padding: const EdgeInsets.all(8.0), 49 | child: Text( 50 | "Facing any issues? Let's sort it out as soon as possible!", 51 | style: GoogleFonts.nunito(color: Colors.grey)), 52 | ), 53 | Column( 54 | mainAxisAlignment: MainAxisAlignment.start, 55 | crossAxisAlignment: CrossAxisAlignment.start, 56 | children: [ 57 | Padding( 58 | padding: const EdgeInsets.only(left: 25.0), 59 | child: Text( 60 | "Query", 61 | style: GoogleFonts.nunito( 62 | fontWeight: FontWeight.bold, 63 | color: Theme.of(context).secondaryHeaderColor), 64 | ), 65 | ), 66 | Row( 67 | children: [ 68 | Padding( 69 | padding: const EdgeInsets.only(left: 25.0), 70 | child: DropdownButton( 71 | hint: Text('Choose the issue'), 72 | // value: issue, 73 | items: [ 74 | DropdownMenuItem( 75 | child: Text( 76 | '${queries[0]}', 77 | style: GoogleFonts.francoisOne( 78 | color: Colors.black, 79 | fontWeight: FontWeight.w500, 80 | letterSpacing: 0.5, 81 | ), 82 | ), 83 | value: 1, 84 | ), 85 | DropdownMenuItem( 86 | child: Text( 87 | '${queries[1]}', 88 | style: GoogleFonts.francoisOne( 89 | color: Colors.black, 90 | fontWeight: FontWeight.w500, 91 | letterSpacing: 0.5, 92 | ), 93 | ), 94 | value: 2, 95 | ), 96 | DropdownMenuItem( 97 | child: Text( 98 | '${queries[2]}', 99 | style: GoogleFonts.francoisOne( 100 | color: Colors.black, 101 | fontWeight: FontWeight.w500, 102 | letterSpacing: 0.5, 103 | ), 104 | ), 105 | value: 3, 106 | ), 107 | DropdownMenuItem( 108 | child: Text( 109 | '${queries[3]}', 110 | style: GoogleFonts.francoisOne( 111 | color: Colors.black, 112 | fontWeight: FontWeight.w500, 113 | letterSpacing: 0.5, 114 | ), 115 | ), 116 | value: 4, 117 | ), 118 | DropdownMenuItem( 119 | child: Text( 120 | '${queries[4]}', 121 | style: GoogleFonts.francoisOne( 122 | color: Colors.black, 123 | fontWeight: FontWeight.w500, 124 | letterSpacing: 0.5, 125 | ), 126 | ), 127 | value: 5, 128 | ), 129 | DropdownMenuItem( 130 | child: Text( 131 | '${queries[5]}', 132 | style: GoogleFonts.francoisOne( 133 | color: Colors.black, 134 | fontWeight: FontWeight.w500, 135 | letterSpacing: 0.5, 136 | ), 137 | ), 138 | value: 6, 139 | ), 140 | ], 141 | dropdownColor: Theme.of(context).primaryColor, 142 | ), 143 | ), 144 | ], 145 | ), 146 | ], 147 | ), 148 | // Divider(), 149 | // Row( 150 | // children: [ 151 | // Padding( 152 | // padding: const EdgeInsets.only( 153 | // top: 8.0, bottom: 8, left: 15, right: 15), 154 | // child: Icon( 155 | // CupertinoIcons.mail, 156 | // // Icons.mail, 157 | // color: color, 158 | // ), 159 | // ), 160 | // Text("Send an email", 161 | // style: GoogleFonts.nunito( 162 | // color: Theme.of(context).secondaryHeaderColor)), 163 | // ], 164 | // ), 165 | Divider(), 166 | // Row( 167 | // children: [ 168 | // Padding( 169 | // padding: const EdgeInsets.only( 170 | // top: 8.0, bottom: 8, left: 15, right: 15), 171 | // child: Icon( 172 | // CupertinoIcons.chat_bubble, 173 | // color: color, 174 | // // size: 20, 175 | // ), 176 | // ), 177 | // Text("Chat with us", 178 | // style: GoogleFonts.nunito( 179 | // color: Theme.of(context).secondaryHeaderColor)), 180 | // ], 181 | // ), 182 | ], 183 | ), 184 | ); 185 | }); 186 | }, 187 | ); 188 | } 189 | 190 | @override 191 | Widget build(BuildContext context) { 192 | Size size = MediaQuery.of(context).size; 193 | return Scaffold( 194 | backgroundColor: Theme.of(context).primaryColor, 195 | body: Column( 196 | mainAxisAlignment: MainAxisAlignment.center, 197 | crossAxisAlignment: CrossAxisAlignment.center, 198 | children: [ 199 | SingleChildScrollView( 200 | child: requests.isEmpty 201 | ? Column( 202 | mainAxisAlignment: MainAxisAlignment.center, 203 | children: [ 204 | Padding( 205 | padding: const EdgeInsets.only( 206 | left: 8, 207 | right: 8, 208 | bottom: 45, 209 | ), 210 | child: SvgPicture.asset( 211 | 'images/requestEmpty.svg', 212 | width: 250, 213 | height: 250, 214 | ), 215 | ), 216 | Padding( 217 | padding: const EdgeInsets.only( 218 | left: 15.0, right: 5, top: 25), 219 | child: Text( 220 | "Any queries, requests, updates? Ask here, let's start a new adventure.", 221 | style: GoogleFonts.nunito( 222 | color: 223 | Theme.of(context).primaryColor == Colors.black 224 | ? Colors.grey 225 | : Theme.of(context).secondaryHeaderColor, 226 | ), 227 | ), 228 | ), 229 | Padding( 230 | padding: const EdgeInsets.only( 231 | left: 80, 232 | right: 80, 233 | top: 50, 234 | // bottom: 8, 235 | ), 236 | child: GestureDetector( 237 | onTap: () { 238 | Navigator.of(context, rootNavigator: true) 239 | .pushReplacement(MaterialPageRoute( 240 | builder: (context) => new NavigationBar( 241 | page: "Home", index: 0))); 242 | }, 243 | child: Container( 244 | height: 50, 245 | width: double.infinity, 246 | decoration: BoxDecoration( 247 | gradient: LinearGradient( 248 | colors: [ 249 | color, 250 | // Colors.redAccent, 251 | Colors.red.withOpacity(0.9), 252 | // Colors.orangeAccent, 253 | // Colors.orange 254 | ], 255 | ), 256 | borderRadius: BorderRadius.circular(10.0), 257 | ), 258 | child: Center( 259 | child: Text("RETURN TO HOMEPAGE", 260 | style: TextStyle( 261 | color: Theme.of(context).primaryColor, 262 | fontSize: 14, 263 | fontWeight: FontWeight.bold)), 264 | )), 265 | ), 266 | ), 267 | ], 268 | ) 269 | : Container(), 270 | ), 271 | ], 272 | ), 273 | floatingActionButton: Padding( 274 | padding: const EdgeInsets.only(bottom: 25.0), 275 | child: FloatingActionButton.extended( 276 | backgroundColor: color, 277 | onPressed: () { 278 | showRequestSheet(); 279 | }, 280 | label: Text('Request'), 281 | icon: Icon(Icons.add), 282 | ), 283 | ), 284 | ); 285 | } 286 | } 287 | -------------------------------------------------------------------------------- /lib/pages/profile/settings/LegalAndAbout.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:google_fonts/google_fonts.dart'; 4 | import 'package:rentall/widgets/widgets.dart'; 5 | 6 | class LegalAndAbout extends StatefulWidget { 7 | @override 8 | _LegalAndAboutState createState() => _LegalAndAboutState(); 9 | } 10 | 11 | class _LegalAndAboutState extends State { 12 | @override 13 | void initState() { 14 | // hideEmail(); 15 | 16 | super.initState(); 17 | } 18 | 19 | @override 20 | Widget build(BuildContext context) { 21 | Size size = MediaQuery.of(context).size; 22 | return Scaffold( 23 | backgroundColor: Theme.of(context).primaryColor, 24 | appBar: AppBar( 25 | backgroundColor: Theme.of(context).primaryColor, 26 | title: Text('Legal & About', 27 | style: GoogleFonts.nunito( 28 | fontWeight: FontWeight.bold, 29 | color: Theme.of(context).secondaryHeaderColor)), 30 | leading: IconButton( 31 | icon: Icon(Icons.arrow_back_ios_sharp, 32 | color: Theme.of(context).secondaryHeaderColor), 33 | onPressed: () { 34 | Navigator.pop(context); 35 | }, 36 | ), 37 | ), 38 | body: SingleChildScrollView( 39 | child: Column( 40 | mainAxisAlignment: MainAxisAlignment.center, 41 | children: [ 42 | Theme.of(context).primaryColor == Colors.black 43 | ? Container(width: 100, height: 25) 44 | : Image.asset( 45 | 'images/logo.png', 46 | width: 200, 47 | height: 200, 48 | ), 49 | Padding( 50 | padding: const EdgeInsets.only(top: 25.0, left: 50, right: 50), 51 | child: Container( 52 | width: 500, 53 | height: 50, 54 | decoration: BoxDecoration( 55 | color: Theme.of(context).primaryColor == Colors.black 56 | ? Colors.white12 57 | : Colors.grey[100], 58 | borderRadius: BorderRadius.circular(10), 59 | ), 60 | child: Row( 61 | mainAxisAlignment: MainAxisAlignment.start, 62 | children: [ 63 | Padding( 64 | padding: const EdgeInsets.only(left: 15.0, right: 8), 65 | child: Icon( 66 | CupertinoIcons.doc_plaintext, 67 | color: color, 68 | ), 69 | ), 70 | Container( 71 | height: 30, 72 | child: VerticalDivider( 73 | thickness: 1.0, 74 | ), 75 | ), 76 | Padding( 77 | padding: const EdgeInsets.only(left: 8.0, right: 8), 78 | child: Text("Terms and Conditions", 79 | style: GoogleFonts.nunito( 80 | color: Theme.of(context).secondaryHeaderColor, 81 | )), 82 | ), 83 | ], 84 | ), 85 | ), 86 | ), 87 | Padding( 88 | padding: const EdgeInsets.only(top: 20.0, left: 50, right: 50), 89 | child: GestureDetector( 90 | onTap: () {}, 91 | child: Container( 92 | width: 500, 93 | height: 50, 94 | decoration: BoxDecoration( 95 | color: Theme.of(context).primaryColor == Colors.black 96 | ? Colors.white12 97 | : Colors.grey[100], 98 | borderRadius: BorderRadius.circular(10), 99 | ), 100 | child: Row( 101 | mainAxisAlignment: MainAxisAlignment.start, 102 | children: [ 103 | Padding( 104 | padding: const EdgeInsets.only(left: 15.0, right: 8), 105 | child: Icon( 106 | CupertinoIcons.doc_plaintext, 107 | color: color, 108 | ), 109 | ), 110 | Container( 111 | height: 30, 112 | child: VerticalDivider( 113 | thickness: 1.0, 114 | ), 115 | ), 116 | Padding( 117 | padding: const EdgeInsets.only(left: 8.0, right: 8), 118 | child: Text("Privacy Policy", 119 | style: GoogleFonts.nunito( 120 | color: Theme.of(context).secondaryHeaderColor, 121 | )), 122 | ), 123 | ], 124 | ), 125 | ), 126 | ), 127 | ), 128 | Padding( 129 | padding: const EdgeInsets.only(top: 20.0, left: 50, right: 50), 130 | child: GestureDetector( 131 | onTap: () {}, 132 | child: Container( 133 | width: 500, 134 | height: 50, 135 | decoration: BoxDecoration( 136 | color: Theme.of(context).primaryColor == Colors.black 137 | ? Colors.white12 138 | : Colors.grey[100], 139 | borderRadius: BorderRadius.circular(10), 140 | ), 141 | child: Row( 142 | mainAxisAlignment: MainAxisAlignment.start, 143 | children: [ 144 | Padding( 145 | padding: const EdgeInsets.only(left: 15.0, right: 8), 146 | child: Icon( 147 | CupertinoIcons.repeat, 148 | color: color, 149 | ), 150 | ), 151 | Container( 152 | height: 30, 153 | child: VerticalDivider( 154 | thickness: 1.0, 155 | ), 156 | ), 157 | Padding( 158 | padding: const EdgeInsets.only(left: 8.0, right: 8), 159 | child: Text("Returns & Refunds policy", 160 | style: GoogleFonts.nunito( 161 | color: Theme.of(context).secondaryHeaderColor, 162 | )), 163 | ), 164 | ], 165 | ), 166 | ), 167 | ), 168 | ), 169 | Padding( 170 | padding: const EdgeInsets.only(top: 20.0, left: 50, right: 50), 171 | child: GestureDetector( 172 | onTap: () {}, 173 | child: Container( 174 | width: 500, 175 | height: 50, 176 | decoration: BoxDecoration( 177 | color: Theme.of(context).primaryColor == Colors.black 178 | ? Colors.white12 179 | : Colors.grey[100], 180 | borderRadius: BorderRadius.circular(10), 181 | ), 182 | child: Row( 183 | mainAxisAlignment: MainAxisAlignment.start, 184 | children: [ 185 | Padding( 186 | padding: const EdgeInsets.only(left: 15.0, right: 8), 187 | child: Icon( 188 | Icons.cancel_schedule_send_outlined, 189 | color: color, 190 | ), 191 | ), 192 | Container( 193 | height: 30, 194 | child: VerticalDivider( 195 | thickness: 1.0, 196 | ), 197 | ), 198 | Padding( 199 | padding: const EdgeInsets.only(left: 8.0, right: 8), 200 | child: Text("Cancellation Policy", 201 | style: GoogleFonts.nunito( 202 | color: Theme.of(context).secondaryHeaderColor, 203 | )), 204 | ), 205 | ], 206 | ), 207 | ), 208 | ), 209 | ), 210 | Padding( 211 | padding: const EdgeInsets.only(top: 20.0, left: 50, right: 50), 212 | child: GestureDetector( 213 | onTap: () {}, 214 | child: Container( 215 | width: 500, 216 | height: 50, 217 | decoration: BoxDecoration( 218 | color: Theme.of(context).primaryColor == Colors.black 219 | ? Colors.white12 220 | : Colors.grey[100], 221 | borderRadius: BorderRadius.circular(10), 222 | ), 223 | child: Row( 224 | mainAxisAlignment: MainAxisAlignment.start, 225 | children: [ 226 | Padding( 227 | padding: const EdgeInsets.only(left: 15.0, right: 8), 228 | child: Icon( 229 | Icons.privacy_tip_outlined, 230 | color: color, 231 | ), 232 | ), 233 | Container( 234 | height: 30, 235 | child: VerticalDivider( 236 | thickness: 1.0, 237 | ), 238 | ), 239 | Padding( 240 | padding: const EdgeInsets.only(left: 8.0, right: 8), 241 | child: Text("Why we ask for Aadhar info", 242 | style: GoogleFonts.nunito( 243 | color: Theme.of(context).secondaryHeaderColor, 244 | )), 245 | ), 246 | ], 247 | ), 248 | ), 249 | ), 250 | ), 251 | Padding( 252 | padding: const EdgeInsets.only(top: 20, left: 50, right: 50), 253 | child: Container( 254 | width: 500, 255 | height: 50, 256 | decoration: BoxDecoration( 257 | color: Theme.of(context).primaryColor == Colors.black 258 | ? Colors.white12 259 | : Colors.grey[100], 260 | borderRadius: BorderRadius.circular(10), 261 | ), 262 | child: Row( 263 | mainAxisAlignment: MainAxisAlignment.start, 264 | children: [ 265 | Padding( 266 | padding: const EdgeInsets.only(left: 15.0, right: 8), 267 | child: Icon( 268 | CupertinoIcons.wand_stars, 269 | color: color, 270 | ), 271 | ), 272 | Container( 273 | height: 30, 274 | child: VerticalDivider( 275 | thickness: 1.0, 276 | ), 277 | ), 278 | Padding( 279 | padding: const EdgeInsets.only(left: 8.0, right: 8), 280 | child: Text("About us", 281 | style: GoogleFonts.nunito( 282 | color: Theme.of(context).secondaryHeaderColor, 283 | )), 284 | ), 285 | ], 286 | ), 287 | ), 288 | ), 289 | Padding( 290 | padding: const EdgeInsets.only(top: 20.0, left: 50, right: 50), 291 | child: Container( 292 | width: 500, 293 | height: 50, 294 | decoration: BoxDecoration( 295 | color: Theme.of(context).primaryColor == Colors.black 296 | ? Colors.white12 297 | : Colors.grey[100], 298 | borderRadius: BorderRadius.circular(10), 299 | ), 300 | child: Row( 301 | mainAxisAlignment: MainAxisAlignment.start, 302 | children: [ 303 | Padding( 304 | padding: const EdgeInsets.only(left: 15.0, right: 8), 305 | child: Icon( 306 | Icons.star_rate, 307 | color: color, 308 | ), 309 | ), 310 | Container( 311 | height: 30, 312 | child: VerticalDivider( 313 | thickness: 1.0, 314 | ), 315 | ), 316 | Padding( 317 | padding: const EdgeInsets.only(left: 8.0, right: 8), 318 | child: Text("Rate us", 319 | style: GoogleFonts.nunito( 320 | color: Theme.of(context).secondaryHeaderColor, 321 | )), 322 | ), 323 | ], 324 | ), 325 | ), 326 | ), 327 | ], 328 | ), 329 | ), 330 | ); 331 | } 332 | } 333 | -------------------------------------------------------------------------------- /images/consoles.svg: -------------------------------------------------------------------------------- 1 | gaming --------------------------------------------------------------------------------