├── .gitignore
├── .metadata
├── LICENSE.md
├── README.md
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── ic_launcher-playstore.png
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── contra
│ │ │ │ └── flutter
│ │ │ │ └── kit
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_background.xml
│ │ │ └── launch_background.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_round.png
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ └── styles.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── assets
├── fonts
│ ├── Montserrat-Bold.ttf
│ ├── Montserrat-ExtraBold.ttf
│ └── Montserrat-Medium.ttf
├── icons
│ ├── arrow_back.svg
│ ├── arrow_back_white.svg
│ ├── arrow_forward.svg
│ ├── arrow_next.svg
│ ├── close.svg
│ ├── facebook.svg
│ ├── ic_add.svg
│ ├── ic_avatar.svg
│ ├── ic_avatar_2.svg
│ ├── ic_avatar_3.svg
│ ├── ic_bell.svg
│ ├── ic_circle.svg
│ ├── ic_circle_not_selected.svg
│ ├── ic_cloud_lightning.svg
│ ├── ic_cloud_rain.svg
│ ├── ic_facebook.svg
│ ├── ic_heart_fill.svg
│ ├── ic_instagram.svg
│ ├── ic_navigation.svg
│ ├── ic_navigation_white.svg
│ ├── ic_search.svg
│ ├── ic_star.svg
│ ├── ic_sun.svg
│ ├── ic_twitter.svg
│ ├── lock.svg
│ ├── logo_mark.svg
│ ├── logo_visa.svg
│ ├── mail.svg
│ ├── placeholder_icon.svg
│ ├── twitter.svg
│ └── user.svg
└── images
│ ├── onboarding_image_five.svg
│ ├── onboarding_image_four.svg
│ ├── onboarding_image_one.svg
│ ├── onboarding_image_three.svg
│ ├── onboarding_image_two.svg
│ ├── peep_avatar.png
│ ├── peep_avatar.svg
│ ├── peep_lady_left.svg
│ ├── peep_lady_one.svg
│ ├── peep_lady_right.svg
│ ├── peep_lady_two.svg
│ ├── peep_man_one.svg
│ ├── peep_man_right.svg
│ ├── peep_man_three.svg
│ ├── peep_standing_center.svg
│ ├── peep_standing_left.svg
│ ├── peep_standing_left_two.svg
│ ├── peep_standing_right.svg
│ ├── peep_standing_right_two.svg
│ ├── peep_verify.svg
│ └── shopping
│ ├── coat_fur.svg
│ ├── peep_both.svg
│ ├── peep_glass.svg
│ ├── peep_lady.svg
│ ├── product_image_1.svg
│ ├── product_image_2.svg
│ ├── product_image_3.svg
│ ├── product_image_4.svg
│ ├── shirt_and_coat.svg
│ ├── striped_tee.svg
│ └── thunder_tshirt.svg
├── ios
├── .gitignore
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ └── Release.xcconfig
├── Podfile
├── Podfile.lock
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ └── contents.xcworkspacedata
└── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── Icon-App-1024x1024@1x.png
│ │ ├── 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-83.5x83.5@2x.png
│ └── LaunchImage.imageset
│ │ ├── Contents.json
│ │ ├── LaunchImage.png
│ │ ├── LaunchImage@2x.png
│ │ ├── LaunchImage@3x.png
│ │ └── README.md
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Info.plist
│ └── Runner-Bridging-Header.h
├── lib
├── alarm
│ ├── add_alarm_page.dart
│ ├── alarm.dart
│ ├── alarm_label.dart
│ ├── alarm_label_widget.dart
│ ├── alarm_list_item.dart
│ ├── alarm_list_page.dart
│ ├── alarm_main_page.dart
│ ├── bottom_sheet_input.dart
│ ├── circular_list_item.dart
│ ├── circular_list_position.dart
│ ├── circular_list_view.dart
│ ├── clock.dart
│ ├── clock_list_item.dart
│ ├── clock_list_page.dart
│ ├── weather.dart
│ ├── weather_detail_page.dart
│ ├── weather_list_item.dart
│ ├── weather_list_page.dart
│ └── weather_widget.dart
├── blog
│ ├── blog.dart
│ ├── blog_card_type_one.dart
│ ├── blog_card_type_three.dart
│ ├── blog_card_type_two.dart
│ ├── blog_detail_page.dart
│ ├── blog_home_page.dart
│ ├── blog_list_item.dart
│ ├── blog_list_page_four.dart
│ ├── blog_list_page_one.dart
│ ├── blog_list_page_three.dart
│ ├── blog_list_page_two.dart
│ ├── blog_main_page.dart
│ ├── blog_staggered_grid_page.dart
│ └── blog_staggered_item.dart
├── chart
│ ├── bar_chart.dart
│ ├── charts_main_page.dart
│ ├── charts_page.dart
│ ├── expense.dart
│ ├── expenses_list_item.dart
│ └── line_chart.dart
├── chat
│ ├── chat.dart
│ ├── chat_home_page.dart
│ ├── chat_list_item.dart
│ ├── chat_list_page.dart
│ ├── chat_message_item.dart
│ ├── chat_messages_page.dart
│ ├── chat_search_item.dart
│ ├── chat_search_page.dart
│ └── message.dart
├── content
│ ├── blog_home.dart
│ ├── content_main_page.dart
│ ├── detail_screen_grid.dart
│ ├── detail_screen_page_four.dart
│ ├── detail_screen_page_one.dart
│ ├── detail_screen_page_three.dart
│ ├── detail_screen_page_two.dart
│ ├── image_text_page.dart
│ ├── image_text_pager.dart
│ ├── invite_list_item.dart
│ ├── invite_list_page.dart
│ ├── popular_courses_home_page.dart
│ ├── popular_courses_item.dart
│ ├── popular_courses_page.dart
│ ├── user.dart
│ ├── user_list_item.dart
│ └── user_list_page.dart
├── custom_widgets
│ ├── badge_text.dart
│ ├── button_plain.dart
│ ├── button_plain_with_shadow.dart
│ ├── button_round_with_shadow.dart
│ ├── button_solid_with_icon.dart
│ ├── cart_add_remove_button.dart
│ ├── chip_widget.dart
│ ├── chips_filter_widget.dart
│ ├── circle_dot_widget.dart
│ ├── color_widget.dart
│ ├── colors_select_widget.dart
│ ├── contra_button.dart
│ ├── contra_button_round.dart
│ ├── contra_input_box.dart
│ ├── contra_time_picker.dart
│ ├── custom_app_bar.dart
│ ├── custom_header.dart
│ ├── custom_input_text.dart
│ ├── custom_list_item.dart
│ ├── custom_search_text.dart
│ ├── image_round_text.dart
│ ├── onboarding_page_text_widget.dart
│ ├── pager_image_view.dart
│ ├── size_widget.dart
│ ├── sizes_select_widget.dart
│ └── star_widget.dart
├── login
│ ├── contact_us_form.dart
│ ├── contra_text.dart
│ ├── input_text_box_bigger.dart
│ ├── login_form_one.dart
│ ├── login_form_two.dart
│ ├── login_form_type_four.dart
│ ├── login_form_type_three.dart
│ ├── login_input_email_text.dart
│ ├── login_input_password_text.dart
│ ├── login_main.dart
│ ├── rich_text.dart
│ ├── signup_form_one.dart
│ └── verification_type.dart
├── main.dart
├── maps
│ ├── location.dart
│ ├── location_detail.dart
│ ├── location_list_item.dart
│ ├── location_listing.dart
│ ├── map_main_page.dart
│ └── map_widget.dart
├── menu
│ ├── menu_page_one.dart
│ ├── menu_page_two.dart
│ ├── menu_settings_main_page.dart
│ ├── settings.dart
│ ├── settings_card_item.dart
│ ├── settings_item_widget.dart
│ ├── settings_list_card_item.dart
│ ├── settings_page_one.dart
│ ├── settings_page_three.dart
│ └── settings_page_two.dart
├── onboarding
│ ├── onboard_data.dart
│ ├── onboard_main.dart
│ ├── type1
│ │ ├── onboard_page_one.dart
│ │ └── pager.dart
│ ├── type2
│ │ ├── onboard_page_two.dart
│ │ └── pager.dart
│ ├── type3
│ │ ├── onboard_page_three.dart
│ │ └── pager.dart
│ ├── type4
│ │ └── onboard_page_four.dart
│ └── welcome_screen.dart
├── payment
│ ├── payment_card.dart
│ ├── payment_card_item.dart
│ ├── payment_card_item_big.dart
│ ├── payment_main_page.dart
│ ├── payment_page_one.dart
│ ├── payment_page_three.dart
│ ├── payment_page_two.dart
│ └── payment_type.dart
├── shopping
│ ├── category_item.dart
│ ├── shop.dart
│ ├── shop_card_item.dart
│ ├── shop_card_item_small.dart
│ ├── shop_grid_item.dart
│ ├── shop_item.dart
│ ├── shop_list_item.dart
│ ├── shopping_card_pager.dart
│ ├── shopping_card_pager_item.dart
│ ├── shopping_detail_page_one.dart
│ ├── shopping_detail_page_two.dart
│ ├── shopping_home_page.dart
│ ├── shopping_home_page_one.dart
│ ├── shopping_home_page_two.dart
│ ├── shopping_list_page_type_one.dart
│ ├── shopping_list_page_type_two.dart
│ └── shopping_main_page.dart
└── utils
│ ├── colors.dart
│ ├── empty_screen.dart
│ └── strings.dart
├── pubspec.lock
├── pubspec.yaml
├── screenshots
├── add_alarm_page.jpg
├── add_label_screen.jpg
├── alarm_list_page.jpg
├── bar_chart.jpg
├── blog_type_five.jpg
├── blog_type_four.jpg
├── blog_type_one.jpg
├── blog_type_three.jpg
├── blog_type_two.jpg
├── chat_home_page.jpg
├── chat_message_page.jpg
├── chat_search_page.jpg
├── clock_list_page.jpg
├── contact_us_type_1.jpg
├── content_text_eight.jpg
├── content_text_five.jpg
├── content_text_four.jpg
├── content_text_nine.jpg
├── content_text_one.jpg
├── content_text_seven.jpg
├── content_text_six.jpg
├── content_text_ten.jpg
├── content_text_three.jpg
├── content_text_two.jpg
├── home.jpg
├── line_chart.jpg
├── location_detail.jpg
├── location_list_page.jpg
├── login_type_1.jpg
├── login_type_2.jpg
├── login_type_3.jpg
├── login_type_4.jpg
├── menu_page_one.jpg
├── menu_page_two.jpg
├── onboard_type_1.jpg
├── onboard_type_2.jpg
├── onboard_type_3.jpg
├── onboard_type_4.jpg
├── payment_type_four.jpg
├── payment_type_one.jpg
├── payment_type_three.jpg
├── payment_type_two.jpg
├── settings_page_one.jpg
├── settings_page_three.jpg
├── settings_page_two.jpg
├── shopping_screen_five.jpg
├── shopping_screen_four.jpg
├── shopping_screen_one.jpg
├── shopping_screen_six.jpg
├── shopping_screen_three.jpg
├── shopping_screen_two.jpg
├── signup_type_1.jpg
├── verification_type_1.jpg
├── weather_list_page.jpg
├── welcome_screen.jpg
└── welcome_screen.png
└── test
└── widget_test.dart
/.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 | # Android related
19 | **/android/**/gradle-wrapper.jar
20 | **/android/.gradle
21 | **/android/captures/
22 | **/android/gradlew
23 | **/android/gradlew.bat
24 | **/android/local.properties
25 | **/android/**/GeneratedPluginRegistrant.java
26 |
27 | # The .vscode folder contains launch configuration and tasks you configure in
28 | # VS Code which you may wish to be included in version control, so this line
29 | # is commented out by default.
30 | #.vscode/
31 |
32 | # Flutter/Dart/Pub related
33 | **/doc/api/
34 | .dart_tool/
35 | .flutter-plugins
36 | .flutter-plugins-dependencies
37 | .packages
38 | .pub-cache/
39 | .pub/
40 | /build/
41 |
42 | # Web related
43 | lib/generated_plugin_registrant.dart
44 |
45 | # Exceptions to above rules.
46 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
47 |
--------------------------------------------------------------------------------
/.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: f139b11009aeb8ed2a3a3aa8b0066e482709dde3
8 | channel: stable
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 | /key.properties
8 | GeneratedPluginRegistrant.java
9 |
--------------------------------------------------------------------------------
/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 = '3'
17 | }
18 | flutterVersionCode = '3'
19 |
20 | def flutterVersionName = localProperties.getProperty('flutter.versionName')
21 | if (flutterVersionName == null) {
22 | flutterVersionName = '1.0'
23 | }
24 | flutterVersionName = '1.0'
25 |
26 | def keystoreProperties = new Properties()
27 | def keystorePropertiesFile = rootProject.file('key.properties')
28 | if (keystorePropertiesFile.exists()) {
29 | keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
30 | }
31 |
32 | apply plugin: 'com.android.application'
33 | apply plugin: 'kotlin-android'
34 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
35 |
36 | android {
37 | compileSdkVersion 29
38 |
39 | sourceSets {
40 | main.java.srcDirs += 'src/main/kotlin'
41 | }
42 |
43 | lintOptions {
44 | disable 'InvalidPackage'
45 | }
46 |
47 | defaultConfig {
48 | applicationId "com.contra.flutter.kit"
49 | minSdkVersion 20
50 | targetSdkVersion 29
51 | versionCode flutterVersionCode.toInteger()
52 | versionName flutterVersionName
53 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
54 | }
55 |
56 | signingConfigs {
57 | release {
58 | keyAlias keystoreProperties['keyAlias']
59 | keyPassword keystoreProperties['keyPassword']
60 | storeFile file(keystoreProperties['storeFile'])
61 | storePassword keystoreProperties['storePassword']
62 | }
63 | debug {
64 |
65 | }
66 | }
67 |
68 | buildTypes {
69 | release {
70 | signingConfig signingConfigs.release
71 | minifyEnabled true
72 | useProguard true
73 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
74 | }
75 |
76 | debug {
77 | signingConfig signingConfigs.debug
78 | }
79 | }
80 | }
81 |
82 | flutter {
83 | source '../..'
84 | }
85 |
86 | dependencies {
87 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
88 | testImplementation 'junit:junit:4.12'
89 | androidTestImplementation 'androidx.test.ext:junit:1.1.1'
90 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
91 | }
92 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
8 |
12 |
19 |
20 |
21 |
22 |
23 |
24 |
26 |
29 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/android/app/src/main/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/android/app/src/main/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/contra/flutter/kit/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.contra.flutter.kit
2 |
3 | import androidx.annotation.NonNull;
4 | import io.flutter.embedding.android.FlutterActivity
5 | import io.flutter.embedding.engine.FlutterEngine
6 | import io.flutter.plugins.GeneratedPluginRegistrant
7 |
8 | class MainActivity: FlutterActivity() {
9 | override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
10 | GeneratedPluginRegistrant.registerWith(flutterEngine);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/android/app/src/main/res/drawable/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | -
6 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #1947E6
4 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.3.72'
3 | repositories {
4 | google()
5 | jcenter()
6 | }
7 |
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:3.5.3'
10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11 | }
12 | }
13 |
14 | allprojects {
15 | repositories {
16 | google()
17 | jcenter()
18 | }
19 | }
20 |
21 | rootProject.buildDir = '../build'
22 | subprojects {
23 | project.buildDir = "${rootProject.buildDir}/${project.name}"
24 | }
25 | subprojects {
26 | project.evaluationDependsOn(':app')
27 | }
28 |
29 | task clean(type: Delete) {
30 | delete rootProject.buildDir
31 | }
32 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.enableR8=true
3 | android.useAndroidX=true
4 | android.enableJetifier=true
5 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Jun 20 00:52:50 IST 2020
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-5.6.2-all.zip
7 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
4 |
5 | def plugins = new Properties()
6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
7 | if (pluginsFile.exists()) {
8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
9 | }
10 |
11 | plugins.each { name, path ->
12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
13 | include ":$name"
14 | project(":$name").projectDir = pluginDirectory
15 | }
16 |
--------------------------------------------------------------------------------
/assets/fonts/Montserrat-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/assets/fonts/Montserrat-Bold.ttf
--------------------------------------------------------------------------------
/assets/fonts/Montserrat-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/assets/fonts/Montserrat-ExtraBold.ttf
--------------------------------------------------------------------------------
/assets/fonts/Montserrat-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/assets/fonts/Montserrat-Medium.ttf
--------------------------------------------------------------------------------
/assets/icons/arrow_back.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/arrow_back_white.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/arrow_forward.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/arrow_next.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/close.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/facebook.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/ic_add.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/ic_bell.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/ic_circle.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/ic_circle_not_selected.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/ic_cloud_lightning.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/assets/icons/ic_cloud_rain.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/assets/icons/ic_facebook.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/ic_heart_fill.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/ic_instagram.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/assets/icons/ic_navigation.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/ic_navigation_white.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/ic_search.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/ic_star.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/ic_sun.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/assets/icons/ic_twitter.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/lock.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/logo_visa.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/mail.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/icons/placeholder_icon.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/assets/icons/twitter.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/icons/user.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/images/peep_avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/assets/images/peep_avatar.png
--------------------------------------------------------------------------------
/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/app.flx
22 | Flutter/app.zip
23 | Flutter/flutter_assets/
24 | Flutter/flutter_export_environment.sh
25 | ServiceDefinitions.json
26 | Runner/GeneratedPluginRegistrant.*
27 |
28 | # Exceptions to above rules.
29 | !default.mode1v3
30 | !default.mode2v3
31 | !default.pbxuser
32 | !default.perspectivev3
33 |
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
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 | 12.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment this line to define a global platform for your project
2 | # platform :ios, '12.0'
3 |
4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true'
6 |
7 | project 'Runner', {
8 | 'Debug' => :debug,
9 | 'Profile' => :release,
10 | 'Release' => :release,
11 | }
12 |
13 | def flutter_root
14 | generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
15 | unless File.exist?(generated_xcode_build_settings_path)
16 | raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
17 | end
18 |
19 | File.foreach(generated_xcode_build_settings_path) do |line|
20 | matches = line.match(/FLUTTER_ROOT\=(.*)/)
21 | return matches[1].strip if matches
22 | end
23 | raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
24 | end
25 |
26 | require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
27 |
28 | flutter_ios_podfile_setup
29 |
30 | target 'Runner' do
31 | use_frameworks!
32 | use_modular_headers!
33 |
34 | flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
35 | end
36 |
37 | post_install do |installer|
38 | installer.pods_project.targets.each do |target|
39 | flutter_additional_ios_build_settings(target)
40 | end
41 | end
42 |
--------------------------------------------------------------------------------
/ios/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - Flutter (1.0.0)
3 | - google_maps_flutter (0.0.1):
4 | - Flutter
5 | - GoogleMaps
6 | - GoogleMaps (2.7.0):
7 | - GoogleMaps/Maps (= 2.7.0)
8 | - GoogleMaps/Base (2.7.0)
9 | - GoogleMaps/Maps (2.7.0):
10 | - GoogleMaps/Base
11 |
12 | DEPENDENCIES:
13 | - Flutter (from `Flutter`)
14 | - google_maps_flutter (from `.symlinks/plugins/google_maps_flutter/ios`)
15 |
16 | SPEC REPOS:
17 | trunk:
18 | - GoogleMaps
19 |
20 | EXTERNAL SOURCES:
21 | Flutter:
22 | :path: Flutter
23 | google_maps_flutter:
24 | :path: ".symlinks/plugins/google_maps_flutter/ios"
25 |
26 | SPEC CHECKSUMS:
27 | Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
28 | google_maps_flutter: abdb8dee6c52d4be36ad131ee6ebfacd14417c5a
29 | GoogleMaps: f79af95cb24d869457b1f961c93d3ce8b2f3b848
30 |
31 | PODFILE CHECKSUM: c4c93c5f6502fe2754f48404d3594bf779584011
32 |
33 | COCOAPODS: 1.13.0
34 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Flutter
3 | import GoogleMaps
4 |
5 | @UIApplicationMain
6 | @objc class AppDelegate: FlutterAppDelegate {
7 | override func application(
8 | _ application: UIApplication,
9 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
10 | ) -> Bool {
11 | GMSServices.provideAPIKey("YOUR KEY HERE")
12 | GeneratedPluginRegistrant.register(with: self)
13 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/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/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/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/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/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/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/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/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/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/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/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/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/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/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/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/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/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/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/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/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/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/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/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/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/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.
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 | contraflutterkit
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | $(FLUTTER_BUILD_NAME)
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(FLUTTER_BUILD_NUMBER)
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UISupportedInterfaceOrientations
30 |
31 | UIInterfaceOrientationPortrait
32 | UIInterfaceOrientationLandscapeLeft
33 | UIInterfaceOrientationLandscapeRight
34 |
35 | UISupportedInterfaceOrientations~ipad
36 |
37 | UIInterfaceOrientationPortrait
38 | UIInterfaceOrientationPortraitUpsideDown
39 | UIInterfaceOrientationLandscapeLeft
40 | UIInterfaceOrientationLandscapeRight
41 |
42 | UIViewControllerBasedStatusBarAppearance
43 |
44 | CADisableMinimumFrameDurationOnPhone
45 |
46 | UIApplicationSupportsIndirectInputEvents
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
--------------------------------------------------------------------------------
/lib/alarm/alarm.dart:
--------------------------------------------------------------------------------
1 | class Alarm {
2 | String time;
3 | String am_pm;
4 | List datesList;
5 |
6 | Alarm({required this.time, required this.am_pm, required this.datesList});
7 | }
8 |
--------------------------------------------------------------------------------
/lib/alarm/alarm_label.dart:
--------------------------------------------------------------------------------
1 | class AlarmLabel {
2 | String title;
3 | String selectedText;
4 | bool selected;
5 |
6 | AlarmLabel(
7 | {required this.title,
8 | required this.selectedText,
9 | required this.selected});
10 | }
11 |
--------------------------------------------------------------------------------
/lib/alarm/alarm_label_widget.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/login/contra_text.dart';
2 | import 'package:contraflutterkit/utils/colors.dart';
3 | import 'package:flutter/cupertino.dart';
4 | import 'package:flutter/material.dart';
5 |
6 | import 'alarm_label.dart';
7 |
8 | class AlarmLabelWidget extends StatelessWidget {
9 | AlarmLabel label;
10 | VoidCallback onTap;
11 |
12 | AlarmLabelWidget({required this.label,required this.onTap});
13 |
14 | @override
15 | Widget build(BuildContext context) {
16 | return GestureDetector(
17 | onTap: onTap,
18 | child: Container(
19 | padding: EdgeInsets.all(24),
20 | child: Row(
21 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
22 | children: [
23 | ContraText(
24 | text: label.title,
25 | alignment: Alignment.centerLeft,
26 | color: wood_smoke,
27 | size: 21,
28 | ),
29 | label.selected
30 | ? ContraText(
31 | text: label.selectedText,
32 | alignment: Alignment.centerLeft,
33 | color: black,
34 | size: 17,
35 | )
36 | : Icon(
37 | Icons.arrow_forward_ios,
38 | color: wood_smoke,
39 | )
40 | ],
41 | ),
42 | ),
43 | );
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/lib/alarm/alarm_main_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class AlarmMainPage extends StatefulWidget {
4 | @override
5 | _AlarmMainPageState createState() => _AlarmMainPageState();
6 | }
7 |
8 | class _AlarmMainPageState extends State {
9 | @override
10 | void initState() {
11 | super.initState();
12 | }
13 |
14 | @override
15 | Widget build(BuildContext context) {
16 | return Scaffold(
17 | appBar: AppBar(
18 | title: Text("Alarm, Clock, Weather"),
19 | ),
20 | body: SingleChildScrollView(
21 | child: Column(
22 | children: [
23 | ListTile(
24 | contentPadding: EdgeInsets.all(20),
25 | trailing: Icon(Icons.navigate_next),
26 | title: Text("Alarm List Page"),
27 | onTap: () {
28 | Navigator.pushNamed(context, "/alarm_list_page");
29 | },
30 | ),
31 | ListTile(
32 | contentPadding: EdgeInsets.all(20),
33 | trailing: Icon(Icons.navigate_next),
34 | title: Text("Add Alarm Page"),
35 | onTap: () {
36 | Navigator.pushNamed(context, "/add_alarm_page");
37 | },
38 | ),
39 | ListTile(
40 | contentPadding: EdgeInsets.all(20),
41 | trailing: Icon(Icons.navigate_next),
42 | title: Text("Clock List Page"),
43 | onTap: () {
44 | Navigator.pushNamed(context, "/clock_list_page");
45 | },
46 | ),
47 | ListTile(
48 | contentPadding: EdgeInsets.all(20),
49 | trailing: Icon(Icons.navigate_next),
50 | title: Text("Weather List Page"),
51 | onTap: () {
52 | Navigator.pushNamed(context, "/weather_list_page");
53 | },
54 | ),
55 | ListTile(
56 | contentPadding: EdgeInsets.all(20),
57 | trailing: Icon(Icons.navigate_next),
58 | title: Text("Weather Page"),
59 | onTap: () {
60 | Navigator.pushNamed(context, "/weather_page");
61 | },
62 | ),
63 | ],
64 | ),
65 | ),
66 | );
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/lib/alarm/bottom_sheet_input.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/custom_widgets/contra_input_box.dart';
2 | import 'package:contraflutterkit/login/contra_text.dart';
3 | import 'package:contraflutterkit/utils/colors.dart';
4 | import 'package:flutter/material.dart';
5 | import 'package:flutter_svg/flutter_svg.dart';
6 |
7 | class BottomSheetInput extends StatelessWidget {
8 | @override
9 | Widget build(BuildContext context) {
10 | return Padding(
11 | padding:
12 | EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
13 | child: Container(
14 | height: 200,
15 | color: Color(0xFF737373),
16 | // This line set the transparent background
17 | child: Container(
18 | height: 200,
19 | decoration: ShapeDecoration(
20 | color: white,
21 | shape: RoundedRectangleBorder(
22 | borderRadius: BorderRadius.only(
23 | topLeft: Radius.circular(16),
24 | topRight: Radius.circular(16)))),
25 | child: Column(
26 | children: [
27 | Padding(
28 | padding: const EdgeInsets.all(16.0),
29 | child: Row(
30 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
31 | children: [
32 | ContraText(
33 | text: "Label",
34 | alignment: Alignment.centerLeft,
35 | color: wood_smoke,
36 | size: 21,
37 | weight: FontWeight.bold,
38 | ),
39 | GestureDetector(
40 | onTap: () {
41 | Navigator.of(context).pop();
42 | },
43 | child: SvgPicture.asset(
44 | "assets/icons/close.svg",
45 | ))
46 | ],
47 | ),
48 | ),
49 | Container(
50 | height: 2,
51 | color: wood_smoke,
52 | ),
53 | SizedBox(
54 | height: 20,
55 | ),
56 | Padding(
57 | padding: const EdgeInsets.all(16.0),
58 | child: ContraInputBox(
59 | hintText: "Enter name",
60 | iconPath: "assets/icons/mail.svg",
61 | showPrefix: false,
62 | ),
63 | )
64 | ],
65 | ),
66 | ),
67 | ),
68 | );
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/lib/alarm/circular_list_item.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | class CircularListItem extends StatefulWidget {
5 | @override
6 | CircularListItemState createState() {
7 | return new CircularListItemState();
8 | }
9 | }
10 |
11 | class CircularListItemState extends State {
12 | @override
13 | Widget build(BuildContext context) {
14 | return Transform(
15 | transform: new Matrix4.translationValues(-30.0, -30.0, 0.0),
16 | child: Container(
17 | width: 40.0,
18 | height: 20.0,
19 | decoration: new ShapeDecoration(
20 | color: lightening_yellow,
21 | shape: RoundedRectangleBorder(
22 | borderRadius: BorderRadius.all(Radius.circular(16)))),
23 | ),
24 | );
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/lib/alarm/circular_list_position.dart:
--------------------------------------------------------------------------------
1 | import 'dart:math';
2 |
3 | import 'package:flutter/material.dart';
4 |
5 | class CircularPosition extends StatefulWidget {
6 | final double radius;
7 | final double angle;
8 | final Widget child;
9 |
10 | CircularPosition({
11 | required this.angle,
12 | required this.child,
13 | required this.radius,
14 | });
15 |
16 | @override
17 | CircularPositionState createState() {
18 | return new CircularPositionState();
19 | }
20 | }
21 |
22 | class CircularPositionState extends State {
23 | @override
24 | Widget build(BuildContext context) {
25 | final x = cos(widget.angle) * widget.radius;
26 | final y = sin(widget.angle) * widget.radius;
27 |
28 | return Transform(
29 | transform: new Matrix4.translationValues(x, y, 0.0),
30 | child: widget.child,
31 | );
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/lib/alarm/circular_list_view.dart:
--------------------------------------------------------------------------------
1 | import 'dart:math';
2 |
3 | import 'package:contraflutterkit/alarm/circular_list_item.dart';
4 | import 'package:contraflutterkit/utils/colors.dart';
5 | import 'package:flutter/material.dart';
6 |
7 | import 'circular_list_position.dart';
8 |
9 | class CircularListView extends StatefulWidget {
10 | final List items;
11 | final double radius;
12 |
13 | CircularListView({
14 | required this.items,
15 | required this.radius,
16 | });
17 |
18 | List _radialListItems() {
19 | final double firstItemAngle = pi;
20 | final double lastItemAngle = pi;
21 | final double angleDiff = (firstItemAngle + lastItemAngle) / (items.length);
22 |
23 | double currentAngle = firstItemAngle;
24 | return items.map((int i) {
25 | final listItem = _radialListItem(currentAngle);
26 | currentAngle += angleDiff;
27 | return listItem;
28 | }).toList();
29 | }
30 |
31 | List _allWidgets() {
32 | List allWidgets = [];
33 | allWidgets.add(_backgroundWidget());
34 | allWidgets.addAll(_radialListItems());
35 | return allWidgets;
36 | }
37 |
38 | Widget _backgroundWidget() {
39 | return Transform(
40 | transform: new Matrix4.translationValues(145.0, 320.0, 0.0),
41 | child: Container(
42 | width: 120,
43 | height: 120,
44 | padding: const EdgeInsets.symmetric(horizontal: 34.0, vertical: 120),
45 | decoration: new BoxDecoration(
46 | color: white,
47 | shape: BoxShape.circle,
48 | border: new Border.all(
49 | color: Colors.black,
50 | width: 16,
51 | ),
52 | ),
53 | ),
54 | );
55 | }
56 |
57 | Widget _radialListItem(double angle) {
58 | return Transform(
59 | transform: new Matrix4.translationValues(215.0, 400.0, 0.0),
60 | child: CircularPosition(
61 | radius: radius,
62 | angle: angle,
63 | child: new CircularListItem(),
64 | ),
65 | );
66 | }
67 |
68 | @override
69 | CircularListViewState createState() {
70 | return new CircularListViewState();
71 | }
72 | }
73 |
74 | class CircularListViewState extends State {
75 | @override
76 | Widget build(BuildContext context) {
77 | return new Stack(
78 | children: widget._allWidgets(),
79 | );
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/lib/alarm/clock.dart:
--------------------------------------------------------------------------------
1 | import 'dart:ui';
2 |
3 | class Clock {
4 | String country;
5 | String city;
6 | String time;
7 | String am_pm;
8 | Color color;
9 |
10 | Clock(
11 | {required this.country,
12 | required this.city,
13 | required this.time,
14 | required this.am_pm,
15 | required this.color});
16 | }
17 |
--------------------------------------------------------------------------------
/lib/alarm/clock_list_item.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/login/contra_text.dart';
2 | import 'package:contraflutterkit/utils/colors.dart';
3 | import 'package:flutter/cupertino.dart';
4 | import 'package:flutter/material.dart';
5 |
6 | import 'clock.dart';
7 |
8 | class ClockListItem extends StatelessWidget {
9 | Clock clock;
10 |
11 | ClockListItem({required this.clock});
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | return Container(
16 | margin: EdgeInsets.symmetric(vertical: 12),
17 | padding: EdgeInsets.all(24),
18 | decoration: ShapeDecoration(
19 | color: clock.color,
20 | shadows: [BoxShadow(color: wood_smoke, offset: Offset(0, 2))],
21 | shape: RoundedRectangleBorder(
22 | borderRadius: BorderRadius.all(Radius.circular(16)),
23 | side: BorderSide(color: wood_smoke, width: 2))),
24 | child: Row(
25 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
26 | children: [
27 | Column(
28 | crossAxisAlignment: CrossAxisAlignment.start,
29 | children: [
30 | ContraText(
31 | color: wood_smoke,
32 | text: clock.country,
33 | size: 27,
34 | alignment: Alignment.centerLeft,
35 | ),
36 | ContraText(
37 | color: trout,
38 | text: clock.city,
39 | size: 15,
40 | alignment: Alignment.centerLeft,
41 | weight: FontWeight.w500,
42 | ),
43 | ],
44 | ),
45 | Row(
46 | children: [
47 | ContraText(
48 | color: wood_smoke,
49 | text: clock.time,
50 | size: 44,
51 | alignment: Alignment.centerLeft,
52 | ),
53 | ContraText(
54 | color: wood_smoke,
55 | text: clock.am_pm,
56 | size: 15,
57 | alignment: Alignment.centerLeft,
58 | ),
59 | ],
60 | ),
61 | ],
62 | ),
63 | );
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/lib/alarm/weather.dart:
--------------------------------------------------------------------------------
1 | import 'dart:ui';
2 |
3 | class Weather {
4 | String country;
5 | String city;
6 | String time;
7 | String image;
8 | String am_pm;
9 | String degree;
10 | Color color;
11 |
12 | Weather(
13 | {required this.country,
14 | required this.city,
15 | required this.am_pm,
16 | required this.time,
17 | required this.color,
18 | required this.image,
19 | required this.degree});
20 | }
21 |
22 | class WeatherDate {
23 | String day;
24 | String image;
25 | Color color;
26 |
27 | WeatherDate({required this.day, required this.color, required this.image});
28 | }
29 |
--------------------------------------------------------------------------------
/lib/alarm/weather_list_item.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/alarm/weather.dart';
2 | import 'package:contraflutterkit/login/contra_text.dart';
3 | import 'package:contraflutterkit/utils/colors.dart';
4 | import 'package:flutter/cupertino.dart';
5 | import 'package:flutter/material.dart';
6 | import 'package:flutter_svg/svg.dart';
7 |
8 | class WeatherListItem extends StatelessWidget {
9 | Weather weather;
10 |
11 | WeatherListItem({required this.weather});
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | return Container(
16 | margin: EdgeInsets.symmetric(vertical: 12),
17 | padding: EdgeInsets.all(24),
18 | decoration: ShapeDecoration(
19 | color: weather.color,
20 | shadows: [BoxShadow(color: wood_smoke, offset: Offset(0, 2))],
21 | shape: RoundedRectangleBorder(
22 | borderRadius: BorderRadius.all(Radius.circular(16)),
23 | side: BorderSide(color: wood_smoke, width: 2))),
24 | child: Row(
25 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
26 | children: [
27 | Column(
28 | crossAxisAlignment: CrossAxisAlignment.start,
29 | children: [
30 | ContraText(
31 | color: wood_smoke,
32 | text: weather.country,
33 | size: 27,
34 | alignment: Alignment.centerLeft,
35 | ),
36 | Row(
37 | children: [
38 | ContraText(
39 | color: wood_smoke,
40 | text: weather.city + ",",
41 | size: 13,
42 | alignment: Alignment.centerLeft,
43 | weight: FontWeight.bold,
44 | ),
45 | ContraText(
46 | color: wood_smoke,
47 | text: weather.time + weather.am_pm,
48 | size: 13,
49 | alignment: Alignment.centerLeft,
50 | weight: FontWeight.bold,
51 | ),
52 | ],
53 | ),
54 | ],
55 | ),
56 | Row(
57 | children: [
58 | SvgPicture.asset("assets/icons/ic_cloud_rain.svg"),
59 | SizedBox(
60 | width: 10,
61 | ),
62 | ContraText(
63 | color: wood_smoke,
64 | text: weather.degree + "\u00B0",
65 | size: 44,
66 | alignment: Alignment.centerLeft,
67 | ),
68 | ],
69 | ),
70 | ],
71 | ),
72 | );
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/lib/alarm/weather_widget.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/alarm/weather.dart';
2 | import 'package:contraflutterkit/login/contra_text.dart';
3 | import 'package:contraflutterkit/utils/colors.dart';
4 | import 'package:flutter/cupertino.dart';
5 | import 'package:flutter_svg/svg.dart';
6 |
7 | class WeatherWidget extends StatelessWidget {
8 | WeatherDate date;
9 |
10 | WeatherWidget({required this.date});
11 |
12 | @override
13 | Widget build(BuildContext context) {
14 | return Container(
15 | width: 48,
16 | child: Column(
17 | mainAxisSize: MainAxisSize.min,
18 | children: [
19 | ContraText(
20 | text: date.day,
21 | alignment: Alignment.center,
22 | weight: FontWeight.w800,
23 | size: 13,
24 | color: wood_smoke,
25 | ),
26 | SizedBox(
27 | height: 10,
28 | ),
29 | SvgPicture.asset(
30 | date.image,
31 | width: 32,
32 | height: 32,
33 | )
34 | ],
35 | ),
36 | );
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/blog/blog.dart:
--------------------------------------------------------------------------------
1 | import 'dart:ui';
2 |
3 | class Blog {
4 | final String title;
5 | final String description;
6 | final Color bgColor;
7 | final String user;
8 | final String time;
9 |
10 | const Blog(
11 | {required this.title,
12 | required this.description,
13 | required this.bgColor,
14 | required this.user,
15 | required this.time});
16 | }
17 |
18 | class BlogWithSize {
19 | final String title;
20 | final String description;
21 | final Color bgColor;
22 | final double width;
23 | final double height;
24 |
25 | const BlogWithSize(
26 | {required this.title,
27 | required this.description,
28 | required this.bgColor,
29 | required this.width,
30 | required this.height});
31 | }
32 |
--------------------------------------------------------------------------------
/lib/blog/blog_card_type_two.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 | import 'package:flutter/material.dart';
4 |
5 | import 'blog.dart';
6 |
7 | class BlogCardTypeTwo extends StatelessWidget {
8 | final VoidCallback onTap;
9 | final Blog blog;
10 |
11 | const BlogCardTypeTwo({required this.onTap, required this.blog});
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | return GestureDetector(
16 | onTap: onTap,
17 | child: Container(
18 | margin: EdgeInsets.only(top: 24),
19 | padding: EdgeInsets.all(24),
20 | decoration: ShapeDecoration(
21 | color: blog.bgColor,
22 | shadows: [
23 | BoxShadow(
24 | color: wood_smoke,
25 | offset: Offset(
26 | 0.0, // Move to right 10 horizontally
27 | 4.0, // Move to bottom 5 Vertically
28 | ),
29 | )
30 | ],
31 | shape: RoundedRectangleBorder(
32 | borderRadius: BorderRadius.all(Radius.circular(16)),
33 | side: BorderSide(color: wood_smoke, width: 2))),
34 | child: Column(
35 | crossAxisAlignment: CrossAxisAlignment.start,
36 | children: [
37 | Text(
38 | "by " + blog.user + " • " + blog.time,
39 | style: TextStyle(
40 | fontSize: 12, fontWeight: FontWeight.bold, color: trout),
41 | ),
42 | SizedBox(
43 | height: 24,
44 | ),
45 | Text(
46 | blog.title,
47 | maxLines: 2,
48 | overflow: TextOverflow.ellipsis,
49 | style: TextStyle(
50 | fontSize: 24,
51 | fontWeight: FontWeight.w800,
52 | color: wood_smoke),
53 | ),
54 | ],
55 | ),
56 | ));
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/lib/blog/blog_home_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/blog/blog_list_page_four.dart';
2 | import 'package:contraflutterkit/blog/blog_list_page_one.dart';
3 | import 'package:contraflutterkit/blog/blog_list_page_two.dart';
4 | import 'package:contraflutterkit/utils/colors.dart';
5 | import 'package:flutter/material.dart';
6 |
7 | import 'blog_list_page_three.dart';
8 |
9 | class BlogHomePage extends StatefulWidget {
10 | @override
11 | _BlogHomePageState createState() => _BlogHomePageState();
12 | }
13 |
14 | class _BlogHomePageState extends State {
15 | int _currentIndex = 0;
16 | final List _childrenWidgets = [
17 | BlogListPageOne(),
18 | BlogListPageTwo(),
19 | BlogListPageThree(),
20 | BlogListPageFour(),
21 | ];
22 |
23 | void _onItemTapped(int index) {
24 | setState(() {
25 | _currentIndex = index;
26 | });
27 | }
28 |
29 | @override
30 | Widget build(BuildContext context) {
31 | return Scaffold(
32 | body: Center(
33 | child: _childrenWidgets.elementAt(_currentIndex),
34 | ),
35 | bottomNavigationBar: BottomNavigationBar(
36 | items: [
37 | BottomNavigationBarItem(icon: Icon(Icons.home), label: ("Home")),
38 | BottomNavigationBarItem(
39 | icon: Icon(Icons.search), label: ("Search")),
40 | BottomNavigationBarItem(
41 | icon: Icon(Icons.chat_bubble), label: ("Chat")),
42 | BottomNavigationBarItem(icon: Icon(Icons.info), label: ("About")),
43 | ],
44 | currentIndex: _currentIndex,
45 | onTap: _onItemTapped,
46 | selectedItemColor: wood_smoke,
47 | unselectedItemColor: trout,
48 | showSelectedLabels: true,
49 | showUnselectedLabels: true,
50 | selectedIconTheme: IconThemeData(color: wood_smoke, opacity: 1),
51 | unselectedIconTheme: IconThemeData(color: trout, opacity: 0.6),
52 | selectedLabelStyle: TextStyle(
53 | color: wood_smoke, fontSize: 12, fontWeight: FontWeight.w800),
54 | unselectedLabelStyle:
55 | TextStyle(color: trout, fontSize: 12, fontWeight: FontWeight.w800),
56 | ),
57 | );
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/lib/blog/blog_staggered_item.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/blog/blog.dart';
2 | import 'package:contraflutterkit/login/contra_text.dart';
3 | import 'package:contraflutterkit/utils/colors.dart';
4 | import 'package:flutter/cupertino.dart';
5 | import 'package:flutter/material.dart';
6 |
7 | class BlogStaggeredItem extends StatelessWidget {
8 | final BlogWithSize blog;
9 |
10 | const BlogStaggeredItem({required this.blog});
11 |
12 | @override
13 | Widget build(BuildContext context) {
14 | return Container(
15 | height: 250,
16 | child: Column(
17 | children: [
18 | Container(
19 | width: blog.width,
20 | height: blog.height,
21 | alignment: Alignment.center,
22 | child: Center(
23 | child: Icon(
24 | Icons.image,
25 | color: white,
26 | size: 40,
27 | ),
28 | ),
29 | decoration: ShapeDecoration(
30 | color: blog.bgColor,
31 | shadows: [
32 | BoxShadow(
33 | color: wood_smoke,
34 | offset: Offset(
35 | 0.0, // Move to right 10 horizontally
36 | 0.0, // Move to bottom 5 Vertically
37 | ),
38 | )
39 | ],
40 | shape: RoundedRectangleBorder(
41 | borderRadius: BorderRadius.all(Radius.circular(16)),
42 | side: BorderSide(color: wood_smoke, width: 2))),
43 | ),
44 | Row(
45 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
46 | children: [
47 | ContraText(
48 | size: 13,
49 | alignment: Alignment.centerLeft,
50 | text: blog.title,
51 | ),
52 | Icon(
53 | Icons.favorite_border,
54 | color: wood_smoke,
55 | )
56 | ],
57 | ),
58 | Text(
59 | blog.description,
60 | style: TextStyle(color: trout, fontSize: 13),
61 | )
62 | ],
63 | ),
64 | );
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/lib/chart/charts_main_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class ChartMainPage extends StatefulWidget {
4 | @override
5 | _ChartMainPageState createState() => _ChartMainPageState();
6 | }
7 |
8 | class _ChartMainPageState extends State {
9 | @override
10 | void initState() {
11 | super.initState();
12 | }
13 |
14 | @override
15 | Widget build(BuildContext context) {
16 | return Scaffold(
17 | appBar: AppBar(
18 | title: Text("Data and Statistics"),
19 | ),
20 | body: SingleChildScrollView(
21 | child: Column(
22 | children: [
23 | ListTile(
24 | contentPadding: EdgeInsets.all(20),
25 | trailing: Icon(Icons.navigate_next),
26 | title: Text("Bar Charts"),
27 | onTap: () {
28 | Navigator.pushNamed(context, "/bar_chart_page");
29 | },
30 | ),
31 | ListTile(
32 | contentPadding: EdgeInsets.all(20),
33 | trailing: Icon(Icons.navigate_next),
34 | title: Text("Line Charts"),
35 | onTap: () {
36 | Navigator.pushNamed(context, "/line_chart_page");
37 | },
38 | ),
39 | ],
40 | ),
41 | ),
42 | );
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/lib/chart/expense.dart:
--------------------------------------------------------------------------------
1 | class Expense {
2 | String title;
3 | String description;
4 | String time;
5 |
6 | Expense({required this.title, required this.description, required this.time});
7 | }
8 |
--------------------------------------------------------------------------------
/lib/chart/expenses_list_item.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/chart/expense.dart';
2 | import 'package:contraflutterkit/custom_widgets/image_round_text.dart';
3 | import 'package:contraflutterkit/utils/colors.dart';
4 | import 'package:flutter/cupertino.dart';
5 | import 'package:flutter/material.dart';
6 |
7 | class ExpenseListItem extends StatelessWidget {
8 | Expense expense;
9 |
10 | ExpenseListItem({required this.expense});
11 |
12 | @override
13 | Widget build(BuildContext context) {
14 | return Container(
15 | padding: EdgeInsets.all(24),
16 | child: Row(
17 | children: [
18 | RoundImageWithText(
19 | size: 48,
20 | text: expense.title.substring(0, 1),
21 | color: dandelion,
22 | borderColor: wood_smoke,
23 | shadowColor: wood_smoke,
24 | ),
25 | SizedBox(
26 | width: 12,
27 | ),
28 | Expanded(
29 | flex: 4,
30 | child: Column(
31 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
32 | crossAxisAlignment: CrossAxisAlignment.start,
33 | children: [
34 | Text(
35 | expense.time,
36 | textAlign: TextAlign.start,
37 | style: TextStyle(
38 | fontSize: 21,
39 | color: wood_smoke,
40 | fontWeight: FontWeight.w800),
41 | ),
42 | SizedBox(
43 | height: 6,
44 | ),
45 | Text(
46 | expense.description,
47 | textAlign: TextAlign.start,
48 | style: TextStyle(
49 | color: trout, fontWeight: FontWeight.w500, fontSize: 15),
50 | )
51 | ],
52 | ),
53 | ),
54 | Expanded(
55 | flex: 1,
56 | child: Text(
57 | expense.time,
58 | style: TextStyle(
59 | fontSize: 11,
60 | color: santas_gray_10,
61 | fontWeight: FontWeight.bold),
62 | ),
63 | )
64 | ],
65 | ),
66 | );
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/lib/chat/chat.dart:
--------------------------------------------------------------------------------
1 | class Chat {
2 | final String name;
3 | final String message;
4 | final String time;
5 | final String count;
6 |
7 | const Chat(
8 | {required this.name,
9 | required this.message,
10 | required this.time,
11 | required this.count});
12 | }
13 |
--------------------------------------------------------------------------------
/lib/chat/chat_home_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 | import 'package:flutter/material.dart';
4 |
5 | import 'chat_list_page.dart';
6 |
7 | class ChatHomePage extends StatefulWidget {
8 | @override
9 | _ChatHomePageState createState() => _ChatHomePageState();
10 | }
11 |
12 | class _ChatHomePageState extends State {
13 | int _currentIndex = 0;
14 | final List _childrenWidgets = [
15 | ChatListPage(),
16 | ChatListPage(),
17 | ChatListPage(),
18 | ChatListPage()
19 | ];
20 |
21 | void _onItemTapped(int index) {
22 | setState(() {
23 | _currentIndex = index;
24 | });
25 | }
26 |
27 | @override
28 | Widget build(BuildContext context) {
29 | return Scaffold(
30 | body: Center(
31 | child: _childrenWidgets.elementAt(_currentIndex),
32 | ),
33 | bottomNavigationBar: BottomNavigationBar(
34 | items: [
35 | BottomNavigationBarItem(icon: Icon(Icons.home), label: ("Home")),
36 | BottomNavigationBarItem(
37 | icon: Icon(Icons.search), label: ("Search")),
38 | BottomNavigationBarItem(
39 | icon: Icon(Icons.chat_bubble), label: ("Chat")),
40 | BottomNavigationBarItem(icon: Icon(Icons.info), label: ("About")),
41 | ],
42 | currentIndex: _currentIndex,
43 | onTap: _onItemTapped,
44 | selectedItemColor: wood_smoke,
45 | unselectedItemColor: trout,
46 | showSelectedLabels: true,
47 | showUnselectedLabels: true,
48 | selectedIconTheme: IconThemeData(color: wood_smoke, opacity: 1),
49 | unselectedIconTheme: IconThemeData(color: trout, opacity: 0.6),
50 | selectedLabelStyle: TextStyle(
51 | color: wood_smoke, fontSize: 12, fontWeight: FontWeight.w800),
52 | unselectedLabelStyle:
53 | TextStyle(color: trout, fontSize: 12, fontWeight: FontWeight.w800),
54 | ),
55 | );
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/lib/chat/chat_message_item.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/chat/message.dart';
2 | import 'package:contraflutterkit/utils/colors.dart';
3 | import 'package:flutter/cupertino.dart';
4 | import 'package:flutter/material.dart';
5 |
6 | class ChatMessageItemWidget extends StatelessWidget {
7 | final Message message;
8 | final Color borderColor;
9 | final Color textColor;
10 | final Color color;
11 | final bool isTimeStampSame;
12 |
13 | const ChatMessageItemWidget(
14 | {required this.message,
15 | required this.color,
16 | required this.isTimeStampSame,
17 | required this.borderColor,
18 | required this.textColor});
19 |
20 | @override
21 | Widget build(BuildContext context) {
22 | print(isTimeStampSame);
23 | return Container(
24 | padding: isTimeStampSame
25 | ? EdgeInsets.symmetric(vertical: 4)
26 | : EdgeInsets.symmetric(
27 | vertical: 16,
28 | ),
29 | child: Row(
30 | mainAxisAlignment:
31 | message.isUser ? MainAxisAlignment.end : MainAxisAlignment.start,
32 | children: [
33 | !message.isUser
34 | ? isTimeStampSame
35 | ? SizedBox(
36 | width: 48,
37 | height: 48,
38 | )
39 | : Image.asset(
40 | "assets/images/peep_avatar.png",
41 | width: 48,
42 | height: 48,
43 | )
44 | : SizedBox(),
45 | SizedBox(
46 | width: 12,
47 | ),
48 | Flexible(
49 | child: Container(
50 | padding: EdgeInsets.all(16),
51 | decoration: ShapeDecoration(
52 | color: message.isUser ? caribbean_color : color,
53 | shape: RoundedRectangleBorder(
54 | borderRadius: BorderRadius.all(Radius.circular(16)),
55 | side: BorderSide(color: borderColor, width: 2))),
56 | child: Text(
57 | message.message,
58 | textAlign: TextAlign.start,
59 | style: TextStyle(
60 | color: textColor,
61 | fontWeight: FontWeight.bold,
62 | fontSize: 17),
63 | ),
64 | ),
65 | ),
66 | ],
67 | ),
68 | );
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/lib/chat/chat_search_item.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/custom_widgets/image_round_text.dart';
2 | import 'package:contraflutterkit/utils/colors.dart';
3 | import 'package:flutter/cupertino.dart';
4 | import 'package:flutter/material.dart';
5 |
6 | import 'chat.dart';
7 |
8 | class ChatSearchItemWidget extends StatelessWidget {
9 | final Chat chat;
10 | final Color borderColor;
11 | final Color textColor;
12 | final Color color;
13 |
14 | const ChatSearchItemWidget(
15 | {required this.chat,
16 | required this.color,
17 | required this.borderColor,
18 | required this.textColor});
19 |
20 | @override
21 | Widget build(BuildContext context) {
22 | return Container(
23 | padding: EdgeInsets.symmetric(vertical: 24),
24 | child: Row(
25 | children: [
26 | Expanded(
27 | flex: 1,
28 | child: RoundImageWithText(
29 | size: 54,
30 | text: chat.name.substring(0, 1),
31 | color: dandelion,
32 | borderColor: wood_smoke,
33 | shadowColor: wood_smoke,
34 | ),
35 | ),
36 | SizedBox(
37 | width: 12,
38 | ),
39 | Expanded(
40 | flex: 3,
41 | child: Text(
42 | chat.name,
43 | textAlign: TextAlign.start,
44 | style: TextStyle(
45 | color: textColor, fontWeight: FontWeight.bold, fontSize: 17),
46 | ),
47 | ),
48 | Expanded(
49 | flex: 1,
50 | child: Text(
51 | chat.time,
52 | style: TextStyle(
53 | fontSize: 11,
54 | color: santas_gray_10,
55 | fontWeight: FontWeight.bold),
56 | ),
57 | ),
58 | ],
59 | ),
60 | );
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/lib/chat/message.dart:
--------------------------------------------------------------------------------
1 | class Message {
2 | final String name;
3 | final String message;
4 | final String time;
5 | final bool isUser;
6 |
7 | const Message(
8 | {required this.name,
9 | required this.message,
10 | required this.time,
11 | required this.isUser});
12 | }
13 |
--------------------------------------------------------------------------------
/lib/content/image_text_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter_svg/svg.dart';
5 |
6 | class ImageTextPage extends StatefulWidget {
7 | String image;
8 |
9 | ImageTextPage({required this.image});
10 |
11 | @override
12 | _ImageTextPageState createState() => _ImageTextPageState();
13 | }
14 |
15 | class _ImageTextPageState extends State {
16 | @override
17 | Widget build(BuildContext context) {
18 | return Scaffold(
19 | backgroundColor: white,
20 | body: Container(
21 | alignment: Alignment.bottomCenter,
22 | child: SvgPicture.asset(
23 | widget.image,
24 | height: 500,
25 | width: 180,
26 | ),
27 | ),
28 | );
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/lib/content/invite_list_item.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/content/user.dart';
2 | import 'package:contraflutterkit/custom_widgets/contra_button.dart';
3 | import 'package:contraflutterkit/utils/colors.dart';
4 | import 'package:flutter/cupertino.dart';
5 | import 'package:flutter/material.dart';
6 | import 'package:flutter_svg/svg.dart';
7 |
8 | class InviteListItem extends StatelessWidget {
9 | InviteDetail inviteDetail;
10 |
11 | InviteListItem({required this.inviteDetail});
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | return Container(
16 | padding: EdgeInsets.all(16),
17 | margin: EdgeInsets.symmetric(vertical: 12),
18 | decoration: ShapeDecoration(
19 | color: white,
20 | shape: RoundedRectangleBorder(
21 | borderRadius: BorderRadius.all(Radius.circular(16)))),
22 | child: Row(
23 | children: [
24 | Expanded(
25 | flex: 1,
26 | child: SvgPicture.asset(
27 | inviteDetail.profile,
28 | width: 60,
29 | height: 60,
30 | ),
31 | ),
32 | SizedBox(
33 | width: 12,
34 | ),
35 | Expanded(
36 | flex: 4,
37 | child: Column(
38 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
39 | crossAxisAlignment: CrossAxisAlignment.start,
40 | children: [
41 | Text(
42 | inviteDetail.name,
43 | textAlign: TextAlign.start,
44 | style: TextStyle(
45 | fontSize: 21,
46 | color: wood_smoke,
47 | fontWeight: FontWeight.w800),
48 | ),
49 | SizedBox(
50 | height: 6,
51 | ),
52 | Text(
53 | inviteDetail.designation,
54 | textAlign: TextAlign.start,
55 | style: TextStyle(
56 | color: trout, fontWeight: FontWeight.w500, fontSize: 15),
57 | )
58 | ],
59 | ),
60 | ),
61 | ContraButton(
62 | height: 36,
63 | iconPath: "",
64 | color: inviteDetail.isInvited ? wood_smoke : lightening_yellow,
65 | isSuffix: false,
66 | isPrefix: false,
67 | size: 90,
68 | text: inviteDetail.isInvited ? "Invited" : "Invite",
69 | textSize: 12,
70 | borderColor: wood_smoke,
71 | textColor: inviteDetail.isInvited ? white : wood_smoke,
72 | callback: () {},
73 | shadowColor: wood_smoke,
74 | )
75 | ],
76 | ),
77 | );
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/lib/content/popular_courses_home_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/content/popular_courses_page.dart';
2 | import 'package:contraflutterkit/utils/colors.dart';
3 | import 'package:flutter/material.dart';
4 |
5 | class PopularCoursesHomePage extends StatefulWidget {
6 | @override
7 | _PopularCoursesHomePageState createState() => _PopularCoursesHomePageState();
8 | }
9 |
10 | class _PopularCoursesHomePageState extends State {
11 | int _currentIndex = 0;
12 | final List _childrenWidgets = [
13 | PopularCoursesPage(),
14 | PopularCoursesPage(),
15 | PopularCoursesPage(),
16 | PopularCoursesPage(),
17 | ];
18 |
19 | void _onItemTapped(int index) {
20 | setState(() {
21 | _currentIndex = index;
22 | });
23 | }
24 |
25 | @override
26 | Widget build(BuildContext context) {
27 | return Scaffold(
28 | body: Center(
29 | child: _childrenWidgets.elementAt(_currentIndex),
30 | ),
31 | bottomNavigationBar: BottomNavigationBar(
32 | items: [
33 | BottomNavigationBarItem(icon: Icon(Icons.home), label:("Home")),
34 | BottomNavigationBarItem(
35 | icon: Icon(Icons.search), label:("Search")),
36 | BottomNavigationBarItem(
37 | icon: Icon(Icons.chat_bubble), label:("Chat")),
38 | BottomNavigationBarItem(icon: Icon(Icons.info), label:("About")),
39 | ],
40 | currentIndex: _currentIndex,
41 | onTap: _onItemTapped,
42 | selectedItemColor: wood_smoke,
43 | unselectedItemColor: trout,
44 | showSelectedLabels: true,
45 | showUnselectedLabels: true,
46 | selectedIconTheme: IconThemeData(color: wood_smoke, opacity: 1),
47 | unselectedIconTheme: IconThemeData(color: trout, opacity: 0.6),
48 | selectedLabelStyle: TextStyle(
49 | color: wood_smoke, fontSize: 12, fontWeight: FontWeight.w800),
50 | unselectedLabelStyle:
51 | TextStyle(color: trout, fontSize: 12, fontWeight: FontWeight.w800),
52 | ),
53 | );
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/lib/content/user.dart:
--------------------------------------------------------------------------------
1 | import 'dart:ui';
2 |
3 | class InviteDetail {
4 | final String name;
5 | final String designation;
6 | final String profile;
7 | final bool isInvited;
8 |
9 | const InviteDetail(
10 | {required this.name,
11 | required this.designation,
12 | required this.profile,
13 | required this.isInvited});
14 | }
15 |
16 | class User {
17 | final String name;
18 | final String designation;
19 | final String profile;
20 | final Color bgColor;
21 | final Color textColor;
22 |
23 | const User(
24 | {required this.name,
25 | required this.designation,
26 | required this.profile,
27 | required this.textColor,
28 | required this.bgColor});
29 | }
30 |
--------------------------------------------------------------------------------
/lib/custom_widgets/badge_text.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 |
4 | class BadgeText extends StatelessWidget {
5 | final Color color;
6 | final String text;
7 | final double? size;
8 |
9 | const BadgeText({
10 | required this.color,
11 | required this.text,
12 | this.size,
13 | });
14 |
15 | @override
16 | Widget build(BuildContext context) {
17 | return Container(
18 | height: 24,
19 | width: 24,
20 | decoration: ShapeDecoration(
21 | color: color,
22 | shape: CircleBorder(side: BorderSide(color: color, width: 2))),
23 | child: Center(
24 | child: Text(
25 | text,
26 | style: TextStyle(
27 | color: white, fontWeight: FontWeight.bold, fontSize: 12),
28 | ),
29 | ),
30 | );
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/lib/custom_widgets/button_plain.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | class ButtonPlain extends StatelessWidget {
5 | final Color color;
6 | final Color borderColor;
7 | final Color textColor;
8 | final double? size;
9 | final String text;
10 | final VoidCallback onTap;
11 | final double? height;
12 | final double? textSize;
13 |
14 | const ButtonPlain(
15 | {required this.color,
16 | required this.textColor,
17 | required this.borderColor,
18 | this.size,
19 | required this.text,
20 | this.height,
21 | this.textSize,
22 | required this.onTap});
23 |
24 | @override
25 | Widget build(BuildContext context) {
26 | return ButtonTheme(
27 | height: height != null ? height! : 48,
28 | minWidth: size != null ? size! : MediaQuery.of(context).size.width,
29 | child: ElevatedButton(
30 | style: ElevatedButton.styleFrom(
31 | padding: EdgeInsets.all(16),
32 | backgroundColor: color,
33 | foregroundColor: textColor,
34 | shape: RoundedRectangleBorder(
35 | borderRadius: BorderRadius.circular(16.0),
36 | ),
37 | ),
38 | onPressed: onTap,
39 | child: Text(
40 | text,
41 | maxLines: 1,
42 | style: TextStyle(
43 | fontSize: textSize ?? 12,
44 | fontWeight: FontWeight.w800,
45 | ),
46 | ),
47 | ));
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/lib/custom_widgets/button_plain_with_shadow.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 | import 'package:flutter/material.dart';
4 |
5 | class ButtonPlainWithShadow extends StatelessWidget {
6 | final Color borderColor;
7 | final Color shadowColor;
8 | final Color color;
9 | final Color? textColor;
10 | final String text;
11 | final VoidCallback callback;
12 | final double? size;
13 | final double? height;
14 |
15 | const ButtonPlainWithShadow(
16 | {required this.borderColor,
17 | required this.shadowColor,
18 | required this.color,
19 | this.textColor,
20 | required this.text,
21 | this.size,
22 | this.height,
23 | required this.callback});
24 |
25 | @override
26 | Widget build(BuildContext context) {
27 | return GestureDetector(
28 | onTap: callback,
29 | child: Container(
30 | width: size != null ? size : MediaQuery.of(context).size.width,
31 | height: height != null ? height : 48,
32 | padding: EdgeInsets.symmetric(horizontal: 16),
33 | child: Center(
34 | child: Text(
35 | text,
36 | textAlign: TextAlign.center,
37 | style: TextStyle(
38 | color: textColor != null ? textColor : wood_smoke,
39 | fontSize: 21,
40 | fontWeight: FontWeight.w800),
41 | ),
42 | ),
43 | decoration: ShapeDecoration(
44 | shadows: [
45 | BoxShadow(
46 | color: shadowColor,
47 | offset: Offset(
48 | 0.0, // Move to right 10 horizontally
49 | 4.0, // Move to bottom 5 Vertically
50 | ),
51 | )
52 | ],
53 | color: color,
54 | shape: RoundedRectangleBorder(
55 | borderRadius: BorderRadius.all(Radius.circular(16)),
56 | side: BorderSide(color: borderColor, width: 2))),
57 | ),
58 | );
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/lib/custom_widgets/button_round_with_shadow.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 | import 'package:flutter_svg/svg.dart';
3 |
4 | class ButtonRoundWithShadow extends StatelessWidget {
5 | final Color borderColor;
6 | final Color shadowColor;
7 | final Color color;
8 | final String iconPath;
9 | final VoidCallback callback;
10 | final double size;
11 |
12 | const ButtonRoundWithShadow(
13 | {required this.borderColor,
14 | required this.shadowColor,
15 | required this.color,
16 | required this.iconPath,
17 | required this.size,
18 | required this.callback});
19 |
20 | @override
21 | Widget build(BuildContext context) {
22 | return GestureDetector(
23 | onTap: callback,
24 | child: Container(
25 | height: size == null ? null : size,
26 | width: size == null ? null : size,
27 | padding: EdgeInsets.all(size != null ? 8 : 16),
28 | decoration: ShapeDecoration(
29 | shadows: [
30 | BoxShadow(
31 | color: shadowColor,
32 | offset: Offset(
33 | 0.0, // Move to right 10 horizontally
34 | 4.0, // Move to bottom 5 Vertically
35 | ),
36 | )
37 | ],
38 | color: color,
39 | shape:
40 | CircleBorder(side: BorderSide(color: borderColor, width: 2))),
41 | child: SvgPicture.asset(
42 | iconPath,
43 | ),
44 | ),
45 | );
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/lib/custom_widgets/button_solid_with_icon.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter_svg/svg.dart';
5 |
6 | class ButtonPlainWithIcon extends StatelessWidget {
7 | final String text;
8 | final String iconPath;
9 | final VoidCallback callback;
10 | final bool isPrefix;
11 | final bool isSuffix;
12 | final Color color;
13 | final Color textColor;
14 | final double? size;
15 |
16 | const ButtonPlainWithIcon(
17 | {required this.text,
18 | required this.callback,
19 | required this.isPrefix,
20 | required this.isSuffix,
21 | required this.iconPath,
22 | required this.color,
23 | this.size,
24 | required this.textColor});
25 |
26 | @override
27 | Widget build(BuildContext context) {
28 | return ButtonTheme(
29 | minWidth: size != null ? size! : MediaQuery.of(context).size.width,
30 | child: ElevatedButton(
31 | style: ElevatedButton.styleFrom(
32 | padding: EdgeInsets.all(16),
33 | backgroundColor: color,
34 | foregroundColor: textColor,
35 | shape: RoundedRectangleBorder(
36 | borderRadius: BorderRadius.circular(16.0),
37 | ),
38 | ),
39 | onPressed: callback,
40 | child: Row(
41 | mainAxisAlignment: MainAxisAlignment.center,
42 | children: [
43 | if (isPrefix)
44 | Padding(
45 | padding: const EdgeInsets.symmetric(horizontal: 8.0),
46 | child: SvgPicture.asset(
47 | iconPath,
48 | color: white,
49 | ),
50 | ),
51 | Text(
52 | text,
53 | style: TextStyle(fontSize: 21.0, fontWeight: FontWeight.bold),
54 | ),
55 | if (isSuffix)
56 | Padding(
57 | padding: const EdgeInsets.symmetric(horizontal: 8.0),
58 | child: SvgPicture.asset(iconPath),
59 | ),
60 | ],
61 | ),
62 | ));
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/lib/custom_widgets/chip_widget.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter_svg/flutter_svg.dart';
5 |
6 | class ChipWidget extends StatelessWidget {
7 | final String text;
8 | final bool selected;
9 | final VoidCallback onTap;
10 |
11 | const ChipWidget(
12 | {required this.text, required this.selected, required this.onTap});
13 |
14 | @override
15 | Widget build(BuildContext context) {
16 | return GestureDetector(
17 | onTap: onTap,
18 | child: Container(
19 | height: 48,
20 | padding: EdgeInsets.all(12),
21 | child: Row(
22 | mainAxisSize: MainAxisSize.min,
23 | children: [
24 | Text(
25 | text,
26 | style:
27 | TextStyle(color: wood_smoke, fontWeight: FontWeight.bold),
28 | ),
29 | selected ? SvgPicture.asset("assets/icons/close.svg") : SizedBox()
30 | ],
31 | ),
32 | decoration: ShapeDecoration(
33 | color: selected ? pastel_pink : white,
34 | shape: RoundedRectangleBorder(
35 | borderRadius: BorderRadius.all(Radius.circular(44)),
36 | side: BorderSide(color: wood_smoke, width: 2)))),
37 | );
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/custom_widgets/chips_filter_widget.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/custom_widgets/chip_widget.dart';
2 | import 'package:contraflutterkit/utils/colors.dart';
3 | import 'package:flutter/cupertino.dart';
4 | import 'package:flutter/material.dart';
5 |
6 | class ChipsFilterWidget extends StatefulWidget {
7 | final List filters;
8 |
9 | const ChipsFilterWidget({required this.filters});
10 |
11 | @override
12 | _ChipsFilterWidgetState createState() => _ChipsFilterWidgetState();
13 | }
14 |
15 | class _ChipsFilterWidgetState extends State {
16 | List options = [];
17 | List selectedChoices = [];
18 |
19 | @override
20 | void initState() {
21 | super.initState();
22 | options = widget.filters;
23 | selectedChoices.add(0);
24 | }
25 |
26 | @override
27 | Widget build(BuildContext context) {
28 | return Padding(
29 | padding: const EdgeInsets.only(left: 12.0),
30 | child: Wrap(
31 | alignment: WrapAlignment.start,
32 | spacing: 12,
33 | runSpacing: 12,
34 | children: List.generate(
35 | options.length,
36 | (int index) {
37 | return ChipWidget(
38 | selected: selectedChoices.contains(index),
39 | text: options[index],
40 | onTap: () {
41 | setState(() {
42 | selectedChoices.contains(index)
43 | ? selectedChoices.remove(index)
44 | : selectedChoices.add(index);
45 | });
46 | },
47 | );
48 | ChoiceChip(
49 | disabledColor: white,
50 | selectedColor: pastel_pink,
51 | padding: EdgeInsets.all(12),
52 | avatarBorder: RoundedRectangleBorder(
53 | borderRadius: BorderRadius.circular(16),
54 | side: BorderSide(color: wood_smoke, width: 2)),
55 | label: Text(
56 | options[index],
57 | style: TextStyle(
58 | color: wood_smoke,
59 | fontWeight: FontWeight.w800,
60 | fontSize: 12),
61 | ),
62 | selected: selectedChoices.contains(index),
63 | onSelected: (bool selected) {
64 | setState(() {
65 | selectedChoices.contains(index)
66 | ? selectedChoices.remove(index)
67 | : selectedChoices.add(index);
68 | });
69 | },
70 | );
71 | },
72 | ).toList(),
73 | ),
74 | );
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/lib/custom_widgets/circle_dot_widget.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 |
3 | class CircleDotWidget extends StatelessWidget {
4 | final bool isActive;
5 | final Color color;
6 | final Color borderColor;
7 |
8 | const CircleDotWidget(
9 | {required this.isActive, required this.color, required this.borderColor});
10 |
11 | @override
12 | Widget build(BuildContext context) {
13 | return AnimatedContainer(
14 | duration: Duration(milliseconds: 150),
15 | margin: EdgeInsets.symmetric(horizontal: 8),
16 | height: isActive ? 14 : 10,
17 | width: isActive ? 14 : 10,
18 | decoration: BoxDecoration(
19 | border: Border.all(width: 2.0, color: borderColor),
20 | color: color,
21 | shape: BoxShape.circle),
22 | );
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/lib/custom_widgets/color_widget.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 |
3 | class ColorWidget extends StatelessWidget {
4 | final Color borderColor;
5 | final Color shadowColor;
6 | final Color bgColor;
7 | final bool selected;
8 | final VoidCallback onTap;
9 |
10 | const ColorWidget(
11 | {required this.borderColor,
12 | required this.bgColor,
13 | required this.shadowColor,
14 | required this.selected,
15 | required this.onTap});
16 |
17 | @override
18 | Widget build(BuildContext context) {
19 | return GestureDetector(
20 | onTap: onTap,
21 | child: Container(
22 | height: 34,
23 | width: 34,
24 | decoration: ShapeDecoration(
25 | shadows: [
26 | BoxShadow(
27 | color: shadowColor,
28 | offset: Offset(
29 | 0.0, // Move to right 10 horizontally
30 | selected ? 4.0 : 0.0, // Move to bottom 5 Vertically
31 | ),
32 | )
33 | ],
34 | color: bgColor,
35 | shape:
36 | CircleBorder(side: BorderSide(color: borderColor, width: 2))),
37 | ),
38 | );
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/lib/custom_widgets/colors_select_widget.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 | import 'package:flutter/material.dart';
4 |
5 | import 'color_widget.dart';
6 |
7 | class ColorsSelectWidget extends StatefulWidget {
8 | final List colors;
9 |
10 | const ColorsSelectWidget({required this.colors});
11 |
12 | @override
13 | _ColorsSelectWidgetState createState() => _ColorsSelectWidgetState();
14 | }
15 |
16 | class _ColorsSelectWidgetState extends State {
17 | List options = [];
18 | List selectedChoices = [];
19 |
20 | @override
21 | void initState() {
22 | super.initState();
23 | options = widget.colors;
24 | selectedChoices.add(0);
25 | }
26 |
27 | @override
28 | Widget build(BuildContext context) {
29 | return Padding(
30 | padding: const EdgeInsets.only(right: 16.0, top: 16.0),
31 | child: Wrap(
32 | spacing: 12,
33 | children: List.generate(
34 | options.length,
35 | (int index) {
36 | return ColorWidget(
37 | bgColor: options[index],
38 | borderColor: wood_smoke,
39 | shadowColor: wood_smoke,
40 | selected: selectedChoices.contains(index),
41 | onTap: () {
42 | setState(() {
43 | selectedChoices.contains(index)
44 | ? selectedChoices.remove(index)
45 | : selectedChoices.add(index);
46 | });
47 | },
48 | );
49 | },
50 | ).toList(),
51 | ),
52 | );
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/lib/custom_widgets/contra_button_round.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 | import 'package:flutter_svg/svg.dart';
3 |
4 | class ContraButtonRound extends StatelessWidget {
5 | final Color borderColor;
6 | final Color shadowColor;
7 | final Color color;
8 | final Color? iconColor;
9 | final String iconPath;
10 | final VoidCallback callback;
11 | final double? size;
12 |
13 | const ContraButtonRound(
14 | {required this.borderColor,
15 | required this.shadowColor,
16 | required this.color,
17 | this.iconColor,
18 | required this.iconPath,
19 | this.size,
20 | required this.callback});
21 |
22 | @override
23 | Widget build(BuildContext context) {
24 | return GestureDetector(
25 | onTap: callback,
26 | child: Container(
27 | height: size == null ? null : size,
28 | width: size == null ? null : size,
29 | padding: EdgeInsets.all(size != null ? 8 : 16),
30 | decoration: ShapeDecoration(
31 | shadows: [
32 | BoxShadow(
33 | color: shadowColor,
34 | offset: Offset(
35 | 0.0, // Move to right 10 horizontally
36 | 4.0, // Move to bottom 5 Vertically
37 | ),
38 | )
39 | ],
40 | color: color,
41 | shape:
42 | CircleBorder(side: BorderSide(color: borderColor, width: 2))),
43 | child: SvgPicture.asset(
44 | iconPath,
45 | ),
46 | ),
47 | );
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/lib/custom_widgets/contra_input_box.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter_svg/svg.dart';
5 |
6 | class ContraInputBox extends StatelessWidget {
7 | final String hintText;
8 | final String iconPath;
9 | final bool showPrefix;
10 |
11 | const ContraInputBox(
12 | {required this.hintText,
13 | required this.iconPath,
14 | required this.showPrefix});
15 |
16 | @override
17 | Widget build(BuildContext context) {
18 | return Container(
19 | child: TextField(
20 | decoration: InputDecoration(
21 | hintText: hintText,
22 | hintStyle: TextStyle(
23 | fontSize: 21, fontWeight: FontWeight.w500, color: wood_smoke),
24 | contentPadding: EdgeInsets.all(16),
25 | enabledBorder: OutlineInputBorder(
26 | borderSide: BorderSide(width: 2, color: black),
27 | borderRadius: BorderRadius.all(Radius.circular(16))),
28 | disabledBorder: OutlineInputBorder(
29 | borderSide: BorderSide(width: 2, color: black),
30 | borderRadius: BorderRadius.all(Radius.circular(16))),
31 | focusedBorder: OutlineInputBorder(
32 | borderSide: BorderSide(width: 2, color: black),
33 | borderRadius: BorderRadius.all(Radius.circular(16))),
34 | border: OutlineInputBorder(
35 | borderSide: BorderSide(width: 2, color: black),
36 | borderRadius: BorderRadius.all(Radius.circular(16))),
37 | prefixIcon: showPrefix
38 | ? Padding(
39 | padding: const EdgeInsets.all(16.0),
40 | child: SvgPicture.asset(
41 | iconPath,
42 | height: 24,
43 | width: 24,
44 | ),
45 | )
46 | : null),
47 | ),
48 | );
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/lib/custom_widgets/custom_app_bar.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | class CustomAppBar extends PreferredSize {
5 | final double height;
6 | final Widget child;
7 |
8 | CustomAppBar({required this.height, required this.child})
9 | : super(preferredSize: Size.fromHeight(height), child: child);
10 |
11 | @override
12 | Size get preferredSize => Size.fromHeight(height);
13 |
14 | @override
15 | Widget build(BuildContext context) {
16 | return Container(
17 | height: preferredSize.height,
18 | alignment: Alignment.bottomCenter,
19 | child: child);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/custom_widgets/custom_input_text.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 | import 'package:flutter/material.dart';
4 |
5 | class CustomInputText extends StatelessWidget {
6 | final String text;
7 | final Color borderColor;
8 | final Color shadowColor;
9 | final Color color;
10 | final VoidCallback callback;
11 |
12 | const CustomInputText(
13 | {required this.text,
14 | required this.borderColor,
15 | required this.color,
16 | required this.shadowColor,
17 | required this.callback});
18 |
19 | @override
20 | Widget build(BuildContext context) {
21 | return Container(
22 | decoration: ShapeDecoration(
23 | color: color,
24 | shape: RoundedRectangleBorder(
25 | borderRadius: BorderRadius.all(Radius.circular(60)),
26 | side: BorderSide(color: borderColor, width: 2))),
27 | child: Row(
28 | children: [
29 | Expanded(
30 | child: TextField(
31 | decoration: InputDecoration(
32 | hintText: text,
33 | hintStyle: TextStyle(
34 | fontSize: 17,
35 | fontWeight: FontWeight.w500,
36 | color: santas_gray),
37 | contentPadding: EdgeInsets.all(16),
38 | enabledBorder: OutlineInputBorder(
39 | borderSide: BorderSide.none,
40 | ),
41 | disabledBorder: OutlineInputBorder(
42 | borderSide: BorderSide.none,
43 | ),
44 | focusedBorder: OutlineInputBorder(
45 | borderSide: BorderSide.none,
46 | ),
47 | border: OutlineInputBorder(
48 | borderSide: BorderSide.none,
49 | ),
50 | ),
51 | ),
52 | ),
53 | IconButton(
54 | color: wood_smoke,
55 | icon: Icon(Icons.keyboard_voice),
56 | onPressed: () {},
57 | ),
58 | IconButton(
59 | color: wood_smoke,
60 | icon: Icon(Icons.send),
61 | onPressed: callback,
62 | )
63 | ],
64 | ),
65 | );
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/lib/custom_widgets/custom_list_item.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | class CustomListItem extends StatelessWidget {
5 | final List list;
6 |
7 | const CustomListItem({required this.list});
8 |
9 | @override
10 | Widget build(BuildContext context) {
11 | return ListView.builder(
12 | padding: EdgeInsets.symmetric(vertical: 24),
13 | shrinkWrap: true,
14 | physics: NeverScrollableScrollPhysics(),
15 | reverse: false,
16 | itemCount: list.length,
17 | itemBuilder: (context, index) {
18 | return Container(
19 | padding: EdgeInsets.symmetric(vertical: 8),
20 | child: Row(
21 | children: [
22 | Icon(
23 | Icons.check,
24 | color: Colors.white,
25 | ),
26 | Text(
27 | list[index],
28 | style: TextStyle(color: Colors.white, fontSize: 21),
29 | )
30 | ],
31 | ),
32 | );
33 | });
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/lib/custom_widgets/custom_search_text.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter_svg/svg.dart';
5 |
6 | class CustomSearchText extends StatelessWidget {
7 | final String text;
8 | final String iconPath;
9 | final bool enable;
10 | final VoidCallback callback;
11 | final TextEditingController controller;
12 |
13 | const CustomSearchText(
14 | {required this.text,
15 | required this.iconPath,
16 | required this.enable,
17 | required this.callback,
18 | required this.controller});
19 |
20 | @override
21 | Widget build(BuildContext context) {
22 | return Container(
23 | decoration: ShapeDecoration(
24 | shadows: [
25 | BoxShadow(
26 | color: wood_smoke,
27 | offset: Offset(
28 | 0.0, // Move to right 10 horizontally
29 | 2.0, // Move to bottom 5 Vertically
30 | ),
31 | )
32 | ],
33 | color: white,
34 | shape: RoundedRectangleBorder(
35 | borderRadius: BorderRadius.all(Radius.circular(16)),
36 | side: BorderSide(color: wood_smoke, width: 2))),
37 | child: TextField(
38 | onTap: callback,
39 | readOnly: !enable,
40 | enableInteractiveSelection: enable,
41 | autofocus: false,
42 | controller: controller,
43 | enableSuggestions: enable,
44 | decoration: InputDecoration(
45 | hintText: text,
46 | hintStyle: TextStyle(
47 | fontSize: 21, fontWeight: FontWeight.w500, color: wood_smoke),
48 | contentPadding: EdgeInsets.all(16),
49 | enabledBorder: OutlineInputBorder(
50 | borderSide: BorderSide.none,
51 | borderRadius: BorderRadius.all(Radius.circular(16))),
52 | disabledBorder: OutlineInputBorder(
53 | borderSide: BorderSide.none,
54 | borderRadius: BorderRadius.all(Radius.circular(16))),
55 | focusedBorder: OutlineInputBorder(
56 | borderSide: BorderSide.none,
57 | borderRadius: BorderRadius.all(Radius.circular(16))),
58 | border: OutlineInputBorder(
59 | borderSide: BorderSide.none,
60 | borderRadius: BorderRadius.all(Radius.circular(16))),
61 | suffixIcon: Padding(
62 | padding: const EdgeInsets.all(16.0),
63 | child: SvgPicture.asset(
64 | iconPath,
65 | height: 24,
66 | width: 24,
67 | ),
68 | )),
69 | ),
70 | );
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/lib/custom_widgets/image_round_text.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 |
4 | class RoundImageWithText extends StatelessWidget {
5 | final Color borderColor;
6 | final Color shadowColor;
7 | final Color color;
8 | final String text;
9 | final double size;
10 |
11 | const RoundImageWithText({
12 | required this.borderColor,
13 | required this.shadowColor,
14 | required this.color,
15 | required this.size,
16 | required this.text,
17 | });
18 |
19 | @override
20 | Widget build(BuildContext context) {
21 | return Container(
22 | width: size,
23 | height: size,
24 | decoration: ShapeDecoration(
25 | color: color,
26 | shape: CircleBorder(side: BorderSide(color: borderColor, width: 2))),
27 | child: Center(
28 | child: Text(
29 | text,
30 | style:
31 | TextStyle(fontSize: 24, fontWeight: FontWeight.w800, color: white),
32 | )),
33 | );
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/lib/custom_widgets/onboarding_page_text_widget.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 |
3 | class OnboardingPageTextWidget extends StatelessWidget {
4 | final String title;
5 | final String detail;
6 | final Alignment alignment;
7 |
8 | const OnboardingPageTextWidget(
9 | {required this.title, required this.detail, required this.alignment});
10 |
11 | @override
12 | Widget build(BuildContext context) {
13 | return Container(
14 | child: Text(title),
15 | );
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/lib/custom_widgets/size_widget.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 |
4 | class SizeWidget extends StatelessWidget {
5 | final Color borderColor;
6 | final Color shadowColor;
7 | final bool selected;
8 | final String text;
9 | final VoidCallback onTap;
10 |
11 | const SizeWidget(
12 | {required this.borderColor,
13 | required this.shadowColor,
14 | required this.selected,
15 | required this.text,
16 | required this.onTap});
17 |
18 | @override
19 | Widget build(BuildContext context) {
20 | return GestureDetector(
21 | onTap: onTap,
22 | child: Container(
23 | height: 48,
24 | width: 48,
25 | decoration: ShapeDecoration(
26 | shadows: [
27 | BoxShadow(
28 | color: shadowColor,
29 | offset: Offset(
30 | 0.0, // Move to right 10 horizontally
31 | selected ? 4.0 : 0.0, // Move to bottom 5 Vertically
32 | ),
33 | )
34 | ],
35 | color: selected ? lightening_yellow : white,
36 | shape: RoundedRectangleBorder(
37 | borderRadius: BorderRadius.all(Radius.circular(16)),
38 | side: BorderSide(color: borderColor, width: 2))),
39 | child: Center(
40 | child: Text(
41 | text,
42 | textAlign: TextAlign.center,
43 | style: TextStyle(
44 | fontWeight: FontWeight.w800, fontSize: 24, color: wood_smoke),
45 | ),
46 | ),
47 | ),
48 | );
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/lib/custom_widgets/sizes_select_widget.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/custom_widgets/size_widget.dart';
2 | import 'package:contraflutterkit/utils/colors.dart';
3 | import 'package:flutter/cupertino.dart';
4 | import 'package:flutter/material.dart';
5 |
6 | class SizesSelectWidget extends StatefulWidget {
7 | final List filters;
8 |
9 | const SizesSelectWidget({required this.filters});
10 |
11 | @override
12 | _SizesSelectWidgetState createState() => _SizesSelectWidgetState();
13 | }
14 |
15 | class _SizesSelectWidgetState extends State {
16 | List options = [];
17 | List selectedChoices = [];
18 |
19 | @override
20 | void initState() {
21 | super.initState();
22 | options = widget.filters;
23 | selectedChoices.add(0);
24 | }
25 |
26 | @override
27 | Widget build(BuildContext context) {
28 | return Padding(
29 | padding: const EdgeInsets.only(top: 8.0),
30 | child: Wrap(
31 | spacing: 12,
32 | children: List.generate(
33 | options.length,
34 | (int index) {
35 | return SizeWidget(
36 | borderColor: wood_smoke,
37 | shadowColor: wood_smoke,
38 | text: options[index],
39 | selected: selectedChoices.contains(index),
40 | onTap: () {
41 | setState(() {
42 | selectedChoices.contains(index)
43 | ? selectedChoices.remove(index)
44 | : selectedChoices.add(index);
45 | });
46 | },
47 | );
48 | },
49 | ).toList(),
50 | ),
51 | );
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/lib/custom_widgets/star_widget.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/shopping/category_item.dart';
2 | import 'package:contraflutterkit/utils/colors.dart';
3 | import 'package:flutter/cupertino.dart';
4 | import 'package:flutter/material.dart';
5 |
6 | class StartWidget extends StatelessWidget {
7 | final Category category;
8 |
9 | const StartWidget({required this.category});
10 |
11 | @override
12 | Widget build(BuildContext context) {
13 | return Container(
14 | padding: EdgeInsets.all(12),
15 | child: Column(
16 | children: [
17 | Container(
18 | height: 80,
19 | width: 80,
20 | decoration: ShapeDecoration(
21 | shadows: [
22 | BoxShadow(
23 | color: wood_smoke,
24 | offset: Offset(
25 | 0.0, // Move to right 10 horizontally
26 | 2.0, // Move to bottom 5 Vertically
27 | ),
28 | )
29 | ],
30 | color: category.bgColor,
31 | shape: RoundedRectangleBorder(
32 | borderRadius: BorderRadius.all(Radius.circular(16)),
33 | side: BorderSide(color: wood_smoke, width: 2))),
34 | child: Icon(
35 | Icons.star_border,
36 | size: 32,
37 | color: category.startColor,
38 | ),
39 | ),
40 | SizedBox(
41 | height: 8,
42 | ),
43 | Text(
44 | category.name,
45 | style: TextStyle(fontWeight: FontWeight.w800, fontSize: 17),
46 | )
47 | ],
48 | ),
49 | );
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/lib/login/contra_text.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 |
4 | class ContraText extends StatelessWidget {
5 | final Alignment alignment;
6 | final String text;
7 | final double? size;
8 | final Color? color;
9 | final FontWeight? weight;
10 | final TextAlign? textAlign;
11 |
12 | const ContraText(
13 | {required this.alignment,
14 | required this.text,
15 | this.size,
16 | this.color,
17 | this.weight,
18 | this.textAlign});
19 |
20 | @override
21 | Widget build(BuildContext context) {
22 | return Align(
23 | alignment: alignment,
24 | child: Text(
25 | text,
26 | textAlign: textAlign != null ? textAlign : TextAlign.start,
27 | style: TextStyle(
28 | fontSize: size == null ? 36 : size,
29 | fontWeight: weight != null ? weight : FontWeight.w800,
30 | color: color != null ? color : black),
31 | ),
32 | );
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/lib/login/input_text_box_bigger.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter_svg/svg.dart';
5 |
6 | class InputTextBoxBigger extends StatelessWidget {
7 | final String text;
8 | final String iconPath;
9 |
10 | const InputTextBoxBigger({required this.text,required this.iconPath});
11 |
12 | @override
13 | Widget build(BuildContext context) {
14 | return Container(
15 | height: 150,
16 | alignment: Alignment.center,
17 | child: TextField(
18 | keyboardType: TextInputType.multiline,
19 | maxLines: 4,
20 | textAlign: TextAlign.start,
21 | textAlignVertical: TextAlignVertical.top,
22 | decoration: InputDecoration(
23 | hintText: text,
24 | hintStyle: TextStyle(
25 | fontSize: 21, fontWeight: FontWeight.w500, color: wood_smoke),
26 | contentPadding: EdgeInsets.all(16),
27 | enabledBorder: OutlineInputBorder(
28 | borderSide: BorderSide(width: 2, color: black),
29 | borderRadius: BorderRadius.all(Radius.circular(16))),
30 | disabledBorder: OutlineInputBorder(
31 | borderSide: BorderSide(width: 2, color: black),
32 | borderRadius: BorderRadius.all(Radius.circular(16))),
33 | focusedBorder: OutlineInputBorder(
34 | borderSide: BorderSide(width: 2, color: black),
35 | borderRadius: BorderRadius.all(Radius.circular(16))),
36 | border: OutlineInputBorder(
37 | borderSide: BorderSide(width: 2, color: black),
38 | borderRadius: BorderRadius.all(Radius.circular(16))),
39 | prefixIcon: Container(
40 | height: 128,
41 | width: 48,
42 | alignment: Alignment.topLeft,
43 | margin: EdgeInsets.all(4),
44 | child: Padding(
45 | padding: const EdgeInsets.only(left: 12.0, top: 16.0),
46 | child: SvgPicture.asset(
47 | iconPath,
48 | height: 24,
49 | width: 24,
50 | ),
51 | ),
52 | )),
53 | ),
54 | );
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/lib/login/login_input_email_text.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter_svg/svg.dart';
5 |
6 | class LoginEmailText extends StatelessWidget {
7 | final String text;
8 | final String iconPath;
9 |
10 | const LoginEmailText({required this.text,required this.iconPath});
11 |
12 | @override
13 | Widget build(BuildContext context) {
14 | return Container(
15 | child: TextField(
16 | decoration: InputDecoration(
17 | hintText: text,
18 | hintStyle: TextStyle(
19 | fontSize: 21, fontWeight: FontWeight.w500, color: wood_smoke),
20 | contentPadding: EdgeInsets.all(16),
21 | enabledBorder: OutlineInputBorder(
22 | borderSide: BorderSide(width: 2, color: black),
23 | borderRadius: BorderRadius.all(Radius.circular(16))),
24 | disabledBorder: OutlineInputBorder(
25 | borderSide: BorderSide(width: 2, color: black),
26 | borderRadius: BorderRadius.all(Radius.circular(16))),
27 | focusedBorder: OutlineInputBorder(
28 | borderSide: BorderSide(width: 2, color: black),
29 | borderRadius: BorderRadius.all(Radius.circular(16))),
30 | border: OutlineInputBorder(
31 | borderSide: BorderSide(width: 2, color: black),
32 | borderRadius: BorderRadius.all(Radius.circular(16))),
33 | prefixIcon: Padding(
34 | padding: const EdgeInsets.all(16.0),
35 | child: SvgPicture.asset(
36 | iconPath,
37 | height: 24,
38 | width: 24,
39 | ),
40 | )),
41 | ),
42 | );
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/lib/login/login_input_password_text.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter_svg/svg.dart';
5 |
6 | class LoginPasswordText extends StatelessWidget {
7 | final String text;
8 | final String iconPath;
9 |
10 | const LoginPasswordText({required this.text, required this.iconPath});
11 |
12 | @override
13 | Widget build(BuildContext context) {
14 | return Container(
15 | child: TextField(
16 | obscureText: true,
17 | decoration: InputDecoration(
18 | hintText: '\u25CF \u25CF \u25CF \u25CF \u25CF \u25CF',
19 | hintStyle: TextStyle(
20 | fontSize: 18,
21 | fontWeight: FontWeight.bold,
22 | color: wood_smoke,
23 | ),
24 | contentPadding: EdgeInsets.all(16),
25 | enabledBorder: OutlineInputBorder(
26 | borderSide: BorderSide(width: 2, color: black),
27 | borderRadius: BorderRadius.all(Radius.circular(16))),
28 | disabledBorder: OutlineInputBorder(
29 | borderSide: BorderSide(width: 2, color: black),
30 | borderRadius: BorderRadius.all(Radius.circular(16))),
31 | focusedBorder: OutlineInputBorder(
32 | borderSide: BorderSide(width: 2, color: black),
33 | borderRadius: BorderRadius.all(Radius.circular(16))),
34 | border: OutlineInputBorder(
35 | borderSide: BorderSide(width: 2, color: black),
36 | borderRadius: BorderRadius.all(Radius.circular(16))),
37 | prefixIcon: Padding(
38 | padding: const EdgeInsets.all(16.0),
39 | child: SvgPicture.asset(
40 | iconPath,
41 | height: 24,
42 | width: 24,
43 | ),
44 | )),
45 | ),
46 | );
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/lib/login/rich_text.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 |
4 | class CustomRichText extends StatelessWidget {
5 | final Alignment alignment;
6 | final String text_one;
7 | final String text_second;
8 |
9 | const CustomRichText(
10 | {required this.alignment,
11 | required this.text_one,
12 | required this.text_second});
13 |
14 | @override
15 | Widget build(BuildContext context) {
16 | return Align(
17 | alignment: alignment,
18 | child: RichText(
19 | text: TextSpan(children: [
20 | TextSpan(
21 | text: text_one,
22 | style: TextStyle(
23 | fontWeight: FontWeight.w500,
24 | fontSize: 13,
25 | color: black,
26 | )),
27 | TextSpan(
28 | text: text_second,
29 | style: TextStyle(
30 | fontSize: 13, fontWeight: FontWeight.w500, color: flamingo))
31 | ]),
32 | ),
33 | );
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/lib/maps/location.dart:
--------------------------------------------------------------------------------
1 | class Location {
2 | String name;
3 | String address;
4 | String distance;
5 |
6 | Location({required this.name, required this.address, required this.distance});
7 | }
8 |
--------------------------------------------------------------------------------
/lib/maps/location_list_item.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/custom_widgets/button_round_with_shadow.dart';
2 | import 'package:contraflutterkit/login/contra_text.dart';
3 | import 'package:contraflutterkit/maps/location.dart';
4 | import 'package:contraflutterkit/maps/map_widget.dart';
5 | import 'package:contraflutterkit/utils/colors.dart';
6 | import 'package:flutter/cupertino.dart';
7 | import 'package:flutter/material.dart';
8 |
9 | class LocationListItem extends StatelessWidget {
10 | Location location;
11 |
12 | LocationListItem({required this.location});
13 |
14 | @override
15 | Widget build(BuildContext context) {
16 | return Container(
17 | padding: EdgeInsets.symmetric(vertical: 12),
18 | child: Column(
19 | children: [
20 | Container(
21 | width: MediaQuery.of(context).size.width,
22 | height: 160,
23 | child: MapWidget(
24 | distance: location.distance,
25 | isDetail: false,
26 | ),
27 | ),
28 | SizedBox(
29 | height: 24,
30 | ),
31 | Row(
32 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
33 | children: [
34 | Column(
35 | crossAxisAlignment: CrossAxisAlignment.start,
36 | children: [
37 | ContraText(
38 | color: wood_smoke,
39 | size: 24,
40 | weight: FontWeight.w800,
41 | alignment: Alignment.center,
42 | text: "Space 8",
43 | ),
44 | ContraText(
45 | color: trout,
46 | size: 21,
47 | weight: FontWeight.w500,
48 | alignment: Alignment.center,
49 | text: "Wolf Crater, 897, Marsh",
50 | )
51 | ],
52 | ),
53 | ButtonRoundWithShadow(
54 | size: 60,
55 | borderColor: wood_smoke,
56 | shadowColor: wood_smoke,
57 | callback: () {},
58 | color: white,
59 | iconPath: "assets/icons/ic_navigation.svg",
60 | )
61 | ],
62 | )
63 | ],
64 | ),
65 | );
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/lib/maps/location_listing.dart:
--------------------------------------------------------------------------------
1 | import 'dart:io';
2 |
3 | import 'package:contraflutterkit/custom_widgets/button_round_with_shadow.dart';
4 | import 'package:contraflutterkit/custom_widgets/custom_app_bar.dart';
5 | import 'package:contraflutterkit/custom_widgets/custom_header.dart';
6 | import 'package:contraflutterkit/maps/location_list_item.dart';
7 | import 'package:contraflutterkit/utils/colors.dart';
8 | import 'package:flutter/cupertino.dart';
9 | import 'package:flutter/foundation.dart';
10 | import 'package:flutter/material.dart';
11 |
12 | import 'location.dart';
13 |
14 | class LocationListingPage extends StatefulWidget {
15 | @override
16 | _LocationListingPageState createState() => _LocationListingPageState();
17 | }
18 |
19 | class _LocationListingPageState extends State {
20 | List list = [];
21 |
22 | @override
23 | void initState() {
24 | super.initState();
25 | list.add(Location(
26 | address: "Wolf Crater, 897, Marsh", name: "Space 8", distance: "1.5"));
27 | list.add(Location(
28 | address: "Wolf Crater, 897, Marsh", name: "Space 8", distance: "2.0"));
29 | list.add(Location(
30 | address: "Wolf Crater, 897, Marsh", name: "Space 8", distance: "2.5"));
31 | }
32 |
33 | @override
34 | Widget build(BuildContext context) {
35 | return Scaffold(
36 | appBar: CustomAppBar(
37 | height: 200,
38 | child: Row(
39 | children: [
40 | kIsWeb || Platform.isIOS
41 | ? SizedBox(
42 | width: 24,
43 | )
44 | : SizedBox(
45 | width: 24,
46 | ),
47 | kIsWeb || Platform.isIOS
48 | ? ButtonRoundWithShadow(
49 | size: 48,
50 | borderColor: wood_smoke,
51 | color: white,
52 | callback: () {
53 | Navigator.pop(context);
54 | },
55 | shadowColor: wood_smoke,
56 | iconPath: "assets/icons/close.svg")
57 | : SizedBox(),
58 | CustomHeader(
59 | fg_color: wood_smoke,
60 | isTwoLines: kIsWeb ? false : true,
61 | bg_color: white,
62 | color: wood_smoke,
63 | lineOneText: "Your",
64 | lineTwotext: "Directions",
65 | ),
66 | ],
67 | ),
68 | ),
69 | body: ListView.builder(
70 | padding: EdgeInsets.symmetric(horizontal: 24),
71 | itemBuilder: (BuildContext cotext, int index) {
72 | return LocationListItem(
73 | location: list[index],
74 | );
75 | },
76 | itemCount: list.length,
77 | ),
78 | );
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/lib/maps/map_main_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class LocationMapMainPage extends StatefulWidget {
4 | @override
5 | _LocationMapMainPageState createState() => _LocationMapMainPageState();
6 | }
7 |
8 | class _LocationMapMainPageState extends State {
9 | @override
10 | void initState() {
11 | super.initState();
12 | }
13 |
14 | @override
15 | Widget build(BuildContext context) {
16 | return Scaffold(
17 | appBar: AppBar(
18 | title: Text("Map and Location"),
19 | ),
20 | body: SingleChildScrollView(
21 | child: Column(
22 | children: [
23 | ListTile(
24 | contentPadding: EdgeInsets.all(20),
25 | trailing: Icon(Icons.navigate_next),
26 | title: Text("Locations Listing"),
27 | onTap: () {
28 | Navigator.pushNamed(context, "/location_list_page");
29 | },
30 | ),
31 | ListTile(
32 | contentPadding: EdgeInsets.all(20),
33 | trailing: Icon(Icons.navigate_next),
34 | title: Text("Location Detail Page"),
35 | onTap: () {
36 | Navigator.pushNamed(context, "/location_detail_page");
37 | },
38 | ),
39 | ],
40 | ),
41 | ),
42 | );
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/lib/maps/map_widget.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | import 'package:contraflutterkit/login/contra_text.dart';
4 | import 'package:contraflutterkit/utils/colors.dart';
5 | import 'package:flutter/cupertino.dart';
6 | import 'package:flutter/material.dart';
7 | import 'package:google_maps_flutter/google_maps_flutter.dart';
8 |
9 | class MapWidget extends StatefulWidget {
10 | String distance;
11 | bool isDetail;
12 |
13 | MapWidget({required this.distance, required this.isDetail});
14 |
15 | @override
16 | _MapWidgetState createState() => _MapWidgetState();
17 | }
18 |
19 | class _MapWidgetState extends State {
20 | Completer _controller = Completer();
21 | static const LatLng _center = const LatLng(45.521563, -122.677433);
22 |
23 | void _onMapCreated(GoogleMapController controller) {
24 | _controller.complete(controller);
25 | }
26 |
27 | @override
28 | void initState() {
29 | super.initState();
30 | }
31 |
32 | @override
33 | Widget build(BuildContext context) {
34 | return Container(
35 | decoration: ShapeDecoration(
36 | shadows: [
37 | BoxShadow(
38 | color: wood_smoke,
39 | offset: Offset(0, 2),
40 | )
41 | ],
42 | color: white,
43 | shape: RoundedRectangleBorder(
44 | borderRadius: BorderRadius.all(Radius.circular(16)),
45 | side: BorderSide(
46 | color: wood_smoke,
47 | width: 2,
48 | ))),
49 | child: Stack(
50 | children: [
51 | Container(
52 | padding: EdgeInsets.all(4),
53 | child: GoogleMap(
54 | onMapCreated: _onMapCreated,
55 | initialCameraPosition: CameraPosition(
56 | target: _center,
57 | zoom: 11.0,
58 | ),
59 | ),
60 | ),
61 | Positioned(
62 | right: 24,
63 | bottom: 24,
64 | child: Container(
65 | width: 64,
66 | padding: EdgeInsets.all(4),
67 | height: 64,
68 | decoration: BoxDecoration(
69 | color: wood_smoke,
70 | borderRadius: BorderRadius.all(Radius.circular(16))),
71 | child: Column(
72 | children: [
73 | ContraText(
74 | alignment: Alignment.center,
75 | text: "1.5",
76 | size: 22,
77 | color: white,
78 | weight: FontWeight.bold,
79 | ),
80 | ContraText(
81 | alignment: Alignment.center,
82 | text: "Kms",
83 | size: 15,
84 | color: white,
85 | weight: FontWeight.bold,
86 | )
87 | ],
88 | ),
89 | ),
90 | )
91 | ],
92 | ),
93 | );
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/lib/menu/menu_settings_main_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class MenuSettingsMainPage extends StatefulWidget {
4 | @override
5 | _MenuSettingsMainPageState createState() => _MenuSettingsMainPageState();
6 | }
7 |
8 | class _MenuSettingsMainPageState extends State {
9 | @override
10 | void initState() {
11 | super.initState();
12 | }
13 |
14 | @override
15 | Widget build(BuildContext context) {
16 | return Scaffold(
17 | appBar: AppBar(
18 | title: Text("Menu and Settings"),
19 | ),
20 | body: SingleChildScrollView(
21 | child: Column(
22 | children: [
23 | ListTile(
24 | contentPadding: EdgeInsets.all(20),
25 | trailing: Icon(Icons.navigate_next),
26 | title: Text("Menu Type One"),
27 | onTap: () {
28 | Navigator.pushNamed(context, "/menu_type_one");
29 | },
30 | ),
31 | ListTile(
32 | contentPadding: EdgeInsets.all(20),
33 | trailing: Icon(Icons.navigate_next),
34 | title: Text("Menu Type Two"),
35 | onTap: () {
36 | Navigator.pushNamed(context, "/menu_type_two");
37 | },
38 | ),
39 | ListTile(
40 | contentPadding: EdgeInsets.all(20),
41 | trailing: Icon(Icons.navigate_next),
42 | title: Text("Settings Type One"),
43 | onTap: () {
44 | Navigator.pushNamed(context, "/settings_type_one");
45 | },
46 | ),
47 | ListTile(
48 | contentPadding: EdgeInsets.all(20),
49 | trailing: Icon(Icons.navigate_next),
50 | title: Text("Settings Type Two"),
51 | onTap: () {
52 | Navigator.pushNamed(context, "/settings_type_two");
53 | },
54 | ),
55 | ListTile(
56 | contentPadding: EdgeInsets.all(20),
57 | trailing: Icon(Icons.navigate_next),
58 | title: Text("Settings Type Three"),
59 | onTap: () {
60 | Navigator.pushNamed(context, "/settings_type_three");
61 | },
62 | ),
63 | ],
64 | ),
65 | ),
66 | );
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/lib/menu/settings.dart:
--------------------------------------------------------------------------------
1 | import 'dart:ui';
2 |
3 | class Settings {
4 | String title;
5 | String text;
6 | bool enable;
7 | Color bgColor;
8 | Color textColor;
9 |
10 | Settings(
11 | {required this.title,
12 | required this.text,
13 | required this.enable,
14 | required this.bgColor,
15 | required this.textColor});
16 | }
17 |
18 | class SettingsCardDetail {
19 | String title;
20 | Color bgColor;
21 | Color borderColor;
22 | List items;
23 |
24 | SettingsCardDetail(
25 | {required this.title,
26 | required this.bgColor,
27 | required this.borderColor,
28 | required this.items});
29 | }
30 |
31 | class SettingsCardItemDetail {
32 | String title;
33 | Color textColor;
34 | Color color;
35 |
36 | SettingsCardItemDetail(
37 | {required this.title, required this.color, required this.textColor});
38 | }
39 |
40 | class SettingsItem {
41 | String title;
42 | String description;
43 | bool enable;
44 |
45 | SettingsItem(
46 | {required this.title, required this.description, required this.enable});
47 | }
48 |
--------------------------------------------------------------------------------
/lib/menu/settings_card_item.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/login/contra_text.dart';
2 | import 'package:contraflutterkit/menu/settings.dart';
3 | import 'package:contraflutterkit/utils/colors.dart';
4 | import 'package:flutter/cupertino.dart';
5 | import 'package:flutter/material.dart';
6 |
7 | class SettingsCardItem extends StatefulWidget {
8 | Settings setting;
9 |
10 | SettingsCardItem({required this.setting});
11 |
12 | @override
13 | _SettingsCardItemState createState() => _SettingsCardItemState();
14 | }
15 |
16 | class _SettingsCardItemState extends State {
17 | late String title;
18 |
19 | late String text;
20 |
21 | late bool enable;
22 |
23 | late Color bgColor;
24 |
25 | late Color textColor;
26 | bool isChanged = false;
27 |
28 | void onChanged(bool value) {
29 | setState(() {
30 | isChanged = value;
31 | });
32 | }
33 |
34 | @override
35 | void initState() {
36 | super.initState();
37 | isChanged = widget.setting.enable;
38 | title = widget.setting.title;
39 | text = widget.setting.text;
40 | enable = widget.setting.enable;
41 | bgColor = widget.setting.bgColor;
42 | textColor = widget.setting.textColor;
43 | }
44 |
45 | @override
46 | Widget build(BuildContext context) {
47 | return Container(
48 | padding: EdgeInsets.all(24),
49 | decoration: ShapeDecoration(
50 | color: bgColor,
51 | shape: RoundedRectangleBorder(
52 | side: BorderSide(color: wood_smoke, width: 2),
53 | borderRadius: BorderRadius.all(Radius.circular(16)))),
54 | child: Column(
55 | crossAxisAlignment: CrossAxisAlignment.start,
56 | children: [
57 | ContraText(
58 | size: 27,
59 | color: textColor,
60 | alignment: Alignment.centerLeft,
61 | text: title,
62 | weight: FontWeight.w800,
63 | textAlign: TextAlign.left,
64 | ),
65 | SizedBox(
66 | height: 8,
67 | ),
68 | ContraText(
69 | size: 15,
70 | color: textColor,
71 | alignment: Alignment.centerLeft,
72 | text: text,
73 | weight: FontWeight.bold,
74 | textAlign: TextAlign.left,
75 | ),
76 | SizedBox(
77 | height: 8,
78 | ),
79 | Switch(
80 | value: isChanged,
81 | onChanged: onChanged,
82 | activeTrackColor: lightening_yellow,
83 | inactiveTrackColor: santas_gray,
84 | inactiveThumbColor: white,
85 | )
86 | ],
87 | ),
88 | );
89 | }
90 | }
91 |
--------------------------------------------------------------------------------
/lib/menu/settings_item_widget.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/login/contra_text.dart';
2 | import 'package:contraflutterkit/menu/settings.dart';
3 | import 'package:contraflutterkit/utils/colors.dart';
4 | import 'package:flutter/cupertino.dart';
5 | import 'package:flutter/material.dart';
6 |
7 | class SettingsItemWidget extends StatefulWidget {
8 | SettingsItem settingsItem;
9 |
10 | SettingsItemWidget({required this.settingsItem});
11 |
12 | @override
13 | _SettingsItemWidgetState createState() => _SettingsItemWidgetState();
14 | }
15 |
16 | class _SettingsItemWidgetState extends State {
17 | late String title;
18 | late String description;
19 |
20 | late bool enable;
21 | bool isChanged = false;
22 |
23 | void onChanged(bool value) {
24 | setState(() {
25 | isChanged = value;
26 | });
27 | }
28 |
29 | @override
30 | void initState() {
31 | super.initState();
32 | isChanged = widget.settingsItem.enable;
33 | title = widget.settingsItem.title;
34 | description = widget.settingsItem.description;
35 | }
36 |
37 | @override
38 | Widget build(BuildContext context) {
39 | return Container(
40 | padding: EdgeInsets.symmetric(horizontal: 24, vertical: 12),
41 | child: Row(
42 | crossAxisAlignment: CrossAxisAlignment.center,
43 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
44 | children: [
45 | Expanded(
46 | flex: 1,
47 | child: Column(
48 | mainAxisSize: MainAxisSize.min,
49 | crossAxisAlignment: CrossAxisAlignment.start,
50 | children: [
51 | ContraText(
52 | text: title,
53 | color: wood_smoke,
54 | alignment: Alignment.centerLeft,
55 | size: 21,
56 | weight: FontWeight.w800,
57 | textAlign: TextAlign.center,
58 | ),
59 | SizedBox(
60 | height: 4,
61 | ),
62 | description.isNotEmpty
63 | ? Text(
64 | description,
65 | style: TextStyle(
66 | color: trout,
67 | fontSize: 15,
68 | fontWeight: FontWeight.bold),
69 | )
70 | : SizedBox(
71 | height: 0,
72 | ),
73 | ],
74 | ),
75 | ),
76 | Switch(
77 | value: isChanged,
78 | onChanged: onChanged,
79 | activeTrackColor: lightening_yellow,
80 | inactiveTrackColor: santas_gray,
81 | inactiveThumbColor: white,
82 | )
83 | ],
84 | ),
85 | );
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/lib/menu/settings_list_card_item.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/login/contra_text.dart';
2 | import 'package:contraflutterkit/menu/settings.dart';
3 | import 'package:contraflutterkit/utils/colors.dart';
4 | import 'package:flutter/material.dart';
5 |
6 | class SettingsListCardItem extends StatelessWidget {
7 | SettingsCardDetail detail;
8 |
9 | SettingsListCardItem({required this.detail});
10 |
11 | @override
12 | Widget build(BuildContext context) {
13 | return Container(
14 | margin: EdgeInsets.all(24),
15 | child: Column(
16 | children: [
17 | ContraText(
18 | color: trout,
19 | text: detail.title,
20 | textAlign: TextAlign.left,
21 | weight: FontWeight.bold,
22 | size: 21,
23 | alignment: Alignment.centerLeft,
24 | ),
25 | SizedBox(
26 | height: 16,
27 | ),
28 | Container(
29 | padding: EdgeInsets.symmetric(vertical: 16),
30 | height: 220,
31 | decoration: ShapeDecoration(
32 | color: detail.bgColor,
33 | shadows: [BoxShadow(offset: Offset(0, 4))],
34 | shape: RoundedRectangleBorder(
35 | side: BorderSide(color: detail.borderColor, width: 2),
36 | borderRadius: BorderRadius.all(Radius.circular(16)))),
37 | child: ListView.builder(
38 | itemBuilder: (BuildContext context, int index) {
39 | return Container(
40 | padding: EdgeInsets.symmetric(vertical: 16),
41 | child: Row(
42 | children: [
43 | Expanded(
44 | child: Container(
45 | decoration: ShapeDecoration(
46 | shape: CircleBorder(), color: lightening_yellow),
47 | width: 24,
48 | height: 24,
49 | ),
50 | flex: 1,
51 | ),
52 | Expanded(
53 | child: ContraText(
54 | text: detail.items[index].title,
55 | textAlign: TextAlign.left,
56 | weight: FontWeight.w800,
57 | size: 17,
58 | alignment: Alignment.centerLeft,
59 | color: wood_smoke,
60 | ),
61 | flex: 2,
62 | ),
63 | Expanded(
64 | child: Icon(
65 | Icons.arrow_forward_ios,
66 | color: wood_smoke,
67 | ),
68 | flex: 1,
69 | )
70 | ],
71 | ),
72 | );
73 | },
74 | itemCount: detail.items.length,
75 | ),
76 | )
77 | ],
78 | ),
79 | );
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/lib/onboarding/onboard_data.dart:
--------------------------------------------------------------------------------
1 | class OnboardData {
2 | final String placeHolder;
3 | final String title;
4 | final String description;
5 |
6 | const OnboardData(
7 | {required this.placeHolder,
8 | required this.title,
9 | required this.description});
10 | }
11 |
--------------------------------------------------------------------------------
/lib/onboarding/onboard_main.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | class OnboardPageMain extends StatefulWidget {
5 | @override
6 | _OnboardPageMainState createState() => _OnboardPageMainState();
7 | }
8 |
9 | class _OnboardPageMainState extends State {
10 | @override
11 | void initState() {
12 | super.initState();
13 | }
14 |
15 | @override
16 | Widget build(BuildContext context) {
17 | return Scaffold(
18 | appBar: AppBar(
19 | title: Text("Onboarding"),
20 | ),
21 | body: SingleChildScrollView(
22 | child: Column(
23 | children: [
24 | ListTile(
25 | contentPadding: EdgeInsets.all(20),
26 | trailing: Icon(Icons.navigate_next),
27 | title: Text("Type One"),
28 | onTap: () {
29 | Navigator.pushNamed(context, "/onboard_type_one");
30 | },
31 | ),
32 | ListTile(
33 | contentPadding: EdgeInsets.all(20),
34 | trailing: Icon(Icons.navigate_next),
35 | title: Text("Type Two"),
36 | onTap: () {
37 | Navigator.pushNamed(context, "/onboard_type_two");
38 | },
39 | ),
40 | ListTile(
41 | contentPadding: EdgeInsets.all(20),
42 | trailing: Icon(Icons.navigate_next),
43 | title: Text("Type Three"),
44 | onTap: () {
45 | Navigator.pushNamed(context, "/onboard_type_three");
46 | },
47 | ),
48 | Container(
49 | child: ListTile(
50 | contentPadding: EdgeInsets.all(20),
51 | trailing: Icon(Icons.navigate_next),
52 | title: Text("Type Four"),
53 | onTap: () {
54 | Navigator.pushNamed(context, "/onboard_type_four");
55 | },
56 | ),
57 | ),
58 | ],
59 | ),
60 | ),
61 | );
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/lib/onboarding/type1/onboard_page_one.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter_svg/flutter_svg.dart';
5 | import '../onboard_data.dart';
6 |
7 | class OnboardPageTypeOne extends StatelessWidget {
8 | final OnboardData data;
9 |
10 | const OnboardPageTypeOne({required this.data});
11 |
12 | @override
13 | Widget build(BuildContext context) {
14 | return Material(
15 | child: Container(
16 | color: white,
17 | child: Column(
18 | children: [
19 | Expanded(
20 | flex: 4,
21 | child: Container(
22 | child: Column(
23 | mainAxisAlignment: MainAxisAlignment.spaceEvenly,
24 | children: [
25 | SizedBox(
26 | height: 30,
27 | ),
28 | Center(
29 | child: SvgPicture.asset(
30 | data.placeHolder,
31 | height: 320,
32 | width: 320,
33 | ),
34 | ),
35 | ],
36 | ),
37 | ),
38 | ),
39 | Expanded(
40 | flex: 2,
41 | child: Column(
42 | crossAxisAlignment: CrossAxisAlignment.center,
43 | children: [
44 | Padding(
45 | padding: const EdgeInsets.only(
46 | left: 24.0, right: 24.0, top: 12.0, bottom: 12.0),
47 | child: Text(
48 | data.title,
49 | textAlign: TextAlign.center,
50 | style: TextStyle(
51 | fontSize: 36,
52 | color: wood_smoke,
53 | fontWeight: FontWeight.w800),
54 | ),
55 | ),
56 | Padding(
57 | padding: const EdgeInsets.only(
58 | left: 24.0, right: 24.0, top: 12.0, bottom: 12.0),
59 | child: Text(
60 | data.description,
61 | textAlign: TextAlign.center,
62 | style: TextStyle(
63 | fontSize: 21,
64 | color: trout,
65 | fontWeight: FontWeight.w500),
66 | ),
67 | ),
68 | ],
69 | ),
70 | ),
71 | Expanded(
72 | flex: 1,
73 | child: Container(),
74 | )
75 | ],
76 | ),
77 | ),
78 | );
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/lib/onboarding/type2/onboard_page_two.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/onboarding/onboard_data.dart';
2 | import 'package:contraflutterkit/utils/colors.dart';
3 | import 'package:flutter/cupertino.dart';
4 | import 'package:flutter/material.dart';
5 | import 'package:flutter_svg/flutter_svg.dart';
6 |
7 | class OnboardPageTypeTwo extends StatelessWidget {
8 | final OnboardData data;
9 |
10 | const OnboardPageTypeTwo({required this.data});
11 |
12 | @override
13 | Widget build(BuildContext context) {
14 | return Material(
15 | child: Container(
16 | color: white,
17 | child: Column(
18 | children: [
19 | Expanded(
20 | flex: 4,
21 | child: Container(
22 | child: Column(
23 | mainAxisAlignment: MainAxisAlignment.spaceEvenly,
24 | children: [
25 | SizedBox(
26 | height: 40,
27 | ),
28 | Center(
29 | child: SvgPicture.asset(
30 | data.placeHolder,
31 | height: 370,
32 | width: 310,
33 | ),
34 | ),
35 | ],
36 | ),
37 | ),
38 | ),
39 | Expanded(
40 | flex: 2,
41 | child: Column(
42 | crossAxisAlignment: CrossAxisAlignment.start,
43 | children: [
44 | Padding(
45 | padding: const EdgeInsets.only(
46 | left: 24.0, right: 24.0, top: 12.0, bottom: 12.0),
47 | child: Text(
48 | data.title,
49 | textAlign: TextAlign.start,
50 | style: TextStyle(
51 | fontSize: 36,
52 | color: wood_smoke,
53 | fontWeight: FontWeight.w800),
54 | ),
55 | ),
56 | Padding(
57 | padding: const EdgeInsets.only(
58 | left: 24.0, right: 24.0, top: 12.0, bottom: 12.0),
59 | child: Text(
60 | data.description,
61 | textAlign: TextAlign.start,
62 | style: TextStyle(
63 | fontSize: 21,
64 | color: trout,
65 | fontWeight: FontWeight.w500),
66 | ),
67 | ),
68 | ],
69 | ),
70 | ),
71 | ],
72 | ),
73 | ),
74 | );
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/lib/onboarding/type3/onboard_page_three.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/utils/colors.dart';
2 | import 'package:flutter/cupertino.dart';
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter_svg/flutter_svg.dart';
5 |
6 | import '../onboard_data.dart';
7 |
8 | class OnboardPageTypeThree extends StatelessWidget {
9 | final OnboardData data;
10 |
11 | const OnboardPageTypeThree({required this.data});
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | return Material(
16 | child: Container(
17 | color: flamingo,
18 | child: Column(
19 | children: [
20 | Expanded(
21 | flex: 4,
22 | child: Container(
23 | child: Column(
24 | mainAxisAlignment: MainAxisAlignment.spaceEvenly,
25 | children: [
26 | SizedBox(
27 | height: 40,
28 | ),
29 | Center(
30 | child: SvgPicture.asset(
31 | data.placeHolder,
32 | height: 340,
33 | width: 310,
34 | ),
35 | ),
36 | ],
37 | ),
38 | ),
39 | ),
40 | Expanded(
41 | flex: 2,
42 | child: Column(
43 | crossAxisAlignment: CrossAxisAlignment.center,
44 | children: [
45 | Padding(
46 | padding: const EdgeInsets.only(
47 | left: 24.0, right: 24.0, top: 12.0, bottom: 12.0),
48 | child: Text(
49 | data.title,
50 | textAlign: TextAlign.center,
51 | style: TextStyle(
52 | fontSize: 36,
53 | color: athens_gray,
54 | fontWeight: FontWeight.w800),
55 | ),
56 | ),
57 | Padding(
58 | padding: const EdgeInsets.only(
59 | left: 24.0, right: 24.0, top: 12.0, bottom: 12.0),
60 | child: Text(
61 | data.description,
62 | textAlign: TextAlign.center,
63 | style: TextStyle(
64 | fontSize: 21,
65 | color: athens_gray,
66 | fontWeight: FontWeight.w500),
67 | ),
68 | ),
69 | ],
70 | ),
71 | ),
72 | Expanded(
73 | flex: 1,
74 | child: Container(),
75 | )
76 | ],
77 | ),
78 | ),
79 | );
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/lib/onboarding/welcome_screen.dart:
--------------------------------------------------------------------------------
1 | import 'dart:io';
2 |
3 | import 'package:contraflutterkit/utils/colors.dart';
4 | import 'package:flutter/cupertino.dart';
5 | import 'package:flutter/foundation.dart';
6 | import 'package:flutter/material.dart';
7 | import 'package:flutter_svg/flutter_svg.dart';
8 |
9 | class WelcomeScreenPage extends StatelessWidget {
10 | @override
11 | Widget build(BuildContext context) {
12 | return Material(
13 | child: Container(
14 | color: persian_blue,
15 | child: Column(
16 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
17 | children: [
18 | kIsWeb || Platform.isIOS
19 | ? AppBar(
20 | backgroundColor: persian_blue,
21 | elevation: 0,
22 | )
23 | : SizedBox(),
24 | Column(
25 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
26 | children: [
27 | Container(
28 | child: Center(
29 | child: SvgPicture.asset(
30 | "assets/icons/logo_mark.svg",
31 | width: 150,
32 | height: 150,
33 | ),
34 | ),
35 | ),
36 | SizedBox(
37 | height: 40,
38 | ),
39 | Text(
40 | "Welcome To Contra Flutter Kit",
41 | textAlign: TextAlign.center,
42 | style: TextStyle(
43 | fontSize: 36, color: selago, fontWeight: FontWeight.w800),
44 | ),
45 | ],
46 | ),
47 | Column(
48 | mainAxisAlignment: MainAxisAlignment.start,
49 | children: [
50 | Padding(
51 | padding: const EdgeInsets.all(8.0),
52 | child: Text(
53 | "coded by",
54 | style: TextStyle(fontSize: 18, color: selago),
55 | ),
56 | ),
57 | RichText(
58 | text: TextSpan(children: [
59 | TextSpan(
60 | text: "@nathansdev",
61 | style: TextStyle(
62 | fontSize: 16,
63 | decoration: TextDecoration.underline,
64 | ))
65 | ]),
66 | ),
67 | ],
68 | ),
69 | SizedBox(
70 | height: 40,
71 | ),
72 | ],
73 | ),
74 | ),
75 | );
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/lib/payment/payment_card_item.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/login/contra_text.dart';
2 | import 'package:contraflutterkit/utils/colors.dart';
3 | import 'package:flutter/cupertino.dart';
4 | import 'package:flutter/material.dart';
5 |
6 | class PaymentCartItem extends StatelessWidget {
7 | final Color bgColor;
8 | final String price;
9 | final String type;
10 |
11 | const PaymentCartItem(
12 | {required this.bgColor, required this.price, required this.type});
13 |
14 | @override
15 | Widget build(BuildContext context) {
16 | return Container(
17 | margin: EdgeInsets.symmetric(horizontal: 24, vertical: 12),
18 | padding: EdgeInsets.all(24),
19 | decoration: ShapeDecoration(
20 | color: bgColor,
21 | shadows: [
22 | BoxShadow(
23 | color: wood_smoke,
24 | offset: Offset(
25 | 0.0, // Move to right 10 horizontally
26 | 4.0, // Move to bottom 5 Vertically
27 | ),
28 | )
29 | ],
30 | shape: RoundedRectangleBorder(
31 | borderRadius: BorderRadius.all(Radius.circular(16)),
32 | side: BorderSide(color: wood_smoke, width: 2))),
33 | child: Center(
34 | child: Column(
35 | mainAxisSize: MainAxisSize.min,
36 | children: [
37 | ContraText(
38 | alignment: Alignment.center,
39 | text: price,
40 | size: 44,
41 | ),
42 | Text(
43 | type,
44 | style: TextStyle(
45 | color: wood_smoke, fontSize: 21, fontWeight: FontWeight.w500),
46 | )
47 | ],
48 | ),
49 | ),
50 | );
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/lib/payment/payment_main_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | class PaymentMainPage extends StatefulWidget {
5 | @override
6 | _PaymentMainPageState createState() => _PaymentMainPageState();
7 | }
8 |
9 | class _PaymentMainPageState extends State {
10 | @override
11 | void initState() {
12 | super.initState();
13 | }
14 |
15 | @override
16 | Widget build(BuildContext context) {
17 | return Scaffold(
18 | appBar: AppBar(
19 | title: Text("Payment"),
20 | ),
21 | body: SingleChildScrollView(
22 | child: Column(
23 | children: [
24 | ListTile(
25 | contentPadding: EdgeInsets.all(20),
26 | trailing: Icon(Icons.navigate_next),
27 | title: Text("Payment Page Type One"),
28 | onTap: () {
29 | Navigator.pushNamed(context, "/payment_page_type_one");
30 | },
31 | ),
32 | ListTile(
33 | contentPadding: EdgeInsets.all(20),
34 | trailing: Icon(Icons.navigate_next),
35 | title: Text("Payment Page Type Two"),
36 | onTap: () {
37 | Navigator.pushNamed(context, "/payment_page_type_two");
38 | },
39 | ),
40 | ListTile(
41 | contentPadding: EdgeInsets.all(20),
42 | trailing: Icon(Icons.navigate_next),
43 | title: Text("Payment Page Type Three"),
44 | onTap: () {
45 | Navigator.pushNamed(context, "/payment_page_type_three");
46 | },
47 | ),
48 | ],
49 | ),
50 | ),
51 | );
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/lib/payment/payment_type.dart:
--------------------------------------------------------------------------------
1 | import 'dart:ui';
2 |
3 | class PaymentType {
4 | final String type;
5 | final String price;
6 | final Color color;
7 | final Color buttonColor;
8 | final Color buttonTextColor;
9 | final List list;
10 |
11 | const PaymentType(
12 | {required this.type,
13 | required this.price,
14 | required this.color,
15 | required this.list,
16 | required this.buttonColor,
17 | required this.buttonTextColor});
18 | }
19 |
20 | class CardDetail {
21 | final String type;
22 | final String number;
23 | final String user_name;
24 | final Color color;
25 |
26 | const CardDetail(
27 | {required this.type,
28 | required this.number,
29 | required this.user_name,
30 | required this.color});
31 | }
32 |
--------------------------------------------------------------------------------
/lib/shopping/category_item.dart:
--------------------------------------------------------------------------------
1 | import 'dart:ui';
2 |
3 | class Category {
4 | final String name;
5 | final Color bgColor;
6 | final Color startColor;
7 |
8 | const Category(
9 | {required this.name, required this.startColor, required this.bgColor});
10 | }
11 |
12 | class CategoryBig {
13 | final String name;
14 | final String image;
15 | final Color bgColor;
16 | final Color startColor;
17 |
18 | const CategoryBig(
19 | {required this.name,
20 | required this.image,
21 | required this.startColor,
22 | required this.bgColor});
23 | }
24 |
--------------------------------------------------------------------------------
/lib/shopping/shop.dart:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/lib/shopping/shop.dart
--------------------------------------------------------------------------------
/lib/shopping/shop_card_item.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/shopping/shop_item.dart';
2 | import 'package:contraflutterkit/utils/colors.dart';
3 | import 'package:flutter/cupertino.dart';
4 | import 'package:flutter/material.dart';
5 | import 'package:flutter_svg/svg.dart';
6 |
7 | class ShopCardItemWidget extends StatelessWidget {
8 | final ShopItem shopItem;
9 | final VoidCallback onTap;
10 |
11 | const ShopCardItemWidget({required this.shopItem,required this.onTap});
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | return GestureDetector(
16 | onTap: onTap,
17 | child: Container(
18 | padding: EdgeInsets.all(24),
19 | child: Column(
20 | children: [
21 | Container(
22 | width: MediaQuery.of(context).size.width,
23 | decoration: ShapeDecoration(
24 | color: shopItem.bgColor,
25 | shape: RoundedRectangleBorder(
26 | borderRadius: BorderRadius.all(Radius.circular(16)),
27 | side: BorderSide(color: wood_smoke, width: 2))),
28 | child: SvgPicture.asset(
29 | shopItem.image,
30 | width: 235,
31 | height: 212,
32 | ),
33 | ),
34 | Padding(
35 | padding: const EdgeInsets.symmetric(vertical: 8.0),
36 | child: Row(
37 | mainAxisAlignment: MainAxisAlignment.start,
38 | crossAxisAlignment: CrossAxisAlignment.start,
39 | children: [
40 | Expanded(
41 | flex: 1,
42 | child: Text(
43 | shopItem.name,
44 | maxLines: 2,
45 | style: TextStyle(
46 | color: wood_smoke,
47 | fontSize: 21,
48 | fontWeight: FontWeight.w800),
49 | ),
50 | ),
51 | Icon(
52 | Icons.favorite,
53 | color: shopItem.bgColor,
54 | )
55 | ],
56 | ),
57 | ),
58 | Row(
59 | children: [
60 | Text(
61 | "\$" + shopItem.price,
62 | style: TextStyle(
63 | color: wood_smoke,
64 | fontSize: 27,
65 | fontWeight: FontWeight.w800),
66 | ),
67 | ],
68 | )
69 | ],
70 | ),
71 | ),
72 | );
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/lib/shopping/shop_card_item_small.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/shopping/shop_item.dart';
2 | import 'package:contraflutterkit/utils/colors.dart';
3 | import 'package:flutter/cupertino.dart';
4 | import 'package:flutter/material.dart';
5 | import 'package:flutter_svg/svg.dart';
6 |
7 | class ShopCardSmallItemWidget extends StatelessWidget {
8 | final ShopItem shopItem;
9 | final VoidCallback onTap;
10 |
11 | const ShopCardSmallItemWidget({required this.shopItem, required this.onTap});
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | return GestureDetector(
16 | onTap: onTap,
17 | child: Container(
18 | padding: EdgeInsets.all(8),
19 | child: Column(
20 | mainAxisSize: MainAxisSize.min,
21 | crossAxisAlignment: CrossAxisAlignment.start,
22 | children: [
23 | Container(
24 | width: 120,
25 | height: 117,
26 | decoration: ShapeDecoration(
27 | color: shopItem.bgColor,
28 | shape: RoundedRectangleBorder(
29 | borderRadius: BorderRadius.all(Radius.circular(16)),
30 | side: BorderSide(color: wood_smoke, width: 2))),
31 | child: SvgPicture.asset(
32 | shopItem.image,
33 | width: 50,
34 | height: 50,
35 | ),
36 | ),
37 | Container(
38 | alignment: Alignment.centerLeft,
39 | padding: EdgeInsets.symmetric(vertical: 2),
40 | child: Text(
41 | shopItem.name,
42 | maxLines: 2,
43 | textAlign: TextAlign.start,
44 | style: TextStyle(
45 | color: wood_smoke,
46 | fontSize: 15,
47 | fontWeight: FontWeight.w800),
48 | ),
49 | ),
50 | Container(
51 | alignment: Alignment.centerLeft,
52 | padding: EdgeInsets.symmetric(vertical: 1),
53 | child: Text(
54 | "\$" + shopItem.price,
55 | textAlign: TextAlign.start,
56 | style: TextStyle(
57 | color: trout, fontSize: 13, fontWeight: FontWeight.bold),
58 | ),
59 | )
60 | ],
61 | ),
62 | ),
63 | );
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/lib/shopping/shop_grid_item.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/shopping/shop_item.dart';
2 | import 'package:contraflutterkit/utils/colors.dart';
3 | import 'package:flutter/cupertino.dart';
4 | import 'package:flutter/material.dart';
5 | import 'package:flutter_svg/svg.dart';
6 |
7 | class ShopGridItemWidget extends StatelessWidget {
8 | final ShopItem shopItem;
9 | final VoidCallback onTap;
10 |
11 | const ShopGridItemWidget({required this.shopItem, required this.onTap});
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | return GestureDetector(
16 | onTap: onTap,
17 | child: Column(
18 | mainAxisSize: MainAxisSize.min,
19 | children: [
20 | Container(
21 | width: MediaQuery.of(context).size.width,
22 | decoration: ShapeDecoration(
23 | color: shopItem.bgColor,
24 | shape: RoundedRectangleBorder(
25 | borderRadius: BorderRadius.all(Radius.circular(16)),
26 | side: BorderSide(color: wood_smoke, width: 2))),
27 | child: SvgPicture.asset(
28 | shopItem.image,
29 | height: 170,
30 | ),
31 | ),
32 | SizedBox(
33 | height: 2,
34 | ),
35 | Container(
36 | alignment: Alignment.centerLeft,
37 | child: Text(
38 | shopItem.name,
39 | maxLines: 2,
40 | textAlign: TextAlign.start,
41 | overflow: TextOverflow.ellipsis,
42 | style: TextStyle(
43 | color: wood_smoke, fontSize: 17, fontWeight: FontWeight.bold),
44 | ),
45 | ),
46 | SizedBox(
47 | height: 2,
48 | ),
49 | Container(
50 | alignment: Alignment.centerLeft,
51 | child: Text(
52 | "\$" + shopItem.price,
53 | textAlign: TextAlign.start,
54 | overflow: TextOverflow.ellipsis,
55 | maxLines: 1,
56 | style: TextStyle(
57 | color: trout, fontSize: 18, fontWeight: FontWeight.w800),
58 | ),
59 | ),
60 | ],
61 | ),
62 | );
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/lib/shopping/shop_item.dart:
--------------------------------------------------------------------------------
1 | import 'dart:ui';
2 |
3 | class ShopItem {
4 | final String name;
5 | final String price;
6 | final String by;
7 | final String image;
8 | final Color bgColor;
9 |
10 | const ShopItem(
11 | {required this.name,
12 | required this.price,
13 | required this.by,
14 | required this.image,
15 | required this.bgColor});
16 | }
17 |
--------------------------------------------------------------------------------
/lib/shopping/shopping_card_pager_item.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/custom_widgets/button_plain.dart';
2 | import 'package:contraflutterkit/shopping/category_item.dart';
3 | import 'package:contraflutterkit/utils/colors.dart';
4 | import 'package:flutter/cupertino.dart';
5 | import 'package:flutter/material.dart';
6 | import 'package:flutter_svg/svg.dart';
7 |
8 | class ShoppingCardPagerItem extends StatelessWidget {
9 | final CategoryBig categoryBig;
10 |
11 | const ShoppingCardPagerItem({required this.categoryBig});
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | return Container(
16 | margin: EdgeInsets.symmetric(horizontal: 8),
17 | decoration: ShapeDecoration(
18 | color: categoryBig.bgColor,
19 | shape: RoundedRectangleBorder(
20 | borderRadius: BorderRadius.all(Radius.circular(16)),
21 | side: BorderSide(color: wood_smoke, width: 2))),
22 | child: Row(
23 | children: [
24 | Expanded(
25 | flex: 4,
26 | child: Column(
27 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
28 | crossAxisAlignment: CrossAxisAlignment.start,
29 | children: [
30 | Padding(
31 | padding: const EdgeInsets.only(left: 24.0, top: 24),
32 | child: Text(
33 | categoryBig.name,
34 | maxLines: 2,
35 | overflow: TextOverflow.ellipsis,
36 | style: TextStyle(
37 | color: wood_smoke,
38 | fontSize: 22,
39 | fontWeight: FontWeight.w800),
40 | ),
41 | ),
42 | Padding(
43 | padding: const EdgeInsets.only(left: 24.0, bottom: 24),
44 | child: ButtonPlain(
45 | color: wood_smoke,
46 | borderColor: wood_smoke,
47 | textColor: white,
48 | text: "Shop now",
49 | size: 96,
50 | onTap: () {
51 | Navigator.pushNamed(context, "/shopping_list_page_two");
52 | },
53 | ),
54 | )
55 | ],
56 | ),
57 | ),
58 | Expanded(
59 | flex: 4,
60 | child: SvgPicture.asset(
61 | categoryBig.image,
62 | width: 210,
63 | height: 230,
64 | ),
65 | ),
66 | ],
67 | ),
68 | );
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/lib/shopping/shopping_home_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:contraflutterkit/shopping/shopping_home_page_one.dart';
2 | import 'package:contraflutterkit/shopping/shopping_home_page_two.dart';
3 | import 'package:contraflutterkit/utils/colors.dart';
4 | import 'package:flutter/material.dart';
5 |
6 | class ShoppingHomePage extends StatefulWidget {
7 | @override
8 | _ShoppingHomePageState createState() => _ShoppingHomePageState();
9 | }
10 |
11 | class _ShoppingHomePageState extends State {
12 | int _currentIndex = 0;
13 | final List _childrenWidgets = [
14 | ShoppingHomePageTwo(),
15 | ShoppingHomePageOne(),
16 | ShoppingHomePageTwo(),
17 | ShoppingHomePageOne(),
18 | ];
19 |
20 | void _onItemTapped(int index) {
21 | setState(() {
22 | _currentIndex = index;
23 | });
24 | }
25 |
26 | @override
27 | Widget build(BuildContext context) {
28 | return Scaffold(
29 | body: Center(
30 | child: _childrenWidgets.elementAt(_currentIndex),
31 | ),
32 | bottomNavigationBar: BottomNavigationBar(
33 | items: [
34 | BottomNavigationBarItem(icon: Icon(Icons.home), label:("Home")),
35 | BottomNavigationBarItem(
36 | icon: Icon(Icons.search), label:("Search")),
37 | BottomNavigationBarItem(
38 | icon: Icon(Icons.chat_bubble), label:("Chat")),
39 | BottomNavigationBarItem(icon: Icon(Icons.info), label:("About")),
40 | ],
41 | currentIndex: _currentIndex,
42 | onTap: _onItemTapped,
43 | selectedItemColor: wood_smoke,
44 | unselectedItemColor: trout,
45 | showSelectedLabels: true,
46 | showUnselectedLabels: true,
47 | selectedIconTheme: IconThemeData(color: wood_smoke, opacity: 1),
48 | unselectedIconTheme: IconThemeData(color: trout, opacity: 0.6),
49 | selectedLabelStyle: TextStyle(
50 | color: wood_smoke, fontSize: 12, fontWeight: FontWeight.w800),
51 | unselectedLabelStyle:
52 | TextStyle(color: trout, fontSize: 12, fontWeight: FontWeight.w800),
53 | ),
54 | );
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/lib/utils/colors.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | const persian_blue = Color(0xFF1947E6);
4 | const white = Color(0xFFFFFFFF);
5 | const athens_gray = Color(0xFFF4F5F7);
6 | const lightening_yellow = Color(0xFFFFBD12);
7 | const flamingo = Color(0xFFF95A2C);
8 | const black = Color(0xFF000000);
9 | const wood_smoke = Color(0xFF18191F);
10 | const trout = Color(0xFF474A57);
11 | const santas_gray = Color(0xFF969BAB);
12 | const selago = Color(0xFFE9E7FC);
13 | const carribean_green = Color(0xFF00C6AE);
14 | const santas_gray_10 = Color(0xFF9FA4B4);
15 | const dandelion = Color(0xFFFFD465);
16 | const caribbean_color = Color(0xFF00C6AE);
17 | const pastel_pink = Color(0xFFFFC7DE);
18 | const pink_salomn = Color(0xFFFF89BB);
19 | const athen_gray = Color(0xFFF4F5F7);
20 | const bareley_white = Color(0xFFFFF4CC);
21 | const fair_pink = Color(0xFFFFE8E8);
22 | const foam = Color(0xFFD6FCF7);
23 | const lavandar_bush = Color(0xFFFFF3F8);
24 | const mona_lisa = Color(0xFFFF9692);
25 | const athens = Color(0xFFEEEFF4);
26 | const turquoise_blue = Color(0xFF61E4C5);
27 |
--------------------------------------------------------------------------------
/lib/utils/empty_screen.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | class EmptyState extends StatelessWidget {
5 | @override
6 | Widget build(BuildContext context) {
7 | return Material(
8 | child: Container(
9 | child: Center(
10 | child: Text("Coming soon!"),
11 | ),
12 | ),
13 | );
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/lib/utils/strings.dart:
--------------------------------------------------------------------------------
1 | class Strings {
2 | static const String contra_wireframe_kit = "Contra Flutter kit";
3 | static const String contra_wireframe_kit_next_line = "Contra Flutter \nUikit";
4 | static const String open_source = "OPEN SOURCE";
5 | static const String contra_wireframe_kit_page_text =
6 | "Flutter UiKit will be usefull for learning purpose especially for beginners";
7 | }
8 |
--------------------------------------------------------------------------------
/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: contraflutterkit
2 | description: Flutter application built on top of contra wireframe kit.
3 |
4 |
5 | version: 1.0.0+1
6 |
7 | environment:
8 | sdk: ">=2.12.0 <3.0.0"
9 |
10 | dependencies:
11 | flutter:
12 | sdk: flutter
13 |
14 | cupertino_icons: ^1.0.4
15 | flutter_svg: ^2.0.10+1
16 | flutter_staggered_grid_view: ^0.7.0
17 | flutter_time_picker_spinner: ^2.0.0
18 | fl_chart: ^0.68.0
19 | google_maps_flutter: ^2.1.1
20 | card_swiper: ^3.0.1
21 |
22 | dev_dependencies:
23 | flutter_test:
24 | sdk: flutter
25 | linter: ^1.15.0
26 | lint: ^1.7.2
27 |
28 | flutter:
29 |
30 | assets:
31 | - assets/icons/
32 | - assets/fonts/
33 | - assets/images/
34 | - assets/images/shopping/
35 |
36 | fonts:
37 | - family: Montserrat
38 | fonts:
39 | - asset: assets/fonts/Montserrat-Bold.ttf
40 | - asset: assets/fonts/Montserrat-ExtraBold.ttf
41 | - asset: assets/fonts/Montserrat-Medium.ttf
42 | uses-material-design: true
43 |
--------------------------------------------------------------------------------
/screenshots/add_alarm_page.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/add_alarm_page.jpg
--------------------------------------------------------------------------------
/screenshots/add_label_screen.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/add_label_screen.jpg
--------------------------------------------------------------------------------
/screenshots/alarm_list_page.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/alarm_list_page.jpg
--------------------------------------------------------------------------------
/screenshots/bar_chart.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/bar_chart.jpg
--------------------------------------------------------------------------------
/screenshots/blog_type_five.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/blog_type_five.jpg
--------------------------------------------------------------------------------
/screenshots/blog_type_four.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/blog_type_four.jpg
--------------------------------------------------------------------------------
/screenshots/blog_type_one.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/blog_type_one.jpg
--------------------------------------------------------------------------------
/screenshots/blog_type_three.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/blog_type_three.jpg
--------------------------------------------------------------------------------
/screenshots/blog_type_two.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/blog_type_two.jpg
--------------------------------------------------------------------------------
/screenshots/chat_home_page.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/chat_home_page.jpg
--------------------------------------------------------------------------------
/screenshots/chat_message_page.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/chat_message_page.jpg
--------------------------------------------------------------------------------
/screenshots/chat_search_page.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/chat_search_page.jpg
--------------------------------------------------------------------------------
/screenshots/clock_list_page.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/clock_list_page.jpg
--------------------------------------------------------------------------------
/screenshots/contact_us_type_1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/contact_us_type_1.jpg
--------------------------------------------------------------------------------
/screenshots/content_text_eight.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/content_text_eight.jpg
--------------------------------------------------------------------------------
/screenshots/content_text_five.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/content_text_five.jpg
--------------------------------------------------------------------------------
/screenshots/content_text_four.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/content_text_four.jpg
--------------------------------------------------------------------------------
/screenshots/content_text_nine.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/content_text_nine.jpg
--------------------------------------------------------------------------------
/screenshots/content_text_one.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/content_text_one.jpg
--------------------------------------------------------------------------------
/screenshots/content_text_seven.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/content_text_seven.jpg
--------------------------------------------------------------------------------
/screenshots/content_text_six.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/content_text_six.jpg
--------------------------------------------------------------------------------
/screenshots/content_text_ten.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/content_text_ten.jpg
--------------------------------------------------------------------------------
/screenshots/content_text_three.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/content_text_three.jpg
--------------------------------------------------------------------------------
/screenshots/content_text_two.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/content_text_two.jpg
--------------------------------------------------------------------------------
/screenshots/home.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/home.jpg
--------------------------------------------------------------------------------
/screenshots/line_chart.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/line_chart.jpg
--------------------------------------------------------------------------------
/screenshots/location_detail.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/location_detail.jpg
--------------------------------------------------------------------------------
/screenshots/location_list_page.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/location_list_page.jpg
--------------------------------------------------------------------------------
/screenshots/login_type_1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/login_type_1.jpg
--------------------------------------------------------------------------------
/screenshots/login_type_2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/login_type_2.jpg
--------------------------------------------------------------------------------
/screenshots/login_type_3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/login_type_3.jpg
--------------------------------------------------------------------------------
/screenshots/login_type_4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/login_type_4.jpg
--------------------------------------------------------------------------------
/screenshots/menu_page_one.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/menu_page_one.jpg
--------------------------------------------------------------------------------
/screenshots/menu_page_two.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/menu_page_two.jpg
--------------------------------------------------------------------------------
/screenshots/onboard_type_1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/onboard_type_1.jpg
--------------------------------------------------------------------------------
/screenshots/onboard_type_2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/onboard_type_2.jpg
--------------------------------------------------------------------------------
/screenshots/onboard_type_3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/onboard_type_3.jpg
--------------------------------------------------------------------------------
/screenshots/onboard_type_4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/onboard_type_4.jpg
--------------------------------------------------------------------------------
/screenshots/payment_type_four.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/payment_type_four.jpg
--------------------------------------------------------------------------------
/screenshots/payment_type_one.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/payment_type_one.jpg
--------------------------------------------------------------------------------
/screenshots/payment_type_three.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/payment_type_three.jpg
--------------------------------------------------------------------------------
/screenshots/payment_type_two.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/payment_type_two.jpg
--------------------------------------------------------------------------------
/screenshots/settings_page_one.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/settings_page_one.jpg
--------------------------------------------------------------------------------
/screenshots/settings_page_three.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/settings_page_three.jpg
--------------------------------------------------------------------------------
/screenshots/settings_page_two.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/settings_page_two.jpg
--------------------------------------------------------------------------------
/screenshots/shopping_screen_five.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/shopping_screen_five.jpg
--------------------------------------------------------------------------------
/screenshots/shopping_screen_four.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/shopping_screen_four.jpg
--------------------------------------------------------------------------------
/screenshots/shopping_screen_one.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/shopping_screen_one.jpg
--------------------------------------------------------------------------------
/screenshots/shopping_screen_six.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/shopping_screen_six.jpg
--------------------------------------------------------------------------------
/screenshots/shopping_screen_three.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/shopping_screen_three.jpg
--------------------------------------------------------------------------------
/screenshots/shopping_screen_two.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/shopping_screen_two.jpg
--------------------------------------------------------------------------------
/screenshots/signup_type_1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/signup_type_1.jpg
--------------------------------------------------------------------------------
/screenshots/verification_type_1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/verification_type_1.jpg
--------------------------------------------------------------------------------
/screenshots/weather_list_page.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/weather_list_page.jpg
--------------------------------------------------------------------------------
/screenshots/welcome_screen.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/welcome_screen.jpg
--------------------------------------------------------------------------------
/screenshots/welcome_screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathansdev/ContraFlutterKit/f45c33500f2f80258b68846e8e77267d532d1071/screenshots/welcome_screen.png
--------------------------------------------------------------------------------
/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:contraflutterkit/main.dart';
9 | import 'package:flutter/material.dart';
10 | import 'package:flutter_test/flutter_test.dart';
11 |
12 | void main() {
13 | testWidgets('Counter increments smoke test', (WidgetTester tester) async {
14 | // Build our app and trigger a frame.
15 | await tester.pumpWidget(MyApp());
16 |
17 | // Verify that our counter starts at 0.
18 | expect(find.text('0'), findsOneWidget);
19 | expect(find.text('1'), findsNothing);
20 |
21 | // Tap the '+' icon and trigger a frame.
22 | await tester.tap(find.byIcon(Icons.add));
23 | await tester.pump();
24 |
25 | // Verify that our counter has incremented.
26 | expect(find.text('0'), findsNothing);
27 | expect(find.text('1'), findsOneWidget);
28 | });
29 | }
30 |
--------------------------------------------------------------------------------