From 494eaea9ca93bcd25212c91d70dee95d1b771b60 Mon Sep 17 00:00:00 2001 From: hiworin Date: Thu, 25 Dec 2025 10:46:59 +0530 Subject: [PATCH] Generated --- .github/workflows/build.yml | 51 ++ .gitignore | 47 ++ .metadata | 45 ++ 1e7746ff56e91af7d64cbb095c3dc12d | Bin 0 -> 856455 bytes README.md | 16 + analysis_options.yaml | 29 + android/.gitignore | 13 + android/app/build.gradle | 71 ++ android/app/src/debug/AndroidManifest.xml | 8 + android/app/src/main/AndroidManifest.xml | 34 + .../com/example/test_app/MainActivity.kt | 6 + .../res/drawable-v21/launch_background.xml | 12 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../app/src/main/res/values-night/styles.xml | 18 + android/app/src/main/res/values/styles.xml | 18 + android/app/src/profile/AndroidManifest.xml | 8 + android/build.gradle | 31 + android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 6 + android/settings.gradle | 11 + assets/data.json | 1 + database.sql | 26 + ios/.gitignore | 34 + ios/Flutter/AppFrameworkInfo.plist | 26 + ios/Flutter/Debug.xcconfig | 1 + ios/Flutter/Release.xcconfig | 1 + ios/Runner.xcodeproj/project.pbxproj | 481 ++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 87 +++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 +++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 564 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 1283 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 1588 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 1025 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 1716 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 1920 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 1283 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 1895 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 3831 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 1888 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 3294 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 3612 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + ios/Runner/Base.lproj/LaunchScreen.storyboard | 37 + ios/Runner/Base.lproj/Main.storyboard | 26 + ios/Runner/Info.plist | 49 ++ ios/Runner/Runner-Bridging-Header.h | 1 + lib/main.dart | 7 + lib/src/app.dart | 250 ++++++ lib/src/data/models/_models.dart | 1 + lib/src/data/models/sample.dart | 34 + lib/src/data/repository/_dao.dart | 25 + lib/src/data/repository/sample_dao.dart | 90 +++ lib/src/ui/views/about_us.dart | 152 ++++ lib/src/ui/views/audio_article_60rn.dart | 466 ++++++++++++ lib/src/ui/views/bookmark_2rub.dart | 184 +++++ lib/src/ui/views/category_e0b3.dart | 128 ++++ lib/src/ui/views/change_password_5ugn.dart | 326 ++++++++ lib/src/ui/views/chat_n9xm.dart | 716 ++++++++++++++++++ lib/src/ui/views/contact_us_inkn.dart | 312 ++++++++ lib/src/ui/views/dashboard_jvxm.dart | 626 +++++++++++++++ lib/src/ui/views/data_not_found_f1qf.dart | 147 ++++ lib/src/ui/views/detail_dm5h.dart | 216 ++++++ lib/src/ui/views/discover_au68.dart | 496 ++++++++++++ lib/src/ui/views/empty_pin_notes_1l1v.dart | 118 +++ lib/src/ui/views/following_s3l5.dart | 517 +++++++++++++ lib/src/ui/views/forgot_password_xt11.dart | 262 +++++++ lib/src/ui/views/grid_kcdz.dart | 579 ++++++++++++++ lib/src/ui/views/home_cigx.dart | 576 ++++++++++++++ lib/src/ui/views/labels_sxue.dart | 251 ++++++ lib/src/ui/views/list_1eal.dart | 213 ++++++ lib/src/ui/views/login_qayv.dart | 319 ++++++++ lib/src/ui/views/membership_z9ze.dart | 153 ++++ lib/src/ui/views/my_account_tyvz.dart | 109 +++ lib/src/ui/views/news_details_t6nw.dart | 121 +++ lib/src/ui/views/no_data_found_shk8.dart | 133 ++++ .../ui/views/notification_setting_bycd.dart | 157 ++++ lib/src/ui/views/pin_note_list_qn8a.dart | 270 +++++++ lib/src/ui/views/profile_pzn0.dart | 359 +++++++++ lib/src/ui/views/register_obmz.dart | 181 +++++ lib/src/ui/views/review_47su.dart | 268 +++++++ lib/src/ui/views/setting_pano.dart | 411 ++++++++++ lib/src/ui/views/splash_p2g8.dart | 120 +++ lib/src/ui/views/verification_nhug.dart | 180 +++++ pubspec.lock | 167 ++++ pubspec.yaml | 39 + web/favicon.png | Bin 0 -> 917 bytes web/icons/Icon-192.png | Bin 0 -> 5292 bytes web/icons/Icon-512.png | Bin 0 -> 8252 bytes web/icons/Icon-maskable-192.png | Bin 0 -> 5594 bytes web/icons/Icon-maskable-512.png | Bin 0 -> 20998 bytes web/index.html | 58 ++ web/manifest.json | 35 + 111 files changed, 11190 insertions(+) create mode 100644 .github/workflows/build.yml create mode 100644 .gitignore create mode 100644 .metadata create mode 100644 1e7746ff56e91af7d64cbb095c3dc12d create mode 100644 README.md create mode 100644 analysis_options.yaml create mode 100644 android/.gitignore create mode 100644 android/app/build.gradle create mode 100644 android/app/src/debug/AndroidManifest.xml create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/kotlin/com/example/test_app/MainActivity.kt create mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 android/app/src/main/res/drawable/launch_background.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/values-night/styles.xml create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/app/src/profile/AndroidManifest.xml create mode 100644 android/build.gradle create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100644 android/settings.gradle create mode 100644 assets/data.json create mode 100644 database.sql create mode 100644 ios/.gitignore create mode 100644 ios/Flutter/AppFrameworkInfo.plist create mode 100644 ios/Flutter/Debug.xcconfig create mode 100644 ios/Flutter/Release.xcconfig create mode 100644 ios/Runner.xcodeproj/project.pbxproj create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner/AppDelegate.swift create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 ios/Runner/Base.lproj/Main.storyboard create mode 100644 ios/Runner/Info.plist create mode 100644 ios/Runner/Runner-Bridging-Header.h create mode 100644 lib/main.dart create mode 100644 lib/src/app.dart create mode 100644 lib/src/data/models/_models.dart create mode 100644 lib/src/data/models/sample.dart create mode 100644 lib/src/data/repository/_dao.dart create mode 100644 lib/src/data/repository/sample_dao.dart create mode 100644 lib/src/ui/views/about_us.dart create mode 100644 lib/src/ui/views/audio_article_60rn.dart create mode 100644 lib/src/ui/views/bookmark_2rub.dart create mode 100644 lib/src/ui/views/category_e0b3.dart create mode 100644 lib/src/ui/views/change_password_5ugn.dart create mode 100644 lib/src/ui/views/chat_n9xm.dart create mode 100644 lib/src/ui/views/contact_us_inkn.dart create mode 100644 lib/src/ui/views/dashboard_jvxm.dart create mode 100644 lib/src/ui/views/data_not_found_f1qf.dart create mode 100644 lib/src/ui/views/detail_dm5h.dart create mode 100644 lib/src/ui/views/discover_au68.dart create mode 100644 lib/src/ui/views/empty_pin_notes_1l1v.dart create mode 100644 lib/src/ui/views/following_s3l5.dart create mode 100644 lib/src/ui/views/forgot_password_xt11.dart create mode 100644 lib/src/ui/views/grid_kcdz.dart create mode 100644 lib/src/ui/views/home_cigx.dart create mode 100644 lib/src/ui/views/labels_sxue.dart create mode 100644 lib/src/ui/views/list_1eal.dart create mode 100644 lib/src/ui/views/login_qayv.dart create mode 100644 lib/src/ui/views/membership_z9ze.dart create mode 100644 lib/src/ui/views/my_account_tyvz.dart create mode 100644 lib/src/ui/views/news_details_t6nw.dart create mode 100644 lib/src/ui/views/no_data_found_shk8.dart create mode 100644 lib/src/ui/views/notification_setting_bycd.dart create mode 100644 lib/src/ui/views/pin_note_list_qn8a.dart create mode 100644 lib/src/ui/views/profile_pzn0.dart create mode 100644 lib/src/ui/views/register_obmz.dart create mode 100644 lib/src/ui/views/review_47su.dart create mode 100644 lib/src/ui/views/setting_pano.dart create mode 100644 lib/src/ui/views/splash_p2g8.dart create mode 100644 lib/src/ui/views/verification_nhug.dart create mode 100644 pubspec.lock create mode 100644 pubspec.yaml create mode 100644 web/favicon.png create mode 100644 web/icons/Icon-192.png create mode 100644 web/icons/Icon-512.png create mode 100644 web/icons/Icon-maskable-192.png create mode 100644 web/icons/Icon-maskable-512.png create mode 100644 web/index.html create mode 100644 web/manifest.json diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..504c660 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,51 @@ +name: Build and deploy +run-name: Food delivery +on: push +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Clone repository + uses: actions/checkout@v4 + + - name: Archive project + run: | + mkdir -p dist/downloads + zip -r dist/downloads/archive.zip . -x '.git/*' -x '.github/*' -x '.gitea/*' -x 'dist/*' -x 'build/*' + + - name: Build project + uses: subosito/flutter-action@v2 + with: + channel: stable + flutter-version: 3.24.5 + - run: flutter pub get + - run: dart run build_runner build --delete-conflicting-outputs + #- run: flutter test + - run: flutter build web --base-href=/b5239596a3/ --release + #- run: flutter build web --base-href=/b5239596a3/ --profile --dart-define=Dart2jsOptimization=O0 + + - name: Create releases + run: | + (cd build/web && zip -r ../../dist/downloads/web.zip .) + echo 'android' >> dist/downloads/app.apk + mv build/web/* dist/ + mkdir b5239596a3 && mv dist/* b5239596a3/ && mv b5239596a3 dist/ + + - name: Setup database + uses: appremix/mysql-deploy-action@v1 + with: + DATABASE_HOST: '${{ vars.db_hostname }}' + DATABASE_PORT: '${{ vars.db_port }}' + DATABASE_NAME: '' + DATABASE_USERNAME: '${{ secrets.db_username }}' + DATABASE_PASSWORD: '${{ secrets.db_password }}' + DATABASE_SCRIPT: 'database.sql' + + - name: Deploy project + uses: SamKirkland/FTP-Deploy-Action@v4.3.4 + with: + server: ${{ vars.ftp_server }} + username: ${{ secrets.ftp_username }} + password: ${{ secrets.ftp_password }} + local-dir: ./dist/ + server-dir: ./ \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..504d1e5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,47 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Web related +lib/generated_plugin_registrant.dart + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/.metadata b/.metadata new file mode 100644 index 0000000..95f73f5 --- /dev/null +++ b/.metadata @@ -0,0 +1,45 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled. + +version: + revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + channel: stable + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + base_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + - platform: android + create_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + base_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + - platform: ios + create_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + base_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + - platform: linux + create_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + base_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + - platform: macos + create_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + base_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + - platform: web + create_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + base_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + - platform: windows + create_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + base_revision: fb57da5f945d02ef4f98dfd9409a72b7cce74268 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/1e7746ff56e91af7d64cbb095c3dc12d b/1e7746ff56e91af7d64cbb095c3dc12d new file mode 100644 index 0000000000000000000000000000000000000000..6bd0943a1e63885ad93c635c2c57d6f2fb275594 GIT binary patch literal 856455 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
X5}g! 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 + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion flutter.compileSdkVersion + ndkVersion flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "com.example.app" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. + minSdkVersion flutter.minSdkVersion + targetSdkVersion flutter.targetSdkVersion + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..6893e39 --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..1315799 --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/android/app/src/main/kotlin/com/example/test_app/MainActivity.kt b/android/app/src/main/kotlin/com/example/test_app/MainActivity.kt new file mode 100644 index 0000000..dcc24e8 --- /dev/null +++ b/android/app/src/main/kotlin/com/example/test_app/MainActivity.kt @@ -0,0 +1,6 @@ +package com.example.test_app + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..1cb7aa2 --- /dev/null +++ b/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..8403758 --- /dev/null +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0 GIT binary patch literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..360a160 --- /dev/null +++ b/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..5fac679 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..6893e39 --- /dev/null +++ b/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..104a486 --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.6.10' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.1.2' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..46c1f16 --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..258d5e1 --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Jun 23 08:50:38 CEST 2017 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..33f0745 --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,11 @@ +include ':app' + +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + +def flutterSdkPath = properties.getProperty("flutter.sdk") +assert flutterSdkPath != null, "flutter.sdk not set in local.properties" +apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/assets/data.json b/assets/data.json new file mode 100644 index 0000000..95ba9d6 --- /dev/null +++ b/assets/data.json @@ -0,0 +1 @@ +{"sample":[{"date":"2021-09-03","boolean":true,"string":"lorem","integer":1,"decimal":1},{"date":"2022-10-03","boolean":false,"string":"ipsum","integer":2,"decimal":2},{"date":"2023-11-03","boolean":true,"string":"dolor","integer":3,"decimal":3}]} \ No newline at end of file diff --git a/database.sql b/database.sql new file mode 100644 index 0000000..910af39 --- /dev/null +++ b/database.sql @@ -0,0 +1,26 @@ +DROP DATABASE IF EXISTS `b5239596a3`; +CREATE DATABASE `b5239596a3` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; +USE `b5239596a3`; + +SET NAMES utf8; +SET time_zone = '+00:00'; +SET foreign_key_checks = 0; +SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; + +-- DROP TABLE IF EXISTS `sample`; +CREATE TABLE `sample` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `string` varchar(255), + `integer` int, + `decimal` decimal(10,2), + `boolean` bit(1), + `date` datetime, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +INSERT INTO `sample` (`string`, `integer`, `decimal`, `boolean`, `date`) VALUES +('lorem', 1, 1, true, '2021-09-03'), +('ipsum', 2, 2, false, '2022-10-03'), +('dolor', 3, 3, true, '2023-11-03'); + +SET foreign_key_checks = 1; \ No newline at end of file diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 0000000..ad322bc --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000..80391e4 --- /dev/null +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 9.0 + + diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..0b2d479 --- /dev/null +++ b/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..0b2d479 --- /dev/null +++ b/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..e568735 --- /dev/null +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,481 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.testApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.testApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.testApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..c4b79bd --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..fc6bf80 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..af0309c --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..f9cbb25 --- /dev/null +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..59c6d39 --- /dev/null +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..fc6bf80 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..af0309c --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000..3763683 --- /dev/null +++ b/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..1950fd8 --- /dev/null +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332 GIT binary patch literal 10932 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f091b6b0bca859a3f474b03065bef75ba58a9e4c GIT binary patch literal 1588 zcmV-42Fv-0P)C1SqPt}wig>|5Crh^=oyX$BK<}M8eLU3e2hGT;=G|!_SP)7zNI6fqUMB=)y zRAZ>eDe#*r`yDAVgB_R*LB*MAc)8(b{g{9McCXW!lq7r(btRoB9!8B-#AI6JMb~YFBEvdsV)`mEQO^&#eRKx@b&x- z5lZm*!WfD8oCLzfHGz#u7sT0^VLMI1MqGxF^v+`4YYnVYgk*=kU?HsSz{v({E3lb9 z>+xILjBN)t6`=g~IBOelGQ(O990@BfXf(DRI5I$qN$0Gkz-FSc$3a+2fX$AedL4u{ z4V+5Ong(9LiGcIKW?_352sR;LtDPmPJXI{YtT=O8=76o9;*n%_m|xo!i>7$IrZ-{l z-x3`7M}qzHsPV@$v#>H-TpjDh2UE$9g6sysUREDy_R(a)>=eHw-WAyfIN z*qb!_hW>G)Tu8nSw9yn#3wFMiLcfc4pY0ek1}8(NqkBR@t4{~oC>ryc-h_ByH(Cg5 z>ao-}771+xE3um9lWAY1FeQFxowa1(!J(;Jg*wrg!=6FdRX+t_<%z&d&?|Bn){>zm zZQj(aA_HeBY&OC^jj*)N`8fa^ePOU72VpInJoI1?`ty#lvlNzs(&MZX+R%2xS~5Kh zX*|AU4QE#~SgPzOXe9>tRj>hjU@c1k5Y_mW*Jp3fI;)1&g3j|zDgC+}2Q_v%YfDax z!?umcN^n}KYQ|a$Lr+51Nf9dkkYFSjZZjkma$0KOj+;aQ&721~t7QUKx61J3(P4P1 zstI~7-wOACnWP4=8oGOwz%vNDqD8w&Q`qcNGGrbbf&0s9L0De{4{mRS?o0MU+nR_! zrvshUau0G^DeMhM_v{5BuLjb#Hh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG z;P%vktHcXwTj~+IE(~px)3*MY77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC z(zYC$g|@+I+kY;dg_dE>scBf&bP1Nc@Hz<3R)V`=AGkc;8CXqdi=B4l2k|g;2%#m& z*jfX^%b!A8#bI!j9-0Fi0bOXl(-c^AB9|nQaE`*)Hw+o&jS9@7&Gov#HbD~#d{twV zXd^Tr^mWLfFh$@Dr$e;PBEz4(-2q1FF0}c;~B5sA}+Q>TOoP+t>wf)V9Iy=5ruQa;z)y zI9C9*oUga6=hxw6QasLPnee@3^Rr*M{CdaL5=R41nLs(AHk_=Y+A9$2&H(B7!_pURs&8aNw7?`&Z&xY_Ye z)~D5Bog^td-^QbUtkTirdyK^mTHAOuptDflut!#^lnKqU md>ggs(5nOWAqO?umG&QVYK#ibz}*4>0000U6E9hRK9^#O7(mu>ETqrXGsduA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnbRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yI zC*%Wgg22K|8E#!~cTNYR~@Y9KepMPrrB8cABapAFa=`H+UGhkXUZV1GnwR1*lPyZ;*K(i~2gp|@bzp8}og7e*#% zEnr|^CWdVV!-4*Y_7rFvlww2Ze+>j*!Z!pQ?2l->4q#nqRu9`ELo6RMS5=br47g_X zRw}P9a7RRYQ%2Vsd0Me{_(EggTnuN6j=-?uFS6j^u69elMypu?t>op*wBx<=Wx8?( ztpe^(fwM6jJX7M-l*k3kEpWOl_Vk3@(_w4oc}4YF4|Rt=2V^XU?#Yz`8(e?aZ@#li0n*=g^qOcVpd-Wbok=@b#Yw zqn8u9a)z>l(1kEaPYZ6hwubN6i<8QHgsu0oE) ziJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+&KI9y^);#0qt}t-$C|Bo71lHi{_+lg#f%RFy z0um=e3$K3i6K{U_4K!EX?F&rExl^W|G8Z8;`5z-k}OGNZ0#WVb$WCpQu-_YsiqKP?BB# vzVHS-CTUF4Ozn5G+mq_~Qqto~ahA+K`|lyv3(-e}00000NkvXXu0mjfd`9t{ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d0ef06e7edb86cdfe0d15b4b0d98334a86163658 GIT binary patch literal 1716 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f9ed8f5cee1c98386d13b17e89f719e83555b2 GIT binary patch literal 1895 zcmV-t2blPYP)FQtfgmafE#=YDCq`qUBt#QpG%*H6QHY765~R=q zZ6iudfM}q!Pz#~9JgOi8QJ|DSu?1-*(kSi1K4#~5?#|rh?sS)(-JQqX*}ciXJ56_H zdw=^s_srbAdqxlvGyrgGet#6T7_|j;95sL%MtM;q86vOxKM$f#puR)Bjv9Zvz9-di zXOTSsZkM83)E9PYBXC<$6(|>lNLVBb&&6y{NByFCp%6+^ALR@NCTse_wqvNmSWI-m z!$%KlHFH2omF!>#%1l3LTZg(s7eof$7*xB)ZQ0h?ejh?Ta9fDv59+u#MokW+1t8Zb zgHv%K(u9G^Lv`lh#f3<6!JVTL3(dCpxHbnbA;kKqQyd1~^Xe0VIaYBSWm6nsr;dFj z4;G-RyL?cYgsN1{L4ZFFNa;8)Rv0fM0C(~Tkit94 zz#~A)59?QjD&pAPSEQ)p8gP|DS{ng)j=2ux)_EzzJ773GmQ_Cic%3JJhC0t2cx>|v zJcVusIB!%F90{+}8hG3QU4KNeKmK%T>mN57NnCZ^56=0?&3@!j>a>B43pi{!u z7JyDj7`6d)qVp^R=%j>UIY6f+3`+qzIc!Y_=+uN^3BYV|o+$vGo-j-Wm<10%A=(Yk^beI{t%ld@yhKjq0iNjqN4XMGgQtbKubPM$JWBz}YA65k%dm*awtC^+f;a-x4+ddbH^7iDWGg&N0n#MW{kA|=8iMUiFYvMoDY@sPC#t$55gn6ykUTPAr`a@!(;np824>2xJthS z*ZdmT`g5-`BuJs`0LVhz+D9NNa3<=6m;cQLaF?tCv8)zcRSh66*Z|vXhG@$I%U~2l z?`Q zykI#*+rQ=z6Jm=Bui-SfpDYLA=|vzGE(dYm=OC8XM&MDo7ux4UF1~0J1+i%aCUpRe zt3L_uNyQ*cE(38Uy03H%I*)*Bh=Lb^Xj3?I^Hnbeq72(EOK^Y93CNp*uAA{5Lc=ky zx=~RKa4{iTm{_>_vSCm?$Ej=i6@=m%@VvAITnigVg{&@!7CDgs908761meDK5azA} z4?=NOH|PdvabgJ&fW2{Mo$Q0CcD8Qc84%{JPYt5EiG{MdLIAeX%T=D7NIP4%Hw}p9 zg)==!2Lbp#j{u_}hMiao9=!VSyx0gHbeCS`;q&vzeq|fs`y&^X-lso(Ls@-706qmA z7u*T5PMo_w3{se1t2`zWeO^hOvTsohG_;>J0wVqVe+n)AbQCx)yh9;w+J6?NF5Lmo zecS@ieAKL8%bVd@+-KT{yI|S}O>pYckUFs;ry9Ow$CD@ztz5K-*D$^{i(_1llhSh^ zEkL$}tsQt5>QA^;QgjgIfBDmcOgi5YDyu?t6vSnbp=1+@6D& z5MJ}B8q;bRlVoxasyhcUF1+)o`&3r0colr}QJ3hcSdLu;9;td>kf@Tcn<@9sIx&=m z;AD;SCh95=&p;$r{Xz3iWCO^MX83AGJ(yH&eTXgv|0=34#-&WAmw{)U7OU9!Wz^!7 zZ%jZFi@JR;>Mhi7S>V7wQ176|FdW2m?&`qa(ScO^CFPR80HucLHOTy%5s*HR0^8)i h0WYBP*#0Ks^FNSabJA*5${_#%002ovPDHLkV1oKhTl@e3 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22 GIT binary patch literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22 GIT binary patch literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..75b2d164a5a98e212cca15ea7bf2ab5de5108680 GIT binary patch literal 3831 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..c4df70d39da7941ef3f6dcb7f06a192d8dcb308d GIT binary patch literal 1888 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 iW8Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 0000000..65a94b5 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..497371e --- /dev/null +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..bbb83ca --- /dev/null +++ b/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist new file mode 100644 index 0000000..d141db5 --- /dev/null +++ b/ios/Runner/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Food delivery + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + food_delivery + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + CADisableMinimumFrameDurationOnPhone + + + diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000..fae207f --- /dev/null +++ b/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/lib/main.dart b/lib/main.dart new file mode 100644 index 0000000..2d48b29 --- /dev/null +++ b/lib/main.dart @@ -0,0 +1,7 @@ +import 'package:flutter/material.dart'; + +import 'src/app.dart'; + +void main() { + runApp(MyApp()); +} diff --git a/lib/src/app.dart b/lib/src/app.dart new file mode 100644 index 0000000..644db4c --- /dev/null +++ b/lib/src/app.dart @@ -0,0 +1,250 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; + +import 'common/utils.dart'; +import 'data/repository/_dao.dart'; +//import 'data/api/_api.dart'; +import 'data/models/_models.dart'; +import 'ui/views/_views.dart'; + +class MyApp extends StatelessWidget { + @override + Widget build(BuildContext context) { + return MultiProvider( + providers: [ + ChangeNotifierProvider(create: (context) => AppController(context)), + // more providers here + ], + child: MaterialApp.router( + title: 'Demo', + debugShowCheckedModeBanner: false, + theme: ThemeData( + primarySwatch: Colors.blue, + brightness: Brightness.light, + visualDensity: VisualDensity.adaptivePlatformDensity, + ), + routerConfig: GoRouter( + initialLocation: '/aboutus', + routes: [ + GoRoute( + path: '/aboutus', + builder: (context, state) { + return AboutUsView(extra: state.extra); + }, + ), + GoRoute( + path: '/audioarticle_60rn', + builder: (context, state) { + return AudioArticle_60rnView(extra: state.extra); + }, + ), + GoRoute( + path: '/bookmark_2rub', + builder: (context, state) { + return Bookmark_2rubView(extra: state.extra); + }, + ), + GoRoute( + path: '/category_e0b3', + builder: (context, state) { + return Category_e0b3View(extra: state.extra); + }, + ), + GoRoute( + path: '/changepassword_5ugn', + builder: (context, state) { + return ChangePassword_5ugnView(extra: state.extra); + }, + ), + GoRoute( + path: '/chat_n9xm', + builder: (context, state) { + return Chat_n9xmView(extra: state.extra); + }, + ), + GoRoute( + path: '/contactus_inkn', + builder: (context, state) { + return ContactUs_inknView(extra: state.extra); + }, + ), + GoRoute( + path: '/dashboard_jvxm', + builder: (context, state) { + return Dashboard_jvxmView(extra: state.extra); + }, + ), + GoRoute( + path: '/datanotfound_f1qf', + builder: (context, state) { + return DataNotFound_f1qfView(extra: state.extra); + }, + ), + GoRoute( + path: '/detail_dm5h', + builder: (context, state) { + return Detail_dm5hView(extra: state.extra); + }, + ), + GoRoute( + path: '/discover_au68', + builder: (context, state) { + return Discover_au68View(extra: state.extra); + }, + ), + GoRoute( + path: '/emptypinnotes_1l1v', + builder: (context, state) { + return EmptyPinNotes_1l1vView(extra: state.extra); + }, + ), + GoRoute( + path: '/following_s3l5', + builder: (context, state) { + return Following_s3l5View(extra: state.extra); + }, + ), + GoRoute( + path: '/forgotpassword_xt11', + builder: (context, state) { + return ForgotPassword_xt11View(extra: state.extra); + }, + ), + GoRoute( + path: '/grid_kcdz', + builder: (context, state) { + return Grid_kcdzView(extra: state.extra); + }, + ), + GoRoute( + path: '/home_cigx', + builder: (context, state) { + return Home_cigxView(extra: state.extra); + }, + ), + GoRoute( + path: '/labels_sxue', + builder: (context, state) { + return Labels_sxueView(extra: state.extra); + }, + ), + GoRoute( + path: '/list_1eal', + builder: (context, state) { + return List_1ealView(extra: state.extra); + }, + ), + GoRoute( + path: '/login_qayv', + builder: (context, state) { + return Login_qayvView(extra: state.extra); + }, + ), + GoRoute( + path: '/membership_z9ze', + builder: (context, state) { + return Membership_z9zeView(extra: state.extra); + }, + ), + GoRoute( + path: '/myaccount_tyvz', + builder: (context, state) { + return MyAccount_tyvzView(extra: state.extra); + }, + ), + GoRoute( + path: '/newsdetails_t6nw', + builder: (context, state) { + return NewsDetails_t6nwView(extra: state.extra); + }, + ), + GoRoute( + path: '/nodatafound_shk8', + builder: (context, state) { + return NoDataFound_shk8View(extra: state.extra); + }, + ), + GoRoute( + path: '/notificationsetting_bycd', + builder: (context, state) { + return NotificationSetting_bycdView(extra: state.extra); + }, + ), + GoRoute( + path: '/pinnotelist_qn8a', + builder: (context, state) { + return PinNoteList_qn8aView(extra: state.extra); + }, + ), + GoRoute( + path: '/profile_pzn0', + builder: (context, state) { + return Profile_pzn0View(extra: state.extra); + }, + ), + GoRoute( + path: '/register_obmz', + builder: (context, state) { + return Register_obmzView(extra: state.extra); + }, + ), + GoRoute( + path: '/review_47su', + builder: (context, state) { + return Review_47suView(extra: state.extra); + }, + ), + GoRoute( + path: '/setting_pano', + builder: (context, state) { + return Setting_panoView(extra: state.extra); + }, + ), + GoRoute( + path: '/splash_p2g8', + builder: (context, state) { + return Splash_p2g8View(extra: state.extra); + }, + ), + GoRoute( + path: '/verification_nhug', + builder: (context, state) { + return Verification_nhugView(extra: state.extra); + }, + ), + GoRoute( + path: '/welcome_g72w', + builder: (context, state) { + return Welcome_g72wView(extra: state.extra); + }, + ), + ], + ), + ), + ); + } +} + +class AppController with ChangeNotifier { + static AppController? _instance; + final BuildContext context; + + // singleton instance + factory AppController(BuildContext context) => + _instance ??= AppController._internal(context); + + AppController._internal(this.context) { + loadData(); + } + + Future loadData() async { + await fillWithMockData(); + } + + void back() { + Navigator.maybePop(context); + } + + final sampleDao = SampleDao(); +} diff --git a/lib/src/data/models/_models.dart b/lib/src/data/models/_models.dart new file mode 100644 index 0000000..426e3ff --- /dev/null +++ b/lib/src/data/models/_models.dart @@ -0,0 +1 @@ +export 'sample.dart'; diff --git a/lib/src/data/models/sample.dart b/lib/src/data/models/sample.dart new file mode 100644 index 0000000..a9b04b7 --- /dev/null +++ b/lib/src/data/models/sample.dart @@ -0,0 +1,34 @@ +import 'package:json_annotation/json_annotation.dart'; + +import '_models.dart'; + +part 'sample.g.dart'; + +@JsonSerializable() +class Sample { + Sample({this.string, this.integer, this.decimal, this.boolean, this.date}); + + String? string; + int? integer; + double? decimal; + bool? boolean; + DateTime? date; + + @JsonKey(ignore: true) + String? id; + + factory Sample.fromJson(Map json) => _$SampleFromJson(json); + + Map toJson() => _$SampleToJson(this); + + @override + operator ==(Object other) => other is Sample && other.id == id; + + @override + int get hashCode => id.hashCode; + + @override + String toString() { + return ''; + } +} diff --git a/lib/src/data/repository/_dao.dart b/lib/src/data/repository/_dao.dart new file mode 100644 index 0000000..86d32da --- /dev/null +++ b/lib/src/data/repository/_dao.dart @@ -0,0 +1,25 @@ +export 'sample_dao.dart'; + +abstract class Dao { + Future delete(String id); + + Future deleteAll(); + + T? get(String id); + + List getAll(); + + T create(); + + Future insert(T item); + + Future> fetchAll(); + + Future fetch(String id); + + Future update(T item, String id); + + Future upsert(T item); + + Stream> subscribe(); +} diff --git a/lib/src/data/repository/sample_dao.dart b/lib/src/data/repository/sample_dao.dart new file mode 100644 index 0000000..5b6464d --- /dev/null +++ b/lib/src/data/repository/sample_dao.dart @@ -0,0 +1,90 @@ +import 'dart:async'; + +import 'package:uuid/uuid.dart' as uuid; +import 'package:flutter/foundation.dart'; + +import '../models/_models.dart'; +import '_dao.dart'; + +class SampleDao extends Dao { + static SampleDao? _instance; + + // singleton instance + factory SampleDao() => _instance ??= SampleDao._internal(); + + SampleDao._internal() { + // initialization logic here + } + + final Map _storage = {}; + final StreamController> _streamController = + StreamController>.broadcast(); + + @override + Future delete(String id) async { + var removed = _storage.remove(id); + _emit(); + return removed; + } + + @override + Future deleteAll() async { + _storage.clear(); + _emit(); + return true; + } + + @override + Sample? get(String id) { + return _storage[id]; + } + + @override + List getAll() { + return _storage.values.toList(); + } + + @override + Sample create() { + return Sample(); + } + + @override + Future insert(Sample item) async { + var id = const uuid.Uuid().v4(); + //var newSample = Sample(name: item.name)..id = id; + var newSample = item..id = id; + _storage[id] = newSample; + _emit(); + return newSample; + } + + @override + Future> fetchAll() async { + return _storage.values.toList(); + } + + @override + Future fetch(String id) async { + return _storage[id]; + } + + @override + Future update(Sample item, String id) async { + _storage[id] = item; + _emit(); + return item..id = id; + } + + @override + Future upsert(Sample item) async { + return (item.id == null) ? insert(item) : update(item, item.id!); + } + + @override + Stream> subscribe() => _streamController.stream; + + void _emit() { + _streamController.add(_storage.values.toList()); + } +} diff --git a/lib/src/ui/views/about_us.dart b/lib/src/ui/views/about_us.dart new file mode 100644 index 0000000..45c8fc8 --- /dev/null +++ b/lib/src/ui/views/about_us.dart @@ -0,0 +1,152 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class AboutUsView extends StatefulWidget { + final Object? extra; + + AboutUsView({super.key, this.extra}); + + @override + State createState() => _AboutUsViewState(); +} + +class _AboutUsViewState extends State { + late AboutUsController _view; + + @override + void initState() { + super.initState(); + _view = AboutUsController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 0, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0xffffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.aboutUs_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xff000000), + ), + ), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xff212435), size: 24), + onPressed: () { + app.back(); + }, + ), + ), + body: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.myApp_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontFamily: GoogleFonts.getFont('Montserrat').fontFamily, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 24, + color: Color(0xff000000), + ), + ), + Text( + Constants.indiasLargetsFashionApp_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + Opacity( + opacity: 0.5, + child: Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/GCCDJ67/into-success-group-young-freelancers-office-have-conversation-smiling-146671-13567.jpg', + ), + height: 220, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 16), + child: Text( + Constants.loremIpsumIsSimplyDummyTe_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff222020), + ), + ), + ), + Padding3297_l244( + Constants.testgmailcom_, + Constants.forAnyPressAndMediaInquir_, + Constants.loremIpsumDolorSitAmetCo_, + Constants.misson_, + Constants.itIsALongEstablishedFact_, + Constants.vision_, + ), + ], + ), + ), + ), + ), + ); + } +} + +class AboutUsController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/audio_article_60rn.dart b/lib/src/ui/views/audio_article_60rn.dart new file mode 100644 index 0000000..00990a9 --- /dev/null +++ b/lib/src/ui/views/audio_article_60rn.dart @@ -0,0 +1,466 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class AudioArticle_60rnView extends StatefulWidget { + final Object? extra; + + AudioArticle_60rnView({super.key, this.extra}); + + @override + State createState() => _AudioArticle_60rnViewState(); +} + +class _AudioArticle_60rnViewState extends State { + late AudioArticle_60rnController _view; + + @override + void initState() { + super.initState(); + _view = AudioArticle_60rnController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar2671_1agg(() { + view._click(); + }, Constants.audioArticle_), + body: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: EdgeInsets.all(16), + child: Text( + Constants.continueListening_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + height: 190, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + border: Border.all(color: Color(0x4dffffff), width: 1), + ), + child: ListView( + scrollDirection: Axis.horizontal, + padding: EdgeInsets.fromLTRB(0, 0, 16, 0), + shrinkWrap: false, + physics: ScrollPhysics(), + children: [ + Padding2654_rvnw( + Constants.k3201_, + Constants.howToStartYourUXDesignCa_, + 'https://i.ibb.co/jgzmNKz/cartoon-graphic-design-landing-page-52683-70881.jpg', + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: ClipRRect( + borderRadius: BorderRadius.circular(16.0), + child: SizedBox( + height: 170, + width: 150, + child: Stack( + alignment: Alignment.bottomCenter, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/dQWbrZN/graphic-designer-top-view-mockup-with-laptop-23-2147675736.jpg', + ), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + decoration: BoxDecoration( + color: Color(0xa04e4b4b), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + ), + Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 16, + ), + child: Text( + Constants.learningAboutDesignThinking_, + textAlign: TextAlign.start, + maxLines: 2, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + Row( + mainAxisAlignment: + MainAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: Slider( + onChanged: (value) {}, + value: 8, + min: 0, + max: 10, + activeColor: Color(0xffffffff), + inactiveColor: Color(0xff9e9e9e), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB( + 0, + 0, + 16, + 0, + ), + child: Text( + Constants.k4000_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 10, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ], + ), + ], + ), + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 16, 0, 16), + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Padding2656_z413(Constants.allNews_), + Padding2657_r22y(Constants.tech_), + Padding2658_p1zk(Constants.fashion_), + Padding2659_acub(Constants.art_), + Padding2660_8c7p(Constants.politics_), + Padding2661_qzry(Constants.sports_), + Padding2662_bl2j(Constants.science_), + ], + ), + ), + ), + ListView( + scrollDirection: Axis.vertical, + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 16), + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + children: [ + Padding2663_fus1( + Constants.k20June2019_, + Constants.shouldDesignerIsAbleToCod_, + Constants.design_, + 'https://i.ibb.co/Y8g25GC/realistic-ui-ux-background-52683-68896.jpg', + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(16.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/3NTCBFn/dae-jang-geum-park-korean-historical-drama-south-korea-335224-516.jpg', + ), + height: 90, + width: 90, + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.lifeStyle_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffff5630), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 8), + child: Text( + Constants.k6MonthsExperienceLivingIn_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Text( + Constants.k25Jan2020_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xbe8a8989), + ), + ), + ], + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(16.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/Hzssmsx/soccer-stadium-1284-22432.jpg', + ), + height: 90, + width: 90, + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.sports_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffff5630), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 8), + child: Text( + Constants.predictionAboutWhoWillWin_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Text( + Constants.k25Jan2020_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xbe8a8989), + ), + ), + ], + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(16.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/Y8g25GC/realistic-ui-ux-background-52683-68896.jpg', + ), + height: 90, + width: 90, + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.design_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffff5630), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 8), + child: Text( + Constants.shouldDesignerIsAbleToCod_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Text( + Constants.k25Jan2020_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xbe8a8989), + ), + ), + ], + ), + ), + ), + ], + ), + ), + ], + ), + ], + ), + ), + ), + ), + ); + } +} + +class AudioArticle_60rnController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/bookmark_2rub.dart b/lib/src/ui/views/bookmark_2rub.dart new file mode 100644 index 0000000..366abc9 --- /dev/null +++ b/lib/src/ui/views/bookmark_2rub.dart @@ -0,0 +1,184 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Bookmark_2rubView extends StatefulWidget { + final Object? extra; + + Bookmark_2rubView({super.key, this.extra}); + + @override + State createState() => _Bookmark_2rubViewState(); +} + +class _Bookmark_2rubViewState extends State { + late Bookmark_2rubController _view; + + @override + void initState() { + super.initState(); + _view = Bookmark_2rubController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 0, + centerTitle: true, + automaticallyImplyLeading: false, + backgroundColor: Color(0x00ffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.bookmark_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff000000), + ), + ), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xff212435), size: 24), + onPressed: () { + app.back(); + }, + ), + ), + body: Padding( + padding: EdgeInsets.all(16), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row3264_os4l(Constants.mostRecent_, Constants.sortBy_), + ListView( + scrollDirection: Axis.vertical, + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + shrinkWrap: true, + physics: ScrollPhysics(), + children: [ + Padding3261_vzwy( + Constants.k12Jan2021_, + Constants.aSmartRobotFromHeroCompan_, + Constants.technology_, + 'https://i.ibb.co/D8Lsh6x/ai-nuclear-energy-industry-innovation-smart-grid-disruptive-technology-53876-143121.jpg', + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(12.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/yYJ6S0k/young-woman-with-shopping-bags-beautiful-dress-1303-17550.jpg', + ), + height: 100, + width: 100, + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(16, 0, 8, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.fashion_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffff5630), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 8), + child: Text( + Constants.whyDoPlainTshirtsMakeUs_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Text( + Constants.k13June2020_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff605f5f), + ), + ), + ], + ), + ), + ), + Icon( + Icons.more_vert, + color: Color(0xff212435), + size: 24, + ), + ], + ), + ), + ], + ), + ], + ), + ), + ), + ), + ); + } +} + +class Bookmark_2rubController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/category_e0b3.dart b/lib/src/ui/views/category_e0b3.dart new file mode 100644 index 0000000..ac03b36 --- /dev/null +++ b/lib/src/ui/views/category_e0b3.dart @@ -0,0 +1,128 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Category_e0b3View extends StatefulWidget { + final Object? extra; + + Category_e0b3View({super.key, this.extra}); + + @override + State createState() => _Category_e0b3ViewState(); +} + +class _Category_e0b3ViewState extends State { + late Category_e0b3Controller _view; + + @override + void initState() { + super.initState(); + _view = Category_e0b3Controller()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 0, + centerTitle: true, + automaticallyImplyLeading: false, + backgroundColor: Color(0x00ffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.categories_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff000000), + ), + ), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xff212435), size: 24), + onPressed: () { + app.back(); + }, + ), + ), + body: GridView( + padding: EdgeInsets.all(16), + shrinkWrap: true, + scrollDirection: Axis.vertical, + physics: ClampingScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + crossAxisSpacing: 8, + mainAxisSpacing: 8, + childAspectRatio: 1, + ), + children: [ + Stack3231_thkh( + Constants.fashion_, + 'https://i.ibb.co/yYJ6S0k/young-woman-with-shopping-bags-beautiful-dress-1303-17550.jpg', + ), + Stack3232_t74i( + Constants.art_, + 'https://i.ibb.co/W3PCjpS/picture-with-drawing-man-s-face-1122-1031.jpg', + ), + Stack3233_o59n( + Constants.sports_, + 'https://i.ibb.co/NsC3bBS/gradient-national-sports-day-illustration-23-2148995776.jpg', + ), + Stack3234_ew9q( + Constants.science_, + 'https://i.ibb.co/wJFzN9H/3d-medical-background-with-male-figure-with-brain-virus-cells-1048-5871.jpg', + ), + Stack3235_ayay( + Constants.politics_, + 'https://i.ibb.co/ZhZNqRs/tribune-crowd-realistic-composition-1284-26565.jpg', + ), + Stack3236_u65x( + Constants.design_, + 'https://i.ibb.co/yYJ6S0k/young-woman-with-shopping-bags-beautiful-dress-1303-17550.jpg', + ), + Stack3232_hcgu( + Constants.art_, + 'https://i.ibb.co/W3PCjpS/picture-with-drawing-man-s-face-1122-1031.jpg', + ), + Stack3231_qtc6( + Constants.fashion_, + 'https://i.ibb.co/yYJ6S0k/young-woman-with-shopping-bags-beautiful-dress-1303-17550.jpg', + ), + ], + ), + ), + ), + ); + } +} + +class Category_e0b3Controller with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/change_password_5ugn.dart b/lib/src/ui/views/change_password_5ugn.dart new file mode 100644 index 0000000..1bae450 --- /dev/null +++ b/lib/src/ui/views/change_password_5ugn.dart @@ -0,0 +1,326 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class ChangePassword_5ugnView extends StatefulWidget { + final Object? extra; + + ChangePassword_5ugnView({super.key, this.extra}); + + @override + State createState() => + _ChangePassword_5ugnViewState(); +} + +class _ChangePassword_5ugnViewState extends State { + late ChangePassword_5ugnController _view; + + @override + void initState() { + super.initState(); + _view = ChangePassword_5ugnController() + ..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xff3a57e8), + body: SizedBox( + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + child: Stack( + alignment: Alignment.topLeft, + children: [ + Container( + margin: EdgeInsets.fromLTRB(0, 150, 0, 0), + padding: EdgeInsets.all(0), + height: MediaQuery.of(context).size.height, + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16.0), + topRight: Radius.circular(16.0), + ), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Padding( + padding: EdgeInsets.fromLTRB(16, 40, 16, 16), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: EdgeInsets.symmetric( + vertical: 16, + horizontal: 0, + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + IconButton( + icon: Icon( + Icons.arrow_back, + color: Color(0xff212435), + size: 24, + ), + onPressed: () { + app.back(); + }, + ), + Padding( + padding: EdgeInsets.fromLTRB(8, 0, 0, 0), + child: Text( + Constants.resetPassword_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + ], + ), + ), + Text( + Constants.createYourNewPasswordInFl_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 30, 0, 16), + child: Text( + Constants.createNewPassword_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff494949), + ), + ), + ), + TextField( + controller: TextEditingController(), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00000000), + width: 1, + ), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00000000), + width: 1, + ), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00000000), + width: 1, + ), + ), + hintText: Constants.enterNewPassword_, + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffa4a4a4), + ), + filled: true, + fillColor: Color(0xfff2f2f3), + isDense: false, + contentPadding: EdgeInsets.symmetric( + vertical: 8, + horizontal: 12, + ), + prefixIcon: Icon( + Icons.lock_open, + color: Color(0xff212435), + size: 24, + ), + ), + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 16, + horizontal: 0, + ), + child: Text( + Constants.createConfirmPassword_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff494949), + ), + ), + ), + TextField( + controller: TextEditingController(), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00000000), + width: 1, + ), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00000000), + width: 1, + ), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00000000), + width: 1, + ), + ), + hintText: Constants.enterConfirmPassword_, + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffa4a4a4), + ), + filled: true, + fillColor: Color(0xfff2f2f3), + isDense: false, + contentPadding: EdgeInsets.symmetric( + vertical: 8, + horizontal: 12, + ), + prefixIcon: Icon( + Icons.lock_open, + color: Color(0xff212435), + size: 24, + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 30, 0, 0), + child: MaterialButton( + onPressed: () { + view._click(); + }, + color: Color(0xff3a57e8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12.0), + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.resetPassword_, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 45, + minWidth: MediaQuery.of(context).size.width, + ), + ), + ], + ), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 120, 0, 0), + child: Container( + height: 80, + width: 80, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://cdn2.iconfinder.com/data/icons/blue-round-amazing-icons-2/512/lock-128.png', + fit: BoxFit.cover, + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class ChangePassword_5ugnController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/chat_n9xm.dart b/lib/src/ui/views/chat_n9xm.dart new file mode 100644 index 0000000..acf8d11 --- /dev/null +++ b/lib/src/ui/views/chat_n9xm.dart @@ -0,0 +1,716 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Chat_n9xmView extends StatefulWidget { + final Object? extra; + + Chat_n9xmView({super.key, this.extra}); + + @override + State createState() => _Chat_n9xmViewState(); +} + +class _Chat_n9xmViewState extends State { + late Chat_n9xmController _view; + + @override + void initState() { + super.initState(); + _view = Chat_n9xmController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + body: Stack( + alignment: Alignment.topLeft, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.symmetric(vertical: 30, horizontal: 16), + width: MediaQuery.of(context).size.width, + decoration: BoxDecoration( + color: Color(0xff3a57e8), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + IconButton( + icon: Icon( + Icons.arrow_back_ios, + color: Color(0xffffffff), + size: 24, + ), + onPressed: () { + app.back(); + }, + ), + Container( + height: 40, + width: 40, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://i.ibb.co/4Kwc7Gh/woman-takes-images-holding-photographic-camera-hands-176532-12497.jpg', + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(8, 0, 0, 0), + child: Text( + Constants.aktaParmar_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xffffffff), + ), + ), + ), + ), + Icon(Icons.video_call, color: Color(0xffffffff), size: 24), + Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 8), + child: Icon( + Icons.call, + color: Color(0xffffffff), + size: 24, + ), + ), + Icon(Icons.more_vert, color: Color(0xffffffff), size: 24), + ], + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 85, 0, 0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + decoration: BoxDecoration( + color: Color(0xfff2f2f2), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16.0), + topRight: Radius.circular(16.0), + ), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: ListView( + scrollDirection: Axis.vertical, + padding: EdgeInsets.all(16), + shrinkWrap: true, + physics: ScrollPhysics(), + children: [ + Align( + alignment: Alignment.center, + child: Text( + Constants.today_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff646464), + ), + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 16, 50, 0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(6), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topRight: Radius.circular(6.0), + bottomLeft: Radius.circular(6.0), + bottomRight: Radius.circular(6.0), + ), + ), + child: Text( + Constants.goodMorningGoodMorningGoo_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k0634Am_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff646464), + ), + ), + ), + ], + ), + ), + Container( + alignment: Alignment.topRight, + margin: EdgeInsets.fromLTRB(50, 16, 0, 0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisSize: MainAxisSize.min, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(6), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(6.0), + bottomLeft: Radius.circular(6.0), + bottomRight: Radius.circular(6.0), + ), + ), + child: Text( + Constants.goodMorning_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k0634Am_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff646464), + ), + ), + ), + ], + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 16, 50, 0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(6), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topRight: Radius.circular(6.0), + bottomLeft: Radius.circular(6.0), + bottomRight: Radius.circular(6.0), + ), + ), + child: Text( + Constants.helloHowAreYou_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k0634Am_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff646464), + ), + ), + ), + ], + ), + ), + Container( + alignment: Alignment.topRight, + margin: EdgeInsets.fromLTRB(50, 16, 0, 0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(6), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(6.0), + bottomLeft: Radius.circular(6.0), + bottomRight: Radius.circular(6.0), + ), + ), + child: Text( + Constants.helloIAmFineAndYou_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k0634Am_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff646464), + ), + ), + ), + ], + ), + ), + Container( + alignment: Alignment.topLeft, + margin: EdgeInsets.fromLTRB(0, 16, 50, 0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(6), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topRight: Radius.circular(6.0), + bottomLeft: Radius.circular(6.0), + bottomRight: Radius.circular(6.0), + ), + ), + child: Text( + Constants.iAmFine_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k0634Am_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff646464), + ), + ), + ), + ], + ), + ), + Container( + alignment: Alignment.topRight, + margin: EdgeInsets.fromLTRB(50, 16, 0, 0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(6), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(6.0), + bottomLeft: Radius.circular(6.0), + bottomRight: Radius.circular(6.0), + ), + ), + child: Text( + Constants.goodMorningGoodMorningGo_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k0634Am_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff646464), + ), + ), + ), + ], + ), + ), + Container( + alignment: Alignment.topLeft, + margin: EdgeInsets.fromLTRB(0, 16, 50, 0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(6), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topRight: Radius.circular(6.0), + bottomLeft: Radius.circular(6.0), + bottomRight: Radius.circular(6.0), + ), + ), + child: Text( + Constants.goodMorningGoodMorningGoo_1, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k0634Am_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff646464), + ), + ), + ), + ], + ), + ), + Container( + alignment: Alignment.topRight, + margin: EdgeInsets.fromLTRB(50, 16, 0, 0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(6), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(6.0), + bottomLeft: Radius.circular(6.0), + bottomRight: Radius.circular(6.0), + ), + ), + child: Text( + Constants.goodMorning_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k0634Am_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff646464), + ), + ), + ), + ], + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.all(8), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + ImageIcon( + NetworkImage( + 'https://cdn3.iconfinder.com/data/icons/lightly-icons/24/happy-96.png', + ), + size: 24, + color: Color(0xff989898), + ), + Padding( + padding: EdgeInsets.fromLTRB(8, 0, 0, 0), + child: ImageIcon( + NetworkImage( + 'https://cdn2.iconfinder.com/data/icons/pictograms-3/512/27-128.png', + ), + size: 24, + color: Color(0xff989898), + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 8, + ), + child: TextField( + controller: TextEditingController(), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(30.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(30.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(30.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + filled: true, + fillColor: Color(0xffffffff), + isDense: true, + contentPadding: EdgeInsets.all(16), + suffixIcon: Icon( + Icons.photo_camera, + color: Color(0xff989898), + size: 24, + ), + ), + ), + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 50, + height: 50, + decoration: BoxDecoration( + color: Color(0xff3a57e8), + shape: BoxShape.circle, + border: Border.all( + color: Color(0x4dffffff), + width: 1, + ), + ), + child: ImageIcon( + NetworkImage( + 'https://cdn4.iconfinder.com/data/icons/symbol-blue-set-1/100/Untitled-2-80-128.png', + ), + size: 24, + color: Color(0xffffffff), + ), + ), + ], + ), + ), + ], + ), + ), + ], + ), + ), + ), + ); + } +} + +class Chat_n9xmController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/contact_us_inkn.dart b/lib/src/ui/views/contact_us_inkn.dart new file mode 100644 index 0000000..954a127 --- /dev/null +++ b/lib/src/ui/views/contact_us_inkn.dart @@ -0,0 +1,312 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class ContactUs_inknView extends StatefulWidget { + final Object? extra; + + ContactUs_inknView({super.key, this.extra}); + + @override + State createState() => _ContactUs_inknViewState(); +} + +class _ContactUs_inknViewState extends State { + late ContactUs_inknController _view; + + @override + void initState() { + super.initState(); + _view = ContactUs_inknController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 4, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0xff3a57e8), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.contact_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xffffffff), + ), + ), + leading: IconButton( + icon: Icon(Icons.menu, color: Color(0xffffffff), size: 24), + onPressed: () { + view._click(); + }, + ), + actions: [ + Icon(Icons.more_vert, color: Color(0xffffffff), size: 24), + ], + ), + body: Padding( + padding: EdgeInsets.all(16), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Icon(Icons.mail, color: Color(0xff3a57e8), size: 18), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(4, 0, 0, 0), + child: TextField( + controller: TextEditingController( + text: Constants.johngmailcom_, + ), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + focusedBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + enabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + labelText: Constants.email_, + labelStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0xffffffff), + isDense: false, + contentPadding: EdgeInsets.all(8), + ), + ), + ), + ), + ], + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Icon(Icons.call, color: Color(0xff3a57e8), size: 18), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(4, 0, 0, 0), + child: TextField( + controller: TextEditingController( + text: Constants.k91987654321_, + ), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + focusedBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + enabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + labelText: Constants.phone_, + labelStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0xffffffff), + isDense: false, + contentPadding: EdgeInsets.all(8), + ), + ), + ), + ), + ], + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Icon(Icons.message, color: Color(0xff3a57e8), size: 18), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(4, 0, 0, 0), + child: TextField( + controller: TextEditingController( + text: Constants.loremIpsumIsSimplyDummyTe_1, + ), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 3, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + focusedBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + enabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + labelText: Constants.message_, + labelStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0xffffffff), + isDense: false, + contentPadding: EdgeInsets.all(8), + ), + ), + ), + ), + ], + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 30, 0, 0), + child: MaterialButton( + onPressed: () { + view._click(); + }, + color: Color(0xff3a57e8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.zero, + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.sEND_, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 40, + minWidth: 140, + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class ContactUs_inknController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/dashboard_jvxm.dart b/lib/src/ui/views/dashboard_jvxm.dart new file mode 100644 index 0000000..9053e74 --- /dev/null +++ b/lib/src/ui/views/dashboard_jvxm.dart @@ -0,0 +1,626 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Dashboard_jvxmView extends StatefulWidget { + final Object? extra; + + Dashboard_jvxmView({super.key, this.extra}); + + @override + State createState() => _Dashboard_jvxmViewState(); +} + +class _Dashboard_jvxmViewState extends State { + late Dashboard_jvxmController _view; + + @override + void initState() { + super.initState(); + _view = Dashboard_jvxmController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar2944_rotl(Constants.home_), + body: Stack( + alignment: Alignment.topLeft, + children: [ + SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: EdgeInsets.all(16), + child: Text( + Constants.notebooks_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + height: 170, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: ListView( + scrollDirection: Axis.horizontal, + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + shrinkWrap: true, + physics: ScrollPhysics(), + children: [ + Container2930_qyoo( + Constants.youtubeIdeas_, + 'https://cdn4.iconfinder.com/data/icons/xicons/25/xicons_about_book-128.png', + Icons.more_horiz, + Icons.push_pin, + ), + Container( + margin: EdgeInsets.fromLTRB(0, 0, 16, 0), + padding: EdgeInsets.all(12), + width: 150, + height: 170, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + SizedBox(height: 16, width: 16), + Icon( + Icons.more_horiz, + color: Color(0xff212435), + size: 24, + ), + ], + ), + ImageIcon( + NetworkImage( + 'https://cdn4.iconfinder.com/data/icons/xicons/25/xicons_about_book-128.png', + ), + size: 80, + color: Color(0xff3a57e8), + ), + Text( + Constants.userResearchMovieApp_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ], + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 0, 16, 0), + padding: EdgeInsets.all(12), + width: 150, + height: 170, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + SizedBox(height: 16, width: 16), + Icon( + Icons.more_horiz, + color: Color(0xff212435), + size: 24, + ), + ], + ), + ImageIcon( + NetworkImage( + 'https://cdn4.iconfinder.com/data/icons/xicons/25/xicons_about_book-128.png', + ), + size: 80, + color: Color(0xffe4c00d), + ), + Text( + Constants.webDevelopPortfolio_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ], + ), + ), + Container2930_2rhj( + Constants.youtubeIdeas_, + 'https://cdn4.iconfinder.com/data/icons/xicons/25/xicons_about_book-128.png', + Icons.more_horiz, + Icons.push_pin, + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 16, 16, 0), + child: Text( + Constants.notes_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + GridView( + padding: EdgeInsets.all(16), + shrinkWrap: true, + scrollDirection: Axis.vertical, + physics: NeverScrollableScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + crossAxisSpacing: 16, + mainAxisSpacing: 16, + childAspectRatio: 0.6, + ), + children: [ + Container2933_cvn3( + Constants.ideas_, + Constants.loremIpsumOrLipsumAsItI_, + Constants.webIdeas_, + Icons.more_horiz, + Icons.push_pin, + ), + Container2934_5anc( + Constants.uX_, + Constants.loremIpsumOrLipsumAsItI_, + Constants.theRoleOfCreativityInUXD_, + Icons.more_horiz, + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(12), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + SizedBox(height: 16, width: 16), + Icon( + Icons.more_horiz, + color: Color(0xff212435), + size: 24, + ), + ], + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 8), + child: Text( + Constants.chap1_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Expanded( + flex: 1, + child: Text( + Constants.loremIpsumOrLipsumAsItI_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 16, 0, 0), + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 8, + ), + decoration: BoxDecoration( + color: Color(0x343a57e8), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(4.0), + ), + child: Text( + Constants.story_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(12), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Icon( + Icons.push_pin, + color: Color(0xffffc000), + size: 24, + ), + Icon( + Icons.more_horiz, + color: Color(0xff212435), + size: 24, + ), + ], + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 8), + child: Text( + Constants.chap2_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Expanded( + flex: 1, + child: Text( + Constants.loremIpsumOrLipsumAsItI_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 16, 0, 0), + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 8, + ), + decoration: BoxDecoration( + color: Color(0x343a57e8), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(4.0), + ), + child: Text( + Constants.ideas_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(12), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Icon( + Icons.push_pin, + color: Color(0xffffc000), + size: 24, + ), + Icon( + Icons.more_horiz, + color: Color(0xff212435), + size: 24, + ), + ], + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 8), + child: Text( + Constants.webIdeas_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Expanded( + flex: 1, + child: Text( + Constants.loremIpsumOrLipsumAsItI_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 16, 0, 0), + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 8, + ), + decoration: BoxDecoration( + color: Color(0x343a57e8), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(4.0), + ), + child: Text( + Constants.ideas_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(12), + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Icon( + Icons.push_pin, + color: Color(0xffffc000), + size: 24, + ), + Icon( + Icons.more_horiz, + color: Color(0xff212435), + size: 24, + ), + ], + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 8), + child: Text( + Constants.chap3_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Expanded( + flex: 1, + child: Text( + Constants.loremIpsumOrLipsumAsItI_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 16, 0, 0), + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 8, + ), + decoration: BoxDecoration( + color: Color(0x343a57e8), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(4.0), + ), + child: Text( + Constants.story_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + ], + ), + ], + ), + ), + Align2939_fgkc(Icons.add), + ], + ), + ), + ), + ); + } +} + +class Dashboard_jvxmController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/data_not_found_f1qf.dart b/lib/src/ui/views/data_not_found_f1qf.dart new file mode 100644 index 0000000..03a75f1 --- /dev/null +++ b/lib/src/ui/views/data_not_found_f1qf.dart @@ -0,0 +1,147 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class DataNotFound_f1qfView extends StatefulWidget { + final Object? extra; + + DataNotFound_f1qfView({super.key, this.extra}); + + @override + State createState() => _DataNotFound_f1qfViewState(); +} + +class _DataNotFound_f1qfViewState extends State { + late DataNotFound_f1qfController _view; + + @override + void initState() { + super.initState(); + _view = DataNotFound_f1qfController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + body: Stack( + alignment: Alignment.topLeft, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/g7pKbhg/old-black-background-grunge-texture-dark-wallpaper-blackboard-chalkboard-room-wall-1258-28312.jpg', + ), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.all(16), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.noInternet_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 24, + color: Color(0xffbbbaba), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 8), + child: Text( + Constants.connection_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 26, + color: Color(0xffffffff), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 30), + child: Text( + Constants.pleaseCheckYourInternetCon_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffbbbaba), + ), + ), + ), + MaterialButton( + onPressed: () { + view._click(); + }, + color: Color(0xffffffff), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(24.0), + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.tRYAGAIN_, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xff000000), + height: 40, + minWidth: 140, + ), + ], + ), + ), + ], + ), + ), + ), + ); + } +} + +class DataNotFound_f1qfController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/detail_dm5h.dart b/lib/src/ui/views/detail_dm5h.dart new file mode 100644 index 0000000..40e30e4 --- /dev/null +++ b/lib/src/ui/views/detail_dm5h.dart @@ -0,0 +1,216 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Detail_dm5hView extends StatefulWidget { + final Object? extra; + + Detail_dm5hView({super.key, this.extra}); + + @override + State createState() => _Detail_dm5hViewState(); +} + +class _Detail_dm5hViewState extends State { + late Detail_dm5hController _view; + + @override + void initState() { + super.initState(); + _view = Detail_dm5hController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + body: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Stack( + alignment: Alignment.topLeft, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://images.unsplash.com/photo-1599669454699-248893623440?ixid=MnwxMjA3fDB8MHxzZWFyY2h8MTd8fGhlYWRwaG9uZXN8ZW58MHx8MHx8&ixlib=rb-1.2.1&w=1000&q=80', + ), + height: MediaQuery.of(context).size.height * 0.5, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 30, + height: 30, + decoration: BoxDecoration( + color: Color(0x1f000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Padding( + padding: EdgeInsets.fromLTRB(16, 16, 0, 0), + child: IconButton( + icon: Icon( + Icons.arrow_back_ios, + color: Color(0xffffffff), + size: 24, + ), + onPressed: () { + app.back(); + }, + ), + ), + ), + ], + ), + Padding( + padding: EdgeInsets.all(16), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Icon( + Icons.shopping_cart, + color: Color(0xff3a57e8), + size: 18, + ), + Padding( + padding: EdgeInsets.fromLTRB(7, 0, 0, 0), + child: Text( + Constants.shopping_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + Padding2520_wweb( + Icons.insert_link, + Constants.a1QVBVDBF1222_, + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + Constants.loremIpsumOrLipsumAsItI_1, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + Padding2522_3z73(Constants.deliveryLocation_), + Padding2523_p4he( + Constants.k01362Tbilisi_, + Constants.k2PetreMelikshliSt_, + Icons.location_on, + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + Constants.uSD1990_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: MaterialButton( + onPressed: () { + view._click(); + }, + color: Color(0xff3a57e8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(24.0), + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.addToCart_, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 42, + minWidth: MediaQuery.of(context).size.width, + ), + ), + ], + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class Detail_dm5hController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/discover_au68.dart b/lib/src/ui/views/discover_au68.dart new file mode 100644 index 0000000..c49b545 --- /dev/null +++ b/lib/src/ui/views/discover_au68.dart @@ -0,0 +1,496 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Discover_au68View extends StatefulWidget { + final Object? extra; + + Discover_au68View({super.key, this.extra}); + + @override + State createState() => _Discover_au68ViewState(); +} + +class _Discover_au68ViewState extends State { + late Discover_au68Controller _view; + + @override + void initState() { + super.initState(); + _view = Discover_au68Controller()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xff3a57e8), + appBar: AppBar( + elevation: 0, + centerTitle: true, + automaticallyImplyLeading: false, + backgroundColor: Color(0xff3a57e8), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.recentlyPlayed_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xffffffff), + ), + ), + ), + body: Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: 160, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: ListView( + scrollDirection: Axis.horizontal, + padding: EdgeInsets.all(0), + shrinkWrap: true, + physics: ClampingScrollPhysics(), + children: [ + Padding1_p779( + Constants.newMusicHindi_, + 'https://1.bp.blogspot.com/-Sfm1TVjYa8o/YEmNsLz6WNI/AAAAAAAADoE/WO7H_uaBtbkKXE0UiPeXn0P1gGSAGijJwCLcBGAsYHQ/s1280/maxresdefault%2B%25283%2529.jpg', + ), + Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.scdn.co/image/ab67616d0000b27314621522f43a17b1f0cfb565', + ), + height: 120, + width: 110, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.mTVCoke_, + textAlign: TextAlign.center, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 8, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRCD69ZCvQ8FdZG3VwTaIDVuQZ62tdd0zKujg&usqp=CAU', + ), + height: 120, + width: 110, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.bollywoordButter_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 8, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.scdn.co/image/ab67616d0000b27314621522f43a17b1f0cfb565', + ), + height: 120, + width: 110, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k90sRewind_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 8, 16, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 50, + width: 50, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcThsMMUK5ykC_JusWVz8opNfuNsYNwNMVLUDdFsGg2sW6gWyFL1mxCm818QkjpUZo_RlmI&usqp=CAU', + fit: BoxFit.cover, + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.moreLike_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 0), + child: Text( + Constants.aRRahman_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + ], + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 16, 0, 0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: 180, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: ListView( + scrollDirection: Axis.horizontal, + padding: EdgeInsets.all(0), + shrinkWrap: true, + physics: ClampingScrollPhysics(), + children: [ + Padding5_pcnl( + Constants.vishalShekharAtifAslam_, + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSejp88_U6iaR-vNPvZUdgj1omlqdK5M6apdBhq5g1jKCGOAbUYsg9yd3Hx6zG5SR3NcGc&usqp=CAU', + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 8, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTDOjj0NZafV2BhUZOeJArqdFIM6Dn22Q6Uu2quiinylIONzg5yB7l1eDwzB9p44VtRhHM&usqp=CAU', + ), + height: 140, + width: 140, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.fromLTRB(8, 8, 0, 0), + child: Text( + Constants.sheryaGhoshval_, + textAlign: TextAlign.start, + maxLines: 2, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 11, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 8, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSddOVWcVocDfTWl1Ent0iSpT099wKm7osDco50KMLoSFOLEpXNKB5TT1_V1KBvShC6on0&usqp=CAU', + ), + height: 140, + width: 140, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.fromLTRB(8, 8, 0, 0), + child: Text( + Constants.darshanRaval_, + textAlign: TextAlign.start, + maxLines: 2, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Align( + alignment: Alignment.centerLeft, + child: Text12_uxqe(Constants.popularMusic_), + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 16, 0, 0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: 220, + decoration: BoxDecoration( + color: Color(0x00000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: ListView( + scrollDirection: Axis.horizontal, + padding: EdgeInsets.all(0), + shrinkWrap: true, + physics: ClampingScrollPhysics(), + children: [ + Padding8_wdx9( + Constants.singleTanishkBagchi_, + Constants.raatanLmbiyan_, + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSejp88_U6iaR-vNPvZUdgj1omlqdK5M6apdBhq5g1jKCGOAbUYsg9yd3Hx6zG5SR3NcGc&usqp=CAU', + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 8, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRCD69ZCvQ8FdZG3VwTaIDVuQZ62tdd0zKujg&usqp=CAU', + ), + height: 160, + width: 140, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.fromLTRB(8, 8, 0, 0), + child: Text( + Constants.ranjha_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffffffff), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(8, 4, 0, 0), + child: Text( + Constants.singleJasleenRoyal_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 8, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTDOjj0NZafV2BhUZOeJArqdFIM6Dn22Q6Uu2quiinylIONzg5yB7l1eDwzB9p44VtRhHM&usqp=CAU', + ), + height: 160, + width: 140, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.fromLTRB(8, 8, 0, 0), + child: Text( + Constants.shershaahOriginal_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffffffff), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(8, 4, 0, 0), + child: Text( + Constants.ePVariousArtists_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + ], + ), + ), + ], + ), + ), + ), + ), + ), + ); + } +} + +class Discover_au68Controller with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/empty_pin_notes_1l1v.dart b/lib/src/ui/views/empty_pin_notes_1l1v.dart new file mode 100644 index 0000000..422cea5 --- /dev/null +++ b/lib/src/ui/views/empty_pin_notes_1l1v.dart @@ -0,0 +1,118 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class EmptyPinNotes_1l1vView extends StatefulWidget { + final Object? extra; + + EmptyPinNotes_1l1vView({super.key, this.extra}); + + @override + State createState() => _EmptyPinNotes_1l1vViewState(); +} + +class _EmptyPinNotes_1l1vViewState extends State { + late EmptyPinNotes_1l1vController _view; + + @override + void initState() { + super.initState(); + _view = EmptyPinNotes_1l1vController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 4, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0xff3a57e8), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.pins_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xffffffff), + ), + ), + actions: [ + Icon(Icons.search, color: Color(0xffffffff), size: 22), + Padding( + padding: EdgeInsets.fromLTRB(8, 0, 16, 0), + child: Icon( + Icons.dashboard, + color: Color(0xffffffff), + size: 22, + ), + ), + ], + ), + body: Align( + alignment: Alignment.center, + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.push_pin, + color: const Color(0xFF000000), + size: 100, + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + Constants.pinNotes_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontFamily: GoogleFonts.getFont('Oswald').fontFamily, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 30, + color: Color(0xff000000), + ), + ), + ), + ], + ), + ), + ), + ), + ), + ); + } +} + +class EmptyPinNotes_1l1vController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/following_s3l5.dart b/lib/src/ui/views/following_s3l5.dart new file mode 100644 index 0000000..2deae81 --- /dev/null +++ b/lib/src/ui/views/following_s3l5.dart @@ -0,0 +1,517 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Following_s3l5View extends StatefulWidget { + final Object? extra; + + Following_s3l5View({super.key, this.extra}); + + @override + State createState() => _Following_s3l5ViewState(); +} + +class _Following_s3l5ViewState extends State { + late Following_s3l5Controller _view; + + @override + void initState() { + super.initState(); + _view = Following_s3l5Controller()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 0, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0xffffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.following_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff000000), + ), + ), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xff212435), size: 24), + onPressed: () { + app.back(); + }, + ), + ), + body: Padding( + padding: EdgeInsets.all(16), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 16), + child: TextField710_3r6r(Constants.search_), + ), + ListView( + scrollDirection: Axis.vertical, + padding: EdgeInsets.all(0), + shrinkWrap: true, + physics: ScrollPhysics(), + children: [ + Row703_gnuw( + Constants.following_, + Constants.k13Articles_, + Constants.johnHawkins_, + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRraGrytZ8u02sInXmIguSY2bdhVAYtmqJC-vJzrJBzIbJeex1dXb-a1PuIFCIL_qj7DkU&usqp=CAU', + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 60, + width: 60, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRWHjMzM5qzBjS64SJEIyCQkLgXODzDLznFPOt54tmyPNXP3BQ78_AN83FAlbeGujmuPCg&usqp=CAU', + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(8, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.kevin_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k10Articles_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xbe8a8989), + ), + ), + ), + ], + ), + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.fromLTRB(8, 0, 0, 0), + padding: EdgeInsets.all(0), + width: 80, + height: 40, + decoration: BoxDecoration( + color: Color(0xff000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(22.0), + ), + child: Text( + Constants.following_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 60, + width: 60, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQAxDgR_pCrTRrc1IgCv6mFaAQg8czsfkdULquUavCyXAlDqNYawOm4q3VsSuyUFqw_Ygc&usqp=CAU', + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(8, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.rose_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k6Articles_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xbe8a8989), + ), + ), + ), + ], + ), + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.fromLTRB(8, 0, 0, 0), + padding: EdgeInsets.all(0), + width: 80, + height: 40, + decoration: BoxDecoration( + color: Color(0xff000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(22.0), + ), + child: Text( + Constants.following_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 60, + width: 60, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRAL5lx462Rjn-dAsEQHumnRJATsXmXbP2mxHWzbFr_RKitmboHvkL-gnOFfOi-gbyZW60&usqp=CAU', + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(8, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.renne_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k5Articles_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xbe8a8989), + ), + ), + ), + ], + ), + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.fromLTRB(8, 0, 0, 0), + padding: EdgeInsets.all(0), + width: 80, + height: 40, + decoration: BoxDecoration( + color: Color(0xff000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(22.0), + ), + child: Text( + Constants.following_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 60, + width: 60, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRMBF7GiWBnuwHZEoUkGAktUZR91Ge2bVJ9rhYg7-YRz0M7tdM-8Os4tSZno4Jd6j5p9p8&usqp=CAU', + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(8, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.doran_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k24Articles_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xbe8a8989), + ), + ), + ), + ], + ), + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.fromLTRB(8, 0, 0, 0), + padding: EdgeInsets.all(0), + width: 80, + height: 40, + decoration: BoxDecoration( + color: Color(0xff000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(22.0), + ), + child: Text( + Constants.following_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 60, + width: 60, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSNys7iFvBBxifr5E1pgSgnlKxZ8G9HO-47sSR1oW57o1QAXA3YuXsmpVq1WZk9-HkoZls&usqp=CAU', + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(8, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.marie_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k8Articles_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xbe8a8989), + ), + ), + ), + ], + ), + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.fromLTRB(8, 0, 0, 0), + padding: EdgeInsets.all(0), + width: 80, + height: 40, + decoration: BoxDecoration( + color: Color(0xff000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(22.0), + ), + child: Text( + Constants.following_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + ], + ), + ], + ), + ), + ), + ), + ), + ); + } +} + +class Following_s3l5Controller with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/forgot_password_xt11.dart b/lib/src/ui/views/forgot_password_xt11.dart new file mode 100644 index 0000000..1f83acb --- /dev/null +++ b/lib/src/ui/views/forgot_password_xt11.dart @@ -0,0 +1,262 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class ForgotPassword_xt11View extends StatefulWidget { + final Object? extra; + + ForgotPassword_xt11View({super.key, this.extra}); + + @override + State createState() => + _ForgotPassword_xt11ViewState(); +} + +class _ForgotPassword_xt11ViewState extends State { + late ForgotPassword_xt11Controller _view; + + @override + void initState() { + super.initState(); + _view = ForgotPassword_xt11Controller() + ..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xff3a57e8), + body: SizedBox( + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + child: Stack( + alignment: Alignment.topLeft, + children: [ + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height * 0.5, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Container( + height: 100, + width: 100, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://cdn4.iconfinder.com/data/icons/seo-and-marketing-icons-1-1/129/56-128.png', + fit: BoxFit.fill, + ), + ), + ), + Align( + alignment: Alignment.bottomCenter, + child: Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height * 0.5, + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16.0), + topRight: Radius.circular(16.0), + ), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Padding( + padding: EdgeInsets.all(16), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.forgotPassword_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + Constants.enterYourEmailForTheVerif_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff615f5f), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + Constants.email_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: TextField( + controller: TextEditingController(), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff595757), + width: 1, + ), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff595757), + width: 1, + ), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff595757), + width: 1, + ), + ), + hintText: Constants.enterText_, + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0xffffffff), + isDense: false, + contentPadding: EdgeInsets.symmetric( + vertical: 8, + horizontal: 12, + ), + suffixIcon: Icon( + Icons.mail, + color: Color(0xff212435), + size: 24, + ), + ), + ), + ), + ], + ), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(30, 30, 0, 0), + child: IconButton( + icon: Icon( + Icons.arrow_back_ios, + color: Color(0xffffffff), + size: 24, + ), + onPressed: () { + app.back(); + }, + ), + ), + Padding( + padding: EdgeInsets.all(16), + child: Align( + alignment: Alignment.bottomCenter, + child: MaterialButton( + onPressed: () { + view._click(); + }, + color: const Color(0xFF3A57E8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.continue_, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 45, + minWidth: MediaQuery.of(context).size.width, + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class ForgotPassword_xt11Controller with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/grid_kcdz.dart b/lib/src/ui/views/grid_kcdz.dart new file mode 100644 index 0000000..f2e8e99 --- /dev/null +++ b/lib/src/ui/views/grid_kcdz.dart @@ -0,0 +1,579 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Grid_kcdzView extends StatefulWidget { + final Object? extra; + + Grid_kcdzView({super.key, this.extra}); + + @override + State createState() => _Grid_kcdzViewState(); +} + +class _Grid_kcdzViewState extends State { + late Grid_kcdzController _view; + + @override + void initState() { + super.initState(); + _view = Grid_kcdzController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 0, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0xffffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xff212435), size: 24), + onPressed: () { + app.back(); + }, + ), + ), + body: GridView( + padding: EdgeInsets.all(16), + shrinkWrap: false, + scrollDirection: Axis.vertical, + physics: ClampingScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + crossAxisSpacing: 8, + mainAxisSpacing: 8, + childAspectRatio: 0.8, + ), + children: [ + Stack2339_cb92( + Constants.sHOPNOW_, + () { + view._click(); + }, + Constants.fLAT20OFF_, + Constants.internationalBrand_, + 'https://images.pexels.com/photos/1382731/pexels-photo-1382731.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500', + ), + Stack( + alignment: Alignment.bottomCenter, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/VH1dm4Y/excited-ginger-lady-hat-holding-straw-bag-ecstatic-long-haired-girl-summer-outfit-enjoying-good-day.jpg', + ), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Container( + margin: EdgeInsets.all(4), + padding: EdgeInsets.all(4), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(8.0), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.internationalBrand_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 11, + color: Color(0xff8e8989), + ), + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 0, + ), + child: Text( + Constants.fLAT20OFF_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + MaterialButton( + onPressed: () { + view._click(); + }, + color: Color(0xff3a57e8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + padding: EdgeInsets.all(0), + child: Text( + Constants.sHOPNOW_, + style: TextStyle( + fontSize: 11, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 20, + minWidth: 140, + ), + ], + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 200, + height: 100, + decoration: BoxDecoration( + color: Color(0x000b0a0a), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + ), + ], + ), + Stack( + alignment: Alignment.bottomCenter, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/HHkQNXK/cute-smiling-model-white-t-shirt-hat-among-orange-background-with-funny-face-231208-4900.jpg', + ), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Container( + margin: EdgeInsets.all(4), + padding: EdgeInsets.all(4), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(8.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.internationalBrand_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 11, + color: Color(0xff8e8989), + ), + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 0, + ), + child: Text( + Constants.fLAT20OFF_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + MaterialButton( + onPressed: () { + view._click(); + }, + color: Color(0xff3a57e8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + padding: EdgeInsets.all(0), + child: Text( + Constants.sHOPNOW_, + style: TextStyle( + fontSize: 11, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 20, + minWidth: 140, + ), + ], + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 200, + height: 100, + decoration: BoxDecoration( + color: Color(0x000b0a0a), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + ), + ], + ), + Stack( + alignment: Alignment.bottomCenter, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/59PLznV/dark-haired-woman-with-red-lipstick-smiles-leans-stand-with-clothes-holds-package-pink-background-19.jpg', + ), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Container( + margin: EdgeInsets.all(4), + padding: EdgeInsets.all(4), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(8.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.internationalBrand_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 11, + color: Color(0xff8e8989), + ), + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 0, + ), + child: Text( + Constants.fLAT20OFF_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + MaterialButton( + onPressed: () { + view._click(); + }, + color: Color(0xff3a57e8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + padding: EdgeInsets.all(0), + child: Text( + Constants.sHOPNOW_, + style: TextStyle( + fontSize: 11, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 20, + minWidth: 140, + ), + ], + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 200, + height: 100, + decoration: BoxDecoration( + color: Color(0x000b0a0a), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + ), + ], + ), + Stack( + alignment: Alignment.bottomCenter, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/2SmNQBk/happy-lady-stylish-skirt-boater-posing-pink-wall-197531-23653.jpg', + ), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Container( + margin: EdgeInsets.all(4), + padding: EdgeInsets.all(4), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(8.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.internationalBrand_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 11, + color: Color(0xff8e8989), + ), + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 0, + ), + child: Text( + Constants.fLAT20OFF_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + MaterialButton( + onPressed: () { + view._click(); + }, + color: Color(0xff3a57e8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + padding: EdgeInsets.all(0), + child: Text( + Constants.sHOPNOW_, + style: TextStyle( + fontSize: 11, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 20, + minWidth: 140, + ), + ], + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 200, + height: 100, + decoration: BoxDecoration( + color: Color(0x000b0a0a), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + ), + ], + ), + Stack( + alignment: Alignment.bottomCenter, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/Ykjp9cF/portrait-handsome-smiling-stylish-young-man-model-wearing-jeans-clothes-fashion-man-158538-5025.jpg', + ), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Container( + margin: EdgeInsets.all(4), + padding: EdgeInsets.all(4), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(8.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.internationalBrand_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 11, + color: Color(0xff8e8989), + ), + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 0, + ), + child: Text( + Constants.fLAT20OFF_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + MaterialButton( + onPressed: () { + view._click(); + }, + color: Color(0xff3a57e8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16.0), + ), + padding: EdgeInsets.all(0), + child: Text( + Constants.sHOPNOW_, + style: TextStyle( + fontSize: 11, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 20, + minWidth: 140, + ), + ], + ), + ), + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 200, + height: 100, + decoration: BoxDecoration( + color: Color(0x000b0a0a), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + ), + ], + ), + ], + ), + ), + ), + ); + } +} + +class Grid_kcdzController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/home_cigx.dart b/lib/src/ui/views/home_cigx.dart new file mode 100644 index 0000000..7e454db --- /dev/null +++ b/lib/src/ui/views/home_cigx.dart @@ -0,0 +1,576 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Home_cigxView extends StatefulWidget { + final Object? extra; + + Home_cigxView({super.key, this.extra}); + + @override + State createState() => _Home_cigxViewState(); +} + +class _Home_cigxViewState extends State { + late Home_cigxController _view; + final pageController = PageController(); + + @override + void initState() { + super.initState(); + _view = Home_cigxController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + body: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: EdgeInsets.fromLTRB(16, 40, 16, 16), + child: Row1927_acsm( + Icons.shopping_cart, + Icons.notifications, + Icons.favorite_border, + Constants.rose_, + 'https://cdn.pixabay.com/photo/2018/01/15/07/51/woman-3083383_960_720.jpg', + ), + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 16), + child: TextField1926_332s( + Icons.photo_camera, + Constants.searchHere_, + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 16, 0, 0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: 100, + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 8, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(8), + width: 60, + height: 60, + decoration: BoxDecoration( + color: Color(0xffffc6e0), + shape: BoxShape.circle, + ), + child: ImageIcon( + NetworkImage( + 'https://cdn1.iconfinder.com/data/icons/basi-icon-set-01/100/Fin_copy-37-256.png', + ), + size: 24, + color: Color(0xff731069), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.categories_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + ), + ], + ), + ), + ListView( + scrollDirection: Axis.horizontal, + padding: EdgeInsets.all(0), + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + children: [ + Padding1901_cx9n( + Constants.kurtiSuits_, + 'https://i.ibb.co/5v10g3w/young-woman-beautiful-red-dress-1303-17506.jpg', + ), + Padding1902_1msv( + Constants.westernwear_, + 'https://i.ibb.co/2SmNQBk/happy-lady-stylish-skirt-boater-posing-pink-wall-197531-23653.jpg', + ), + Padding1903_0ffz( + Constants.men_, + 'https://i.ibb.co/6mSs68n/portrait-handsome-smiling-stylish-young-man-model-dressed-blue-shirt-clothes-fashion-man-posing-1585.jpg', + ), + Padding1904_tdvf( + Constants.saree_, + 'https://images.unsplash.com/photo-1610030469983-98e550d6193c?ixid=MnwxMjA3fDB8MHxzZWFyY2h8Mnx8c2FyZWV8ZW58MHx8MHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=60', + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 16, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + height: 60, + width: 60, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + shape: BoxShape.circle, + ), + child: Image.network( + 'https://images.unsplash.com/photo-1601121141461-9d6647bca1ed?ixid=MnwxMjA3fDB8MHxzZWFyY2h8M3x8Z29sZCUyMGpld2VsbGVyeXxlbnwwfHwwfHw%3D&ixlib=rb-1.2.1&w=1000&q=80', + fit: BoxFit.cover, + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.text_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + ], + ), + ), + ], + ), + ], + ), + ), + ), + SizedBox( + height: 240, + width: MediaQuery.of(context).size.width, + child: Stack( + children: [ + PageView.builder( + controller: pageController, + scrollDirection: Axis.horizontal, + itemCount: 3, + itemBuilder: (context, position) { + return Align( + alignment: Alignment.topCenter, + child: Image.network( + 'https://i.ibb.co/80RV30C/flat-diwali-sale-with-candle-52683-27177.jpg', + height: 200, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ); + }, + ), + Align( + alignment: Alignment.bottomCenter, + child: Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 15), + child: SmoothPageIndicator( + controller: pageController, + count: 3, + axisDirection: Axis.horizontal, + effect: ExpandingDotsEffect( + dotColor: Color(0xff9e9e9e), + activeDotColor: Color(0xff3a57e8), + dotHeight: 10, + dotWidth: 10, + radius: 16, + spacing: 8, + expansionFactor: 3, + ), + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 8, 0, 0), + child: Align( + alignment: Alignment.centerLeft, + child: Text( + Constants.offerZone_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xff000000), + ), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 4, 0, 16), + child: Align( + alignment: Alignment.centerLeft, + child: Text( + Constants.bestDealsOnProducts_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff9e9e9e), + ), + ), + ), + ), + GridView( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 8), + shrinkWrap: true, + scrollDirection: Axis.vertical, + physics: NeverScrollableScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 3, + crossAxisSpacing: 8, + mainAxisSpacing: 8, + childAspectRatio: 1, + ), + children: [ + Stack1906_s1jy( + Constants.k50Off_, + 'https://i.ibb.co/59PLznV/dark-haired-woman-with-red-lipstick-smiles-leans-stand-with-clothes-holds-package-pink-background-19.jpg', + ), + Stack1907_xt28( + Constants.k30Off_, + 'https://i.ibb.co/2styPjJ/pretty-young-stylish-sexy-woman-pink-luxury-dress-summer-fashion-trend-chic-style-sunglasses-blue-st.jpg', + ), + Stack1908_55ms( + Constants.k10Off_, + 'https://i.ibb.co/wQH72qM/fashion-portrait-two-elegant-women-best-friends-posing-indoor-grey-wall-wearing-winter-fluffy-coat-b.jpg', + ), + Stack1909_yxtc( + Constants.k30Off_, + 'https://i.ibb.co/stCq4J3/three-young-beautiful-smiling-girls-trendy-summer-casual-jeans-clothes-sexy-carefree-women-posing-po.jpg', + ), + Stack1910_yg0l( + Constants.k30Off_, + 'https://images.unsplash.com/photo-1572804013427-4d7ca7268217?ixid=MnwxMjA3fDB8MHxzZWFyY2h8Mnx8d29tYW4lMjBjbG90aGVzfGVufDB8fDB8fA%3D%3D&ixlib=rb-1.2.1&w=1000&q=80', + ), + Stack1911_9sq5( + Constants.k30Off_, + 'https://i.ibb.co/kXYrWvS/pleased-female-model-with-happy-face-expression-posing-winter-clothes-smiling-short-haired-woman-sca.jpg', + ), + Stack1912_btq1( + Constants.k30Off_, + 'https://i.ibb.co/2styPjJ/pretty-young-stylish-sexy-woman-pink-luxury-dress-summer-fashion-trend-chic-style-sunglasses-blue-st.jpg', + ), + Stack1913_cao7( + Constants.k30Off_, + 'https://images.pexels.com/photos/5868122/pexels-photo-5868122.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500', + ), + Stack1914_hvm6( + Constants.k50Off_, + 'https://i.ibb.co/5YNNwcc/woman-with-shopping-bags-studio-yellow-background-isolated-1303-14294.jpg', + ), + ], + ), + Divider( + color: Color(0xffe3e1e1), + height: 16, + thickness: 8, + indent: 0, + endIndent: 0, + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 8, 0, 0), + child: Align( + alignment: Alignment.centerLeft, + child: Text( + Constants.contestSection_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xff000000), + ), + ), + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 8, 0, 16), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: 100, + decoration: BoxDecoration( + color: Color(0x00000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: ListView( + scrollDirection: Axis.horizontal, + padding: EdgeInsets.all(0), + shrinkWrap: true, + physics: ClampingScrollPhysics(), + children: [ + Container1915_m39v( + Constants.cLICKTOSPIN_, + Constants.spinWinAssuredCredits_, + Constants.spinWinAdduredCredits_, + 'https://i.ibb.co/XDbRhWd/wheel-fortune-lucky-girl-winner-casino-107791-1550.jpg', + ), + Container( + margin: EdgeInsets.symmetric( + vertical: 0, + horizontal: 8, + ), + padding: EdgeInsets.all(0), + width: 280, + height: 100, + decoration: BoxDecoration( + color: Color(0x00000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + ClipRRect( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(12.0), + bottomLeft: Radius.circular(12.0), + ), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/8Nv083m/golden-wheel-fortune-luck-spin-background-1017-31404.jpg', + ), + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(8, 4, 0, 4), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.spinWinAdduredCredits_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 0), + child: Text( + Constants.spinWinAssuredCredits_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 11, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + Constants.cLICKTOSPIN_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + ), + ], + ), + ), + Container( + margin: EdgeInsets.fromLTRB(0, 0, 8, 0), + padding: EdgeInsets.all(0), + width: 280, + height: 100, + decoration: BoxDecoration( + color: Color(0x00000000), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + ClipRRect( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(12.0), + bottomLeft: Radius.circular(12.0), + ), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/CwxXLdv/jackpot-realistic-background-1284-25763.jpg', + ), + fit: BoxFit.cover, + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(8, 4, 0, 4), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.spinWinAdduredCredits_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 0), + child: Text( + Constants.spinWinAssuredCredits_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 11, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + Constants.cLICKTOSPIN_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + ), + ], + ), + ), + ], + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class Home_cigxController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/labels_sxue.dart b/lib/src/ui/views/labels_sxue.dart new file mode 100644 index 0000000..c9d00cb --- /dev/null +++ b/lib/src/ui/views/labels_sxue.dart @@ -0,0 +1,251 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Labels_sxueView extends StatefulWidget { + final Object? extra; + + Labels_sxueView({super.key, this.extra}); + + @override + State createState() => _Labels_sxueViewState(); +} + +class _Labels_sxueViewState extends State { + late Labels_sxueController _view; + + @override + void initState() { + super.initState(); + _view = Labels_sxueController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar682_1czg( + Icons.dashboard, + Icons.search, + Constants.labels_, + ), + body: GridView( + padding: EdgeInsets.all(16), + shrinkWrap: false, + scrollDirection: Axis.vertical, + physics: ClampingScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + crossAxisSpacing: 16, + mainAxisSpacing: 16, + childAspectRatio: 1.3, + ), + children: [ + Container676_u4q2(Constants.k1Item_, Constants.ideas_), + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.uX_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xffff9200), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k2Items_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff4c4c4c), + ), + ), + ), + ], + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.story_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xffff5600), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k1Item_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff4c4c4c), + ), + ), + ), + ], + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.xD_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff169b81), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k2Items_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff4c4c4c), + ), + ), + ), + ], + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.lorem_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xffaf1d86), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 0), + child: Text( + Constants.k1Item_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff4c4c4c), + ), + ), + ), + ], + ), + ), + ], + ), + ), + ), + ); + } +} + +class Labels_sxueController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/list_1eal.dart b/lib/src/ui/views/list_1eal.dart new file mode 100644 index 0000000..3de38c0 --- /dev/null +++ b/lib/src/ui/views/list_1eal.dart @@ -0,0 +1,213 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class List_1ealView extends StatefulWidget { + final Object? extra; + + List_1ealView({super.key, this.extra}); + + @override + State createState() => _List_1ealViewState(); +} + +class _List_1ealViewState extends State { + late List_1ealController _view; + + @override + void initState() { + super.initState(); + _view = List_1ealController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar3210_xy2e(Icons.search, () { + app.back(); + }, Constants.gifts_), + body: ListView( + scrollDirection: Axis.vertical, + padding: EdgeInsets.all(16), + shrinkWrap: true, + physics: ClampingScrollPhysics(), + children: [ + Stack3205_puva( + Constants.gifts_, + Constants.creativeGiftsForCapricom_, + 'https://i.ibb.co/T41bzp3/cosmetic-product-packaging-mockup-1150-40282.jpg', + ), + Stack( + alignment: Alignment.center, + children: [ + Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/fqCzqgH/realistic-ad-with-product-landing-page-52683-70960.jpg', + ), + height: 180, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Align( + alignment: Alignment.center, + child: Container( + margin: EdgeInsets.symmetric(vertical: 0, horizontal: 8), + padding: EdgeInsets.all(4), + width: MediaQuery.of(context).size.width, + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + border: Border.all(color: Color(0xff000000), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.creativeGiftsForCapricom_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 0), + child: Text( + Constants.gifts_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffa3a3a3), + ), + ), + ), + ], + ), + ), + ), + ], + ), + Stack( + alignment: Alignment.center, + children: [ + Padding( + padding: EdgeInsets.fromLTRB(0, 0, 0, 16), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/4RwSHM4/realistic-ad-with-product-landing-page-52683-70867.jpg', + ), + height: 180, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + ), + Align( + alignment: Alignment.center, + child: Container( + margin: EdgeInsets.symmetric(vertical: 0, horizontal: 8), + padding: EdgeInsets.all(4), + width: MediaQuery.of(context).size.width, + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + border: Border.all(color: Color(0xff000000), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.creativeGiftsForCapricom_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 0), + child: Text( + Constants.gifts_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xffa3a3a3), + ), + ), + ), + ], + ), + ), + ), + ], + ), + Stack3208_5dv2( + Constants.gifts_, + Constants.creativeGiftsForCapricom_, + 'https://i.ibb.co/j4fqbMX/skincare-brand-bottle-ad-52683-35127.jpg', + ), + ], + ), + ), + ), + ); + } +} + +class List_1ealController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/login_qayv.dart b/lib/src/ui/views/login_qayv.dart new file mode 100644 index 0000000..f144029 --- /dev/null +++ b/lib/src/ui/views/login_qayv.dart @@ -0,0 +1,319 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Login_qayvView extends StatefulWidget { + final Object? extra; + + Login_qayvView({super.key, this.extra}); + + @override + State createState() => _Login_qayvViewState(); +} + +class _Login_qayvViewState extends State { + late Login_qayvController _view; + + @override + void initState() { + super.initState(); + _view = Login_qayvController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + body: SizedBox( + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + child: Stack( + alignment: Alignment.topLeft, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i.ibb.co/kX2c8DW/low-angle-shot-mesmerizing-starry-sky-181624-27925.jpg', + ), + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + Align( + alignment: Alignment.center, + child: Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 16), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://cdn0.iconfinder.com/data/icons/butterflies-2/48/74-128.png', + ), + height: 120, + width: 120, + fit: BoxFit.contain, + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 70, 0, 16), + child: TextField( + controller: TextEditingController(), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + hintText: Constants.username_, + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0xfff2f2f3), + isDense: false, + contentPadding: EdgeInsets.symmetric( + vertical: 8, + horizontal: 12, + ), + ), + ), + ), + TextField( + controller: TextEditingController(), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(24.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + hintText: Constants.password_, + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0xfff2f2f3), + isDense: false, + contentPadding: EdgeInsets.symmetric( + vertical: 8, + horizontal: 12, + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 30, 0, 16), + child: MaterialButton( + onPressed: () { + view._click(); + }, + color: const Color(0xFF3A57E8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(24.0), + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.lOGIN_, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 50, + minWidth: MediaQuery.of(context).size.width, + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.dontHaveAnAccount_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffbab4b4), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(4, 0, 0, 0), + child: Text( + Constants.signUp_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 30, 0, 16), + child: Text( + Constants.loginWithSocialNetwork_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffbab4b4), + ), + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://cdn2.iconfinder.com/data/icons/social-media-2285/512/1_Facebook_colored_svg_copy-128.png', + ), + height: 50, + width: 50, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 16, + ), + child: + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://cdn3.iconfinder.com/data/icons/2018-social-media-logotypes/1000/2018_social_media_popular_app_logo_instagram-128.png', + ), + height: 50, + width: 50, + fit: BoxFit.cover, + ), + ), + + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://cdn3.iconfinder.com/data/icons/2018-social-media-logotypes/1000/2018_social_media_popular_app_logo_twitter-128.png', + ), + height: 50, + width: 50, + fit: BoxFit.cover, + ), + ], + ), + ], + ), + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class Login_qayvController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/membership_z9ze.dart b/lib/src/ui/views/membership_z9ze.dart new file mode 100644 index 0000000..f5481af --- /dev/null +++ b/lib/src/ui/views/membership_z9ze.dart @@ -0,0 +1,153 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Membership_z9zeView extends StatefulWidget { + final Object? extra; + + Membership_z9zeView({super.key, this.extra}); + + @override + State createState() => _Membership_z9zeViewState(); +} + +class _Membership_z9zeViewState extends State { + late Membership_z9zeController _view; + + @override + void initState() { + super.initState(); + _view = Membership_z9zeController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 0, + centerTitle: true, + automaticallyImplyLeading: false, + backgroundColor: Color(0x00ffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.membership_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff000000), + ), + ), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xff212435), size: 24), + onPressed: () { + app.back(); + }, + ), + ), + body: Padding( + padding: EdgeInsets.all(16), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.chooseYourPlan_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 30), + child: Text( + Constants.byBecomingAMenberYouCan_, + textAlign: TextAlign.center, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xbe8a8989), + ), + ), + ), + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container121_di37( + Constants.billedEveryMonth_, + Constants.uSD999_, + Constants.monthly_, + const Color(0xFFFF5630), + ), + Container122_a8w6( + Constants.billedEvery12Month_, + Constants.uSD499month_, + Constants.yearly_, + const Color(0xFF89898968), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 30, 0, 0), + child: MaterialButton123_qtis( + Constants.selectPlan_, + const Color(0xFFFF5630), + () { + context.push('/aboutus'); + }, + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class Membership_z9zeController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/my_account_tyvz.dart b/lib/src/ui/views/my_account_tyvz.dart new file mode 100644 index 0000000..8dfb230 --- /dev/null +++ b/lib/src/ui/views/my_account_tyvz.dart @@ -0,0 +1,109 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class MyAccount_tyvzView extends StatefulWidget { + final Object? extra; + + MyAccount_tyvzView({super.key, this.extra}); + + @override + State createState() => _MyAccount_tyvzViewState(); +} + +class _MyAccount_tyvzViewState extends State { + late MyAccount_tyvzController _view; + + @override + void initState() { + super.initState(); + _view = MyAccount_tyvzController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar1219_t88q(Constants.myAccount_), + body: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: EdgeInsets.symmetric(vertical: 30, horizontal: 16), + child: Row1218_c1cc( + Constants.basic_, + () { + view._click(); + }, + Constants.iD786534789_, + Constants.philipRamirez_, + 'https://i.ibb.co/GV44RGq/pleasant-looking-serious-man-stands-profile-has-confident-expression-wears-casual-white-t-shirt-2736.jpg', + ), + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 30), + child: MaterialButton1217_jwby(Constants.upgradePlan_, () { + view._click(); + }), + ), + ListView( + scrollDirection: Axis.vertical, + padding: EdgeInsets.symmetric(vertical: 30, horizontal: 16), + shrinkWrap: true, + physics: ScrollPhysics(), + children: [ + ListTile1210_3rti(Constants.settings_), + Divider1211_akau(), + SwitchListTile1212_w9oz(Constants.darkMode_), + Divider1211_qqok(), + ListTile1213_y7ek(Constants.aboutUs_1), + Divider1211_quka(), + ListTile1214_lcq3(Constants.termsAndConditions_), + ], + ), + MaterialButton1215_0qfr(Constants.logOut_, () { + view._click(); + }), + ], + ), + ), + ), + ), + ); + } +} + +class MyAccount_tyvzController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/news_details_t6nw.dart b/lib/src/ui/views/news_details_t6nw.dart new file mode 100644 index 0000000..e7d8bdf --- /dev/null +++ b/lib/src/ui/views/news_details_t6nw.dart @@ -0,0 +1,121 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class NewsDetails_t6nwView extends StatefulWidget { + final Object? extra; + + NewsDetails_t6nwView({super.key, this.extra}); + + @override + State createState() => _NewsDetails_t6nwViewState(); +} + +class _NewsDetails_t6nwViewState extends State { + late NewsDetails_t6nwController _view; + + @override + void initState() { + super.initState(); + _view = NewsDetails_t6nwController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 0, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0x00ffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xff212435), size: 24), + onPressed: () { + app.back(); + }, + ), + actions: [ + Icon(Icons.more_vert, color: Color(0xff212435), size: 24), + ], + ), + body: Padding( + padding: EdgeInsets.all(16), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.fASHION_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xffff5630), + ), + ), + Padding1339_yprp( + Icons.bookmark_outline, + Constants.theWatchModelThatMakesYu_, + ), + ClipRRect1340_ko9q( + 'https://i.ibb.co/2SmNQBk/happy-lady-stylish-skirt-boater-posing-pink-wall-197531-23653.jpg', + ), + Padding1341_9kox( + Constants.follow_, + const Color(0xFF2E2E2E), + () { + view._click(); + }, + Constants.k12Jan2021_, + Constants.byJonesHawkins_, + 'https://i.ibb.co/xDFtpkb/businessman-character-avatar-isolated-24877-60111.jpg', + ), + Text1342_x667(Constants.loremIpsumIsSimplyDummyTe_), + ], + ), + ), + ), + ), + ), + ); + } +} + +class NewsDetails_t6nwController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/no_data_found_shk8.dart b/lib/src/ui/views/no_data_found_shk8.dart new file mode 100644 index 0000000..60fe480 --- /dev/null +++ b/lib/src/ui/views/no_data_found_shk8.dart @@ -0,0 +1,133 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class NoDataFound_shk8View extends StatefulWidget { + final Object? extra; + + NoDataFound_shk8View({super.key, this.extra}); + + @override + State createState() => _NoDataFound_shk8ViewState(); +} + +class _NoDataFound_shk8ViewState extends State { + late NoDataFound_shk8Controller _view; + + @override + void initState() { + super.initState(); + _view = NoDataFound_shk8Controller()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + body: Padding( + padding: EdgeInsets.all(16), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + + ///***If you have exported images you must have to copy those images in assets/images directory. + children: [ + Image( + image: NetworkImage( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ8Q834-7f4pEXZbLNMllf9kfmCa98XH7r3KqlWuYvzb2MxQofQ0lEZV17zyaAZSGOMzmU&usqp=CAU', + ), + height: 120, + width: 120, + fit: BoxFit.cover, + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + Constants.oopsYouAreLost_, + textAlign: TextAlign.center, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 30), + child: Text( + Constants.thePageYouAreLookingForC_, + textAlign: TextAlign.center, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xbe8a8989), + ), + ), + ), + MaterialButton( + onPressed: () { + view._click(); + }, + color: const Color(0xFFFF5630), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12.0), + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.goBack_, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 50, + minWidth: MediaQuery.of(context).size.width, + ), + ], + ), + ), + ), + ), + ); + } +} + +class NoDataFound_shk8Controller with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/notification_setting_bycd.dart b/lib/src/ui/views/notification_setting_bycd.dart new file mode 100644 index 0000000..09f5ec4 --- /dev/null +++ b/lib/src/ui/views/notification_setting_bycd.dart @@ -0,0 +1,157 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class NotificationSetting_bycdView extends StatefulWidget { + final Object? extra; + + NotificationSetting_bycdView({super.key, this.extra}); + + @override + State createState() => + _NotificationSetting_bycdViewState(); +} + +class _NotificationSetting_bycdViewState + extends State { + late NotificationSetting_bycdController _view; + + @override + void initState() { + super.initState(); + _view = NotificationSetting_bycdController() + ..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 0, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0xffffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.notificationSetting_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff000000), + ), + ), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xff212435), size: 24), + onPressed: () { + app.back(); + }, + ), + ), + body: Padding( + padding: EdgeInsets.all(16), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row1245_305i(Constants.appNotification_), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.recommendedArticle_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + Checkbox( + onChanged: (value) {}, + activeColor: Color(0xffff5630), + autofocus: false, + checkColor: Color(0xffffffff), + hoverColor: Color(0x42000000), + splashRadius: 20, + value: true, + ), + ], + ), + ), + Padding1247_rcmx(Constants.promotion_), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Text( + Constants.latestNews_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + Checkbox( + onChanged: (value) {}, + activeColor: Color(0xffff5630), + autofocus: false, + checkColor: Color(0xffffffff), + hoverColor: Color(0x42000000), + splashRadius: 20, + value: true, + ), + ], + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class NotificationSetting_bycdController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/pin_note_list_qn8a.dart b/lib/src/ui/views/pin_note_list_qn8a.dart new file mode 100644 index 0000000..d74f186 --- /dev/null +++ b/lib/src/ui/views/pin_note_list_qn8a.dart @@ -0,0 +1,270 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class PinNoteList_qn8aView extends StatefulWidget { + final Object? extra; + + PinNoteList_qn8aView({super.key, this.extra}); + + @override + State createState() => _PinNoteList_qn8aViewState(); +} + +class _PinNoteList_qn8aViewState extends State { + late PinNoteList_qn8aController _view; + + @override + void initState() { + super.initState(); + _view = PinNoteList_qn8aController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar1048_e0na( + Icons.dashboard, + Icons.search, + Constants.pins_, + ), + body: Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 16), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: Text( + Constants.recent_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + ListView( + scrollDirection: Axis.vertical, + padding: EdgeInsets.all(0), + shrinkWrap: true, + physics: ScrollPhysics(), + children: [ + Container1042_49si( + Constants.ideas_, + Constants.k22Aug20200230Am_, + Icons.more_horiz, + Icons.push_pin, + Constants.webIdeas_, + Icons.article, + ), + Container( + margin: EdgeInsets.fromLTRB(0, 0, 0, 16), + padding: EdgeInsets.all(12), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(12.0), + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Icon( + Icons.article, + color: Color(0xff3a57e8), + size: 50, + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.fromLTRB(16, 0, 0, 0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: Row( + mainAxisAlignment: + MainAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: Text( + Constants + .theRoleOfCretivityInUXDe_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: + TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 8, + ), + child: Icon( + Icons.push_pin, + color: Color(0xffffac00), + size: 20, + ), + ), + ], + ), + ), + Icon( + Icons.more_horiz, + color: Color(0xff212435), + size: 20, + ), + ], + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 4, 0, 0), + child: Row( + mainAxisAlignment: + MainAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + flex: 1, + child: Text( + Constants.k15Sep20200230Am_, + textAlign: TextAlign.start, + maxLines: 1, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff393939), + ), + ), + ), + Container( + margin: EdgeInsets.fromLTRB( + 8, + 0, + 0, + 0, + ), + padding: EdgeInsets.symmetric( + vertical: 4, + horizontal: 8, + ), + decoration: BoxDecoration( + color: Color(0x343a57e8), + shape: BoxShape.rectangle, + borderRadius: + BorderRadius.circular(4.0), + ), + child: Text( + Constants.uX_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + ], + ), + ), + ), + ], + ), + ), + Container1044_awqh( + Constants.story_, + Constants.k22Mar20200230Am_, + Icons.more_horiz, + Icons.push_pin, + Constants.chap1_, + Icons.article, + ), + Container1045_jwip( + Constants.story_, + Constants.k22June20200230Am_, + Icons.more_horiz, + Icons.push_pin, + Constants.chap2_, + Icons.article, + ), + ], + ), + ], + ), + ), + ), + ), + ), + ); + } +} + +class PinNoteList_qn8aController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } +} diff --git a/lib/src/ui/views/profile_pzn0.dart b/lib/src/ui/views/profile_pzn0.dart new file mode 100644 index 0000000..4300bb6 --- /dev/null +++ b/lib/src/ui/views/profile_pzn0.dart @@ -0,0 +1,359 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Profile_pzn0View extends StatefulWidget { + final Object? extra; + + Profile_pzn0View({super.key, this.extra}); + + @override + State createState() => _Profile_pzn0ViewState(); +} + +class _Profile_pzn0ViewState extends State { + late Profile_pzn0Controller _view; + + @override + void initState() { + super.initState(); + _view = Profile_pzn0Controller()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 4, + centerTitle: true, + automaticallyImplyLeading: false, + backgroundColor: Color(0xffffffff), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(16.0), + bottomRight: Radius.circular(16.0), + ), + ), + title: Text( + Constants.profile_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff000000), + ), + ), + leading: IconButton( + icon: Icon(Icons.menu, color: Color(0xff000000), size: 24), + onPressed: () { + view._click(); + }, + ), + ), + body: Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 16), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + SizedBox(height: 16, width: 16), + Text( + Constants.editProfile_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff535252), + ), + ), + Container( + alignment: Alignment.center, + margin: EdgeInsets.fromLTRB(0, 16, 0, 30), + padding: EdgeInsets.all(0), + width: 140, + height: 140, + decoration: BoxDecoration( + color: Color(0x1f000000), + shape: BoxShape.circle, + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Container( + height: 120, + width: 120, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://i.ibb.co/xDFtpkb/businessman-character-avatar-isolated-24877-60111.jpg', + fit: BoxFit.cover, + ), + ), + ), + TextField( + controller: TextEditingController(text: Constants.anthony_), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + focusedBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + enabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + labelText: Constants.lastName_, + labelStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff6f6d6d), + ), + hintText: "Enter Text", + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0x00ffffff), + isDense: false, + contentPadding: EdgeInsets.fromLTRB(0, 0, 0, 8), + ), + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: TextField( + controller: TextEditingController(text: Constants.smith_), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + focusedBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + enabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + labelText: Constants.firstName_, + labelStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff6f6d6d), + ), + hintText: "Enter Text", + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0x00ffffff), + isDense: false, + contentPadding: EdgeInsets.fromLTRB(0, 0, 0, 8), + ), + ), + ), + TextField( + controller: TextEditingController( + text: Constants.anthonysmith12_, + ), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + focusedBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + enabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + labelText: Constants.username_, + labelStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff6f6d6d), + ), + hintText: "Enter Text", + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0x00ffffff), + isDense: false, + contentPadding: EdgeInsets.fromLTRB(0, 0, 0, 8), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: TextField( + controller: TextEditingController( + text: Constants.anthonysmithgmailcom_, + ), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 1, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + focusedBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + enabledBorder: UnderlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0xff000000), + width: 1, + ), + ), + labelText: Constants.email_, + labelStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff6f6d6d), + ), + hintText: "Enter Text", + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + filled: true, + fillColor: Color(0x00ffffff), + isDense: false, + contentPadding: EdgeInsets.fromLTRB(0, 0, 0, 8), + ), + ), + ), + SizedBox(height: 16, width: 16), + ], + ), + ), + ), + ), + ), + ); + } +} + +class Profile_pzn0Controller with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/register_obmz.dart b/lib/src/ui/views/register_obmz.dart new file mode 100644 index 0000000..c259d88 --- /dev/null +++ b/lib/src/ui/views/register_obmz.dart @@ -0,0 +1,181 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Register_obmzView extends StatefulWidget { + final Object? extra; + + Register_obmzView({super.key, this.extra}); + + @override + State createState() => _Register_obmzViewState(); +} + +class _Register_obmzViewState extends State { + late Register_obmzController _view; + + @override + void initState() { + super.initState(); + _view = Register_obmzController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xfff1f1f1), + body: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height * 0.4, + decoration: BoxDecoration( + color: Color(0xff3a57e8), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(60.0), + ), + border: Border.all(color: Color(0x4d9e9e9e), width: 1), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Container( + height: 70, + width: 70, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRviAGWGV45QGRAHOv3Hh35VxwyNU_Qiy8ZK_8PytS-eTrEMY4RgaNgInAQie6VgqvSA24&usqp=CAU', + fit: BoxFit.cover, + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 0), + child: Text( + Constants.register_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xffffffff), + ), + ), + ), + ], + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 30, 16, 16), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + TextField561_jhkd(Icons.person, Constants.fullName_), + Padding562_b5u2(Icons.mail, Constants.email_), + Padding563_2jw4( + Icons.visibility_off, + Constants.password_, + ), + Padding564_yzg6( + Constants.register_, + const Color(0xFF3A57E8), + () { + view._click(); + }, + ), + ], + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 30, 0, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Align( + alignment: Alignment.center, + child: Text( + Constants.alreadyHaveAnAccount_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(4, 0, 0, 0), + child: Text( + Constants.login_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff3a57e8), + ), + ), + ), + ], + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class Register_obmzController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/review_47su.dart b/lib/src/ui/views/review_47su.dart new file mode 100644 index 0000000..9b11ffe --- /dev/null +++ b/lib/src/ui/views/review_47su.dart @@ -0,0 +1,268 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Review_47suView extends StatefulWidget { + final Object? extra; + + Review_47suView({super.key, this.extra}); + + @override + State createState() => _Review_47suViewState(); +} + +class _Review_47suViewState extends State { + late Review_47suController _view; + + @override + void initState() { + super.initState(); + _view = Review_47suController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 4, + centerTitle: false, + automaticallyImplyLeading: false, + backgroundColor: Color(0xff3a57e8), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.review_, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xffffffff), + ), + ), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xffffffff), size: 24), + onPressed: () { + app.back(); + }, + ), + ), + body: SizedBox( + width: MediaQuery.of(context).size.width, + child: Stack( + alignment: Alignment.topLeft, + children: [ + ///***If you have exported images you must have to copy those images in assets/images directory. + Image( + image: NetworkImage( + 'https://i0.wp.com/cssscript.com/wp-content/uploads/2018/03/Simple-Location-Picker.png?fit=561%2C421&ssl=1', + ), + height: 250, + width: MediaQuery.of(context).size.width, + fit: BoxFit.cover, + ), + Container( + margin: EdgeInsets.fromLTRB(0, 200, 0, 80), + padding: EdgeInsets.all(0), + decoration: BoxDecoration( + color: Color(0xffffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: EdgeInsets.fromLTRB(0, 60, 0, 0), + child: Text( + Constants.bella_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 22, + color: Color(0xff000000), + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 8, 0, 16), + child: Text( + Constants.k4971GodfreyRoad_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff878787), + ), + ), + ), + RatingBarbuilder1009_hkzs(), + Padding( + padding: EdgeInsets.fromLTRB(0, 16, 0, 8), + child: Text( + Constants.howIsYourTrip_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xff000000), + ), + ), + ), + Text( + Constants.yourFeedbackWillHelpImprov_, + textAlign: TextAlign.center, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff878787), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 30, 16, 16), + child: TextField( + controller: TextEditingController(), + obscureText: false, + textAlign: TextAlign.start, + maxLines: 5, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + decoration: InputDecoration( + disabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(4.0), + borderSide: BorderSide( + color: Color(0x00ffffff), + width: 1, + ), + ), + hintText: Constants.additionalComment_, + hintStyle: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xffafafaf), + ), + filled: true, + fillColor: Color(0xfff2f2f3), + isDense: false, + contentPadding: EdgeInsets.symmetric( + vertical: 8, + horizontal: 12, + ), + ), + ), + ), + ], + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(16, 200, 0, 0), + child: Container( + height: 80, + width: 80, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(shape: BoxShape.circle), + child: Image.network( + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTH7wtiaB5F3B2oaF5699EJCNEtPnjD57ERWKTMjN0h-gpRxrFQ1u68HzFFT3eYJFFNLr4&usqp=CAU', + fit: BoxFit.cover, + ), + ), + ), + Padding( + padding: EdgeInsets.all(16), + child: Align( + alignment: Alignment.bottomCenter, + child: MaterialButton( + onPressed: () { + view._click(); + }, + color: const Color(0xFF3A57E8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(24.0), + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.submitReview_, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 50, + minWidth: MediaQuery.of(context).size.width, + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class Review_47suController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/setting_pano.dart b/lib/src/ui/views/setting_pano.dart new file mode 100644 index 0000000..4f3057d --- /dev/null +++ b/lib/src/ui/views/setting_pano.dart @@ -0,0 +1,411 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Setting_panoView extends StatefulWidget { + final Object? extra; + + Setting_panoView({super.key, this.extra}); + + @override + State createState() => _Setting_panoViewState(); +} + +class _Setting_panoViewState extends State { + late Setting_panoController _view; + + @override + void initState() { + super.initState(); + _view = Setting_panoController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final app = context.watch(); + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 0, + centerTitle: true, + automaticallyImplyLeading: false, + backgroundColor: Color(0x00ffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.settings_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff000000), + ), + ), + leading: IconButton( + icon: Icon(Icons.arrow_back, color: Color(0xff212435), size: 24), + onPressed: () { + app.back(); + }, + ), + ), + body: Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 16), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + SizedBox(height: 30, width: 16), + Row1667_tgx9( + Constants.editPersonalDetails_, + Constants.kapilSharma_, + 'https://i.ibb.co/xDFtpkb/businessman-character-avatar-isolated-24877-60111.jpg', + ), + Padding1668_943x( + Constants.darkMode_, + Icons.wb_sunny_outlined, + ), + Text( + Constants.profile_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + Padding1670_gouc(Constants.editProfile_, Icons.person), + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 60, + height: 60, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 45, + height: 45, + decoration: BoxDecoration( + color: Color(0xff3a57e8), + shape: BoxShape.circle, + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Icon( + Icons.build, + color: Color(0xffffffff), + size: 24, + ), + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 16, + ), + child: Text( + Constants.changePassword_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + ), + Icon( + Icons.arrow_forward_ios, + color: Color(0xff7b7c80), + size: 18, + ), + ], + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: Text( + Constants.notifications_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 60, + height: 60, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 45, + height: 45, + decoration: BoxDecoration( + color: Color(0xff81cd26), + shape: BoxShape.circle, + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Icon( + Icons.notifications, + color: Color(0xffffffff), + size: 24, + ), + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 16, + ), + child: Text( + Constants.notifications_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + ), + Checkbox( + onChanged: (value) {}, + activeColor: Color(0xff3a57e8), + autofocus: false, + checkColor: Color(0xffffffff), + hoverColor: Color(0x42000000), + splashRadius: 20, + value: true, + ), + ], + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: Text( + Constants.background_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 60, + height: 60, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 45, + height: 45, + decoration: BoxDecoration( + color: Color(0xff9400ff), + shape: BoxShape.circle, + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Icon( + Icons.language, + color: Color(0xffffffff), + size: 24, + ), + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 16, + ), + child: Text( + Constants.language_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + ), + Icon( + Icons.arrow_forward_ios, + color: Color(0xff7b7c80), + size: 18, + ), + ], + ), + Padding( + padding: EdgeInsets.symmetric(vertical: 16, horizontal: 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 60, + height: 60, + decoration: BoxDecoration( + color: Color(0x00ffffff), + shape: BoxShape.rectangle, + borderRadius: BorderRadius.zero, + ), + child: Container( + alignment: Alignment.center, + margin: EdgeInsets.all(0), + padding: EdgeInsets.all(0), + width: 45, + height: 45, + decoration: BoxDecoration( + color: Color(0xffff5d00), + shape: BoxShape.circle, + border: Border.all( + color: Color(0x4d9e9e9e), + width: 1, + ), + ), + child: Icon( + Icons.logout, + color: Color(0xffffffff), + size: 24, + ), + ), + ), + Expanded( + flex: 1, + child: Padding( + padding: EdgeInsets.symmetric( + vertical: 0, + horizontal: 16, + ), + child: Text( + Constants.logout_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 16, + color: Color(0xff000000), + ), + ), + ), + ), + Icon( + Icons.arrow_forward_ios, + color: Color(0xff7b7c80), + size: 18, + ), + ], + ), + ), + ], + ), + ), + ), + ), + ), + ); + } +} + +class Setting_panoController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/splash_p2g8.dart b/lib/src/ui/views/splash_p2g8.dart new file mode 100644 index 0000000..f6cc306 --- /dev/null +++ b/lib/src/ui/views/splash_p2g8.dart @@ -0,0 +1,120 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Splash_p2g8View extends StatefulWidget { + final Object? extra; + + Splash_p2g8View({super.key, this.extra}); + + @override + State createState() => _Splash_p2g8ViewState(); +} + +class _Splash_p2g8ViewState extends State { + late Splash_p2g8Controller _view; + + @override + void initState() { + super.initState(); + _view = Splash_p2g8Controller()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xff3a57e8), + body: Padding( + padding: EdgeInsets.all(16), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Align( + alignment: Alignment.center, + child: Lottie.network( + 'https://assets6.lottiefiles.com/temp/lf20_cEITBI.json', + height: 140, + width: 140, + fit: BoxFit.cover, + repeat: true, + animate: true, + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(0, 30, 0, 60), + child: Text( + Constants.weHaveSpecialFood_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 22, + color: Color(0xffffffff), + ), + ), + ), + MaterialButton( + onPressed: () { + view._click(); + }, + color: const Color(0xFFFFFFFF), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(24.0), + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.next_, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xff3a57e8), + height: 45, + minWidth: MediaQuery.of(context).size.width * 0.5, + ), + ], + ), + ), + ), + ), + ); + } +} + +class Splash_p2g8Controller with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/lib/src/ui/views/verification_nhug.dart b/lib/src/ui/views/verification_nhug.dart new file mode 100644 index 0000000..44de34d --- /dev/null +++ b/lib/src/ui/views/verification_nhug.dart @@ -0,0 +1,180 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; +import 'package:provider/provider.dart'; +//import 'package:collection/collection.dart'; +import 'dart:math'; + +import '../../app.dart'; +import '../../common/constants.dart'; +import '../../common/utils.dart'; +import '../../data/repository/_dao.dart'; +import '../../data/models/_models.dart'; +import '../components/_components.dart'; + +class Verification_nhugView extends StatefulWidget { + final Object? extra; + + Verification_nhugView({super.key, this.extra}); + + @override + State createState() => _Verification_nhugViewState(); +} + +class _Verification_nhugViewState extends State { + late Verification_nhugController _view; + + @override + void initState() { + super.initState(); + _view = Verification_nhugController()..selectedIndex = widget.extra as int; + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => _view, + child: Consumer( + builder: (context, view, child) => Scaffold( + backgroundColor: Color(0xffffffff), + appBar: AppBar( + elevation: 0, + centerTitle: true, + automaticallyImplyLeading: false, + backgroundColor: Color(0x00ffffff), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.zero), + title: Text( + Constants.verification_, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 20, + color: Color(0xff000000), + ), + ), + ), + body: Align( + alignment: Alignment.center, + child: Padding( + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 30), + child: SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Image( + image: NetworkImage( + 'https://cdn4.iconfinder.com/data/icons/avatar-users/512/Avatar_Users2_15-128.png', + ), + height: 120, + width: 120, + fit: BoxFit.contain, + ), + Padding( + padding: EdgeInsets.symmetric( + vertical: 30, + horizontal: 0, + ), + child: Text( + Constants.enterTheVerificationCodeWe_, + textAlign: TextAlign.center, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 18, + color: Color(0xff000000), + ), + ), + ), + OtpTextField1083_80av(), + Padding( + padding: EdgeInsets.symmetric( + vertical: 30, + horizontal: 0, + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + Constants.ifYouDidntReceiveACode_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w400, + fontStyle: FontStyle.normal, + fontSize: 12, + color: Color(0xff000000), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(4, 0, 0, 0), + child: Text( + Constants.resend_, + textAlign: TextAlign.start, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + fontSize: 14, + color: Color(0xff000000), + ), + ), + ), + ], + ), + ), + MaterialButton( + onPressed: () { + view._click(); + }, + color: const Color(0xFF3A57E8), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(30.0), + ), + padding: EdgeInsets.all(16), + child: Text( + Constants.verify_, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w700, + fontStyle: FontStyle.normal, + ), + ), + textColor: Color(0xffffffff), + height: 50, + minWidth: 150, + ), + ], + ), + ), + ), + ), + ), + ), + ); + } +} + +class Verification_nhugController with ChangeNotifier { + int? selectedIndex; + + dynamic getModel(Dao repository) { + final items = repository.getAll(); + return (selectedIndex == null || selectedIndex! >= items.length) + ? repository.create() + : items[selectedIndex!]; + } + + void _click() { + /* TODO */ + } +} diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 0000000..7cdfbc7 --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,167 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.8.2" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + charcode: + dependency: transitive + description: + name: charcode + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.16.0" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.5" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + lints: + dependency: transitive + description: + name: lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.11" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.4" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.7.0" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.1" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.2" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.9" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.2" +sdks: + dart: ">=2.17.1 <3.0.0" diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 0000000..1ea95fe --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,39 @@ +name: food_delivery +description: A new Flutter project. +version: 1.0.0+1 +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +environment: + sdk: '>=3.2.3 <4.0.0' + +dependencies: + flutter: + sdk: flutter + cached_network_image: ^3.1.0 + cupertino_icons: ^1.0.2 + #http: ^0.13.3 + intl: ^0.19.0 + json_annotation: ^4.5.0 + provider: ^6.0.0 + shared_preferences: ^2.0.7 + uuid: ^4.2.2 + go_router: ^13.2.2 + #collection: ^1.17.0 + google_fonts: ^6.1.0 + smooth_page_indicator: ^1.2.1 + flutter_rating_bar: ^4.0.0 + lottie: ^1.1.0 + flutter_otp_text_field: ^1.0.0 + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^3.0.1 + json_serializable: ^6.2.0 + build_runner: ^2.1.1 + +flutter: + uses-material-design: true + assets: + - assets/data.json + - assets/images/ \ No newline at end of file diff --git a/web/favicon.png b/web/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..8aaa46ac1ae21512746f852a42ba87e4165dfdd1 GIT binary patch literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0X7 zltGxWVyS%@P(fs7NJL45ua8x7ey(0(N`6wRUPW#JP&EUCO@$SZnVVXYs8ErclUHn2 zVXFjIVFhG^g!Ppaz)DK8ZIvQ?0~DO|i&7O#^-S~(l1AfjnEK zjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o z3raHc^AtelCMM;Vme?vOfh>Xph&xL%(-1c06+^uR^q@XSM&D4+Kp$>4P^%3{)XKjo zGZknv$b36P8?Z_gF{nK@`XI}Z90TzwSQO}0J1!f2c(B=V`5aP@1P1a|PZ!4!3&Gl8 zTYqUsf!gYFyJnXpu0!n&N*SYAX-%d(5gVjrHJWqXQshj@!Zm{!01WsQrH~9=kTxW#6SvuapgMqt>$=j#%eyGrQzr zP{L-3gsMA^$I1&gsBAEL+vxi1*Igl=8#8`5?A-T5=z-sk46WA1IUT)AIZHx1rdUrf zVJrJn<74DDw`j)Ki#gt}mIT-Q`XRa2-jQXQoI%w`nb|XblvzK${ZzlV)m-XcwC(od z71_OEC5Bt9GEXosOXaPTYOia#R4ID2TiU~`zVMl08TV_C%DnU4^+HE>9(CE4D6?Fz oujB08i7adh9xk7*FX66dWH6F5TM;?E2b5PlUHx3vIVCg!0Dx9vYXATM literal 0 HcmV?d00001 diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..b749bfef07473333cf1dd31e9eed89862a5d52aa GIT binary patch literal 5292 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 literal 0 HcmV?d00001 diff --git a/web/icons/Icon-512.png b/web/icons/Icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..88cfd48dff1169879ba46840804b412fe02fefd6 GIT binary patch literal 8252 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 literal 0 HcmV?d00001 diff --git a/web/icons/Icon-maskable-192.png b/web/icons/Icon-maskable-192.png new file mode 100644 index 0000000000000000000000000000000000000000..eb9b4d76e525556d5d89141648c724331630325d GIT binary patch literal 5594 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 X>c!)3PgKfL&lX^$Z>Cpu&6)6jvi^Z! literal 0 HcmV?d00001 diff --git a/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..d69c56691fbdb0b7efa65097c7cc1edac12a6d3e GIT binary patch literal 20998 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 MPgg&ebxsLQ025IeI{*Lx literal 0 HcmV?d00001 diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..b17db64 --- /dev/null +++ b/web/index.html @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + test_app + + + + + + + + + + diff --git a/web/manifest.json b/web/manifest.json new file mode 100644 index 0000000..87578f3 --- /dev/null +++ b/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "test_app", + "short_name": "test_app", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "A new Flutter project.", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +}