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 0000000..6bd0943 Binary files /dev/null and b/1e7746ff56e91af7d64cbb095c3dc12d differ diff --git a/README.md b/README.md new file mode 100644 index 0000000..4b02abb --- /dev/null +++ b/README.md @@ -0,0 +1,16 @@ +# Food delivery + +A new Flutter project. + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 0000000..a7acf24 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,29 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at + # https://dart-lang.github.io/linter/lints/index.html. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 0000000..5d99765 --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 0000000..84a9fe4 --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,71 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion 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 0000000..db77bb4 Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ 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 0000000..17987b7 Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..09d4391 Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ 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 0000000..d5f1c8d Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ 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 0000000..4d6372e Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ 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 0000000..dc9ada4 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 0000000..28c6bf0 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000..2ccbfd9 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ 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 0000000..f091b6b Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000..4cde121 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ 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 0000000..d0ef06e Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 0000000..dcdc230 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 0000000..2ccbfd9 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ 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 0000000..c8f9ed8 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ 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 0000000..a6d6b86 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ 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 0000000..a6d6b86 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ 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 0000000..75b2d16 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ 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 0000000..c4df70d Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 0000000..6a84f41 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000..d0e1f58 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 0000000..d08a4de --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000..9da19ea Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ 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 0000000..9da19ea Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ 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 0000000..9da19ea Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ 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 0000000..8aaa46a Binary files /dev/null and b/web/favicon.png differ diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png new file mode 100644 index 0000000..b749bfe Binary files /dev/null and b/web/icons/Icon-192.png differ diff --git a/web/icons/Icon-512.png b/web/icons/Icon-512.png new file mode 100644 index 0000000..88cfd48 Binary files /dev/null and b/web/icons/Icon-512.png differ diff --git a/web/icons/Icon-maskable-192.png b/web/icons/Icon-maskable-192.png new file mode 100644 index 0000000..eb9b4d7 Binary files /dev/null and b/web/icons/Icon-maskable-192.png differ diff --git a/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000..d69c566 Binary files /dev/null and b/web/icons/Icon-maskable-512.png differ 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" + } + ] +}