Uploaded ZIP contents
|
|
@ -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: ./
|
||||
|
|
@ -1,29 +1,47 @@
|
|||
# ---> Dart
|
||||
# See https://www.dartlang.org/guides/libraries/private-files
|
||||
|
||||
# Files and directories created by pub
|
||||
.dart_tool/
|
||||
.packages
|
||||
build/
|
||||
# If you're building an application, you may want to check-in your pubspec.lock
|
||||
pubspec.lock
|
||||
|
||||
# Directory created by dartdoc
|
||||
# If you don't generate documentation locally you can remove this line.
|
||||
doc/api/
|
||||
|
||||
# dotenv environment variables file
|
||||
.env*
|
||||
|
||||
# Avoid committing generated Javascript files:
|
||||
*.dart.js
|
||||
*.info.json # Produced by the --dump-info flag.
|
||||
*.js # When generated by dart2js. Don't specify *.js if your
|
||||
# project includes source files written in JavaScript.
|
||||
*.js_
|
||||
*.js.deps
|
||||
*.js.map
|
||||
|
||||
.flutter-plugins
|
||||
.flutter-plugins-dependencies
|
||||
|
||||
# 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
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
18
README.md
|
|
@ -1,2 +1,16 @@
|
|||
# second
|
||||
|
||||
# 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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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"
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.test_app">
|
||||
<!-- The INTERNET permission is required for development. Specifically,
|
||||
the Flutter tool needs it to communicate with the running application
|
||||
to allow setting breakpoints, to provide hot reload, etc.
|
||||
-->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
</manifest>
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.app">
|
||||
<application
|
||||
android:label="Food delivery"
|
||||
android:name="${applicationName}"
|
||||
android:icon="@mipmap/ic_launcher">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true"
|
||||
android:launchMode="singleTop"
|
||||
android:theme="@style/LaunchTheme"
|
||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||
android:hardwareAccelerated="true"
|
||||
android:windowSoftInputMode="adjustResize">
|
||||
<!-- Specifies an Android theme to apply to this Activity as soon as
|
||||
the Android process has started. This theme is visible to the user
|
||||
while the Flutter UI initializes. After that, this theme continues
|
||||
to determine the Window background behind the Flutter UI. -->
|
||||
<meta-data
|
||||
android:name="io.flutter.embedding.android.NormalTheme"
|
||||
android:resource="@style/NormalTheme"
|
||||
/>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<!-- Don't delete the meta-data below.
|
||||
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
|
||||
<meta-data
|
||||
android:name="flutterEmbedding"
|
||||
android:value="2" />
|
||||
</application>
|
||||
</manifest>
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
package com.example.test_app
|
||||
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
|
||||
class MainActivity: FlutterActivity() {
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="?android:colorBackground" />
|
||||
|
||||
<!-- You can insert your own image assets here -->
|
||||
<!-- <item>
|
||||
<bitmap
|
||||
android:gravity="center"
|
||||
android:src="@mipmap/launch_image" />
|
||||
</item> -->
|
||||
</layer-list>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@android:color/white" />
|
||||
|
||||
<!-- You can insert your own image assets here -->
|
||||
<!-- <item>
|
||||
<bitmap
|
||||
android:gravity="center"
|
||||
android:src="@mipmap/launch_image" />
|
||||
</item> -->
|
||||
</layer-list>
|
||||
|
After Width: | Height: | Size: 544 B |
|
After Width: | Height: | Size: 442 B |
|
After Width: | Height: | Size: 721 B |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
|
||||
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||
<!-- Show a splash screen on the activity. Automatically removed when
|
||||
the Flutter engine draws its first frame -->
|
||||
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||
</style>
|
||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||
This theme determines the color of the Android Window while your
|
||||
Flutter UI initializes, as well as behind your Flutter UI while its
|
||||
running.
|
||||
|
||||
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
||||
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||
<item name="android:windowBackground">?android:colorBackground</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
|
||||
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
||||
<!-- Show a splash screen on the activity. Automatically removed when
|
||||
the Flutter engine draws its first frame -->
|
||||
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||
</style>
|
||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||
This theme determines the color of the Android Window while your
|
||||
Flutter UI initializes, as well as behind your Flutter UI while its
|
||||
running.
|
||||
|
||||
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
||||
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
||||
<item name="android:windowBackground">?android:colorBackground</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.test_app">
|
||||
<!-- The INTERNET permission is required for development. Specifically,
|
||||
the Flutter tool needs it to communicate with the running application
|
||||
to allow setting breakpoints, to provide hot reload, etc.
|
||||
-->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
</manifest>
|
||||
|
|
@ -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
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
org.gradle.jvmargs=-Xmx1536M
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
|
|
@ -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
|
||||
|
|
@ -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"
|
||||
|
|
@ -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}]}
|
||||
|
|
@ -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;
|
||||
|
|
@ -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
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>App</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>io.flutter.flutter.app</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>App</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>MinimumOSVersion</key>
|
||||
<string>9.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1 @@
|
|||
#include "Generated.xcconfig"
|
||||
|
|
@ -0,0 +1 @@
|
|||
#include "Generated.xcconfig"
|
||||
|
|
@ -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 = "<group>"; };
|
||||
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
|
||||
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
|
||||
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
|
||||
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
|
||||
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
|
||||
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 = "<group>"; };
|
||||
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
/* 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 = "<group>";
|
||||
};
|
||||
97C146E51CF9000F007C117D = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9740EEB11CF90186004384FC /* Flutter */,
|
||||
97C146F01CF9000F007C117D /* Runner */,
|
||||
97C146EF1CF9000F007C117D /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
97C146EF1CF9000F007C117D /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
97C146EE1CF9000F007C117D /* Runner.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
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 = "<group>";
|
||||
};
|
||||
/* 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 = "<group>";
|
||||
};
|
||||
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
97C147001CF9000F007C117D /* Base */,
|
||||
);
|
||||
name = LaunchScreen.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* 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 */;
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>PreviewsEnabled</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1300"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||
BuildableName = "Runner.app"
|
||||
BlueprintName = "Runner"
|
||||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||
BuildableName = "Runner.app"
|
||||
BlueprintName = "Runner"
|
||||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<Testables>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||
BuildableName = "Runner.app"
|
||||
BlueprintName = "Runner"
|
||||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Profile"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||
BuildableName = "Runner.app"
|
||||
BlueprintName = "Runner"
|
||||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:Runner.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>PreviewsEnabled</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 564 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 68 B |
|
After Width: | Height: | Size: 68 B |
|
After Width: | Height: | Size: 68 B |
|
|
@ -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.
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="EHf-IW-A2E">
|
||||
<objects>
|
||||
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
|
||||
</imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
|
||||
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="53" y="375"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
<image name="LaunchImage" width="168" height="185"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--Flutter View Controller-->
|
||||
<scene sceneID="tne-QT-ifu">
|
||||
<objects>
|
||||
<viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
</scene>
|
||||
</scenes>
|
||||
</document>
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>Food delivery</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>food_delivery</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>$(FLUTTER_BUILD_NAME)</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(FLUTTER_BUILD_NUMBER)</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIMainStoryboardFile</key>
|
||||
<string>Main</string>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<false/>
|
||||
<key>CADisableMinimumFrameDurationOnPhone</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1 @@
|
|||
#import "GeneratedPluginRegistrant.h"
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'src/app.dart';
|
||||
|
||||
void main() {
|
||||
runApp(MyApp());
|
||||
}
|
||||
|
|
@ -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<void> loadData() async {
|
||||
await fillWithMockData();
|
||||
}
|
||||
|
||||
void back() {
|
||||
Navigator.maybePop(context);
|
||||
}
|
||||
|
||||
final sampleDao = SampleDao();
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
export '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<String, dynamic> json) => _$SampleFromJson(json);
|
||||
|
||||
Map<String, dynamic> toJson() => _$SampleToJson(this);
|
||||
|
||||
@override
|
||||
operator ==(Object other) => other is Sample && other.id == id;
|
||||
|
||||
@override
|
||||
int get hashCode => id.hashCode;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return '<Sample id=$id>';
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
export 'sample_dao.dart';
|
||||
|
||||
abstract class Dao<T> {
|
||||
Future<T?> delete(String id);
|
||||
|
||||
Future<bool> deleteAll();
|
||||
|
||||
T? get(String id);
|
||||
|
||||
List<T> getAll();
|
||||
|
||||
T create();
|
||||
|
||||
Future<T> insert(T item);
|
||||
|
||||
Future<List<T>> fetchAll();
|
||||
|
||||
Future<T?> fetch(String id);
|
||||
|
||||
Future<T> update(T item, String id);
|
||||
|
||||
Future<T> upsert(T item);
|
||||
|
||||
Stream<List<T>> subscribe();
|
||||
}
|
||||
|
|
@ -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<Sample> {
|
||||
static SampleDao? _instance;
|
||||
|
||||
// singleton instance
|
||||
factory SampleDao() => _instance ??= SampleDao._internal();
|
||||
|
||||
SampleDao._internal() {
|
||||
// initialization logic here
|
||||
}
|
||||
|
||||
final Map<String, Sample> _storage = {};
|
||||
final StreamController<List<Sample>> _streamController =
|
||||
StreamController<List<Sample>>.broadcast();
|
||||
|
||||
@override
|
||||
Future<Sample?> delete(String id) async {
|
||||
var removed = _storage.remove(id);
|
||||
_emit();
|
||||
return removed;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> deleteAll() async {
|
||||
_storage.clear();
|
||||
_emit();
|
||||
return true;
|
||||
}
|
||||
|
||||
@override
|
||||
Sample? get(String id) {
|
||||
return _storage[id];
|
||||
}
|
||||
|
||||
@override
|
||||
List<Sample> getAll() {
|
||||
return _storage.values.toList();
|
||||
}
|
||||
|
||||
@override
|
||||
Sample create() {
|
||||
return Sample();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Sample> 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<List<Sample>> fetchAll() async {
|
||||
return _storage.values.toList();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Sample?> fetch(String id) async {
|
||||
return _storage[id];
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Sample> update(Sample item, String id) async {
|
||||
_storage[id] = item;
|
||||
_emit();
|
||||
return item..id = id;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Sample> upsert(Sample item) async {
|
||||
return (item.id == null) ? insert(item) : update(item, item.id!);
|
||||
}
|
||||
|
||||
@override
|
||||
Stream<List<Sample>> subscribe() => _streamController.stream;
|
||||
|
||||
void _emit() {
|
||||
_streamController.add(_storage.values.toList());
|
||||
}
|
||||
}
|
||||
|
|
@ -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<AboutUsView> createState() => _AboutUsViewState();
|
||||
}
|
||||
|
||||
class _AboutUsViewState extends State<AboutUsView> {
|
||||
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<AppController>();
|
||||
return ChangeNotifierProvider(
|
||||
create: (context) => _view,
|
||||
child: Consumer<AboutUsController>(
|
||||
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!];
|
||||
}
|
||||
}
|
||||
|
|
@ -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<AudioArticle_60rnView> createState() => _AudioArticle_60rnViewState();
|
||||
}
|
||||
|
||||
class _AudioArticle_60rnViewState extends State<AudioArticle_60rnView> {
|
||||
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<AudioArticle_60rnController>(
|
||||
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 */
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Bookmark_2rubView> createState() => _Bookmark_2rubViewState();
|
||||
}
|
||||
|
||||
class _Bookmark_2rubViewState extends State<Bookmark_2rubView> {
|
||||
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<AppController>();
|
||||
return ChangeNotifierProvider(
|
||||
create: (context) => _view,
|
||||
child: Consumer<Bookmark_2rubController>(
|
||||
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!];
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Category_e0b3View> createState() => _Category_e0b3ViewState();
|
||||
}
|
||||
|
||||
class _Category_e0b3ViewState extends State<Category_e0b3View> {
|
||||
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<AppController>();
|
||||
return ChangeNotifierProvider(
|
||||
create: (context) => _view,
|
||||
child: Consumer<Category_e0b3Controller>(
|
||||
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!];
|
||||
}
|
||||
}
|
||||
|
|
@ -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<ChangePassword_5ugnView> createState() =>
|
||||
_ChangePassword_5ugnViewState();
|
||||
}
|
||||
|
||||
class _ChangePassword_5ugnViewState extends State<ChangePassword_5ugnView> {
|
||||
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<AppController>();
|
||||
return ChangeNotifierProvider(
|
||||
create: (context) => _view,
|
||||
child: Consumer<ChangePassword_5ugnController>(
|
||||
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 */
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Chat_n9xmView> createState() => _Chat_n9xmViewState();
|
||||
}
|
||||
|
||||
class _Chat_n9xmViewState extends State<Chat_n9xmView> {
|
||||
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<AppController>();
|
||||
return ChangeNotifierProvider(
|
||||
create: (context) => _view,
|
||||
child: Consumer<Chat_n9xmController>(
|
||||
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!];
|
||||
}
|
||||
}
|
||||
|
|
@ -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<ContactUs_inknView> createState() => _ContactUs_inknViewState();
|
||||
}
|
||||
|
||||
class _ContactUs_inknViewState extends State<ContactUs_inknView> {
|
||||
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<ContactUs_inknController>(
|
||||
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 */
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Dashboard_jvxmView> createState() => _Dashboard_jvxmViewState();
|
||||
}
|
||||
|
||||
class _Dashboard_jvxmViewState extends State<Dashboard_jvxmView> {
|
||||
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<Dashboard_jvxmController>(
|
||||
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!];
|
||||
}
|
||||
}
|
||||
|
|
@ -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<DataNotFound_f1qfView> createState() => _DataNotFound_f1qfViewState();
|
||||
}
|
||||
|
||||
class _DataNotFound_f1qfViewState extends State<DataNotFound_f1qfView> {
|
||||
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<DataNotFound_f1qfController>(
|
||||
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 */
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Detail_dm5hView> createState() => _Detail_dm5hViewState();
|
||||
}
|
||||
|
||||
class _Detail_dm5hViewState extends State<Detail_dm5hView> {
|
||||
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<AppController>();
|
||||
return ChangeNotifierProvider(
|
||||
create: (context) => _view,
|
||||
child: Consumer<Detail_dm5hController>(
|
||||
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 */
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Discover_au68View> createState() => _Discover_au68ViewState();
|
||||
}
|
||||
|
||||
class _Discover_au68ViewState extends State<Discover_au68View> {
|
||||
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<Discover_au68Controller>(
|
||||
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!];
|
||||
}
|
||||
}
|
||||
|
|
@ -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<EmptyPinNotes_1l1vView> createState() => _EmptyPinNotes_1l1vViewState();
|
||||
}
|
||||
|
||||
class _EmptyPinNotes_1l1vViewState extends State<EmptyPinNotes_1l1vView> {
|
||||
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<EmptyPinNotes_1l1vController>(
|
||||
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!];
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Following_s3l5View> createState() => _Following_s3l5ViewState();
|
||||
}
|
||||
|
||||
class _Following_s3l5ViewState extends State<Following_s3l5View> {
|
||||
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<AppController>();
|
||||
return ChangeNotifierProvider(
|
||||
create: (context) => _view,
|
||||
child: Consumer<Following_s3l5Controller>(
|
||||
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!];
|
||||
}
|
||||
}
|
||||
|
|
@ -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<ForgotPassword_xt11View> createState() =>
|
||||
_ForgotPassword_xt11ViewState();
|
||||
}
|
||||
|
||||
class _ForgotPassword_xt11ViewState extends State<ForgotPassword_xt11View> {
|
||||
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<AppController>();
|
||||
return ChangeNotifierProvider(
|
||||
create: (context) => _view,
|
||||
child: Consumer<ForgotPassword_xt11Controller>(
|
||||
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 */
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Grid_kcdzView> createState() => _Grid_kcdzViewState();
|
||||
}
|
||||
|
||||
class _Grid_kcdzViewState extends State<Grid_kcdzView> {
|
||||
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<AppController>();
|
||||
return ChangeNotifierProvider(
|
||||
create: (context) => _view,
|
||||
child: Consumer<Grid_kcdzController>(
|
||||
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 */
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Home_cigxView> createState() => _Home_cigxViewState();
|
||||
}
|
||||
|
||||
class _Home_cigxViewState extends State<Home_cigxView> {
|
||||
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<Home_cigxController>(
|
||||
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 */
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Labels_sxueView> createState() => _Labels_sxueViewState();
|
||||
}
|
||||
|
||||
class _Labels_sxueViewState extends State<Labels_sxueView> {
|
||||
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<Labels_sxueController>(
|
||||
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!];
|
||||
}
|
||||
}
|
||||
|
|
@ -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<List_1ealView> createState() => _List_1ealViewState();
|
||||
}
|
||||
|
||||
class _List_1ealViewState extends State<List_1ealView> {
|
||||
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<AppController>();
|
||||
return ChangeNotifierProvider(
|
||||
create: (context) => _view,
|
||||
child: Consumer<List_1ealController>(
|
||||
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 */
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Login_qayvView> createState() => _Login_qayvViewState();
|
||||
}
|
||||
|
||||
class _Login_qayvViewState extends State<Login_qayvView> {
|
||||
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<Login_qayvController>(
|
||||
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 */
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Membership_z9zeView> createState() => _Membership_z9zeViewState();
|
||||
}
|
||||
|
||||
class _Membership_z9zeViewState extends State<Membership_z9zeView> {
|
||||
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<AppController>();
|
||||
return ChangeNotifierProvider(
|
||||
create: (context) => _view,
|
||||
child: Consumer<Membership_z9zeController>(
|
||||
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 */
|
||||
}
|
||||
}
|
||||
|
|
@ -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<MyAccount_tyvzView> createState() => _MyAccount_tyvzViewState();
|
||||
}
|
||||
|
||||
class _MyAccount_tyvzViewState extends State<MyAccount_tyvzView> {
|
||||
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<MyAccount_tyvzController>(
|
||||
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 */
|
||||
}
|
||||
}
|
||||
|
|
@ -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<NewsDetails_t6nwView> createState() => _NewsDetails_t6nwViewState();
|
||||
}
|
||||
|
||||
class _NewsDetails_t6nwViewState extends State<NewsDetails_t6nwView> {
|
||||
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<AppController>();
|
||||
return ChangeNotifierProvider(
|
||||
create: (context) => _view,
|
||||
child: Consumer<NewsDetails_t6nwController>(
|
||||
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 */
|
||||
}
|
||||
}
|
||||
|
|
@ -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<NoDataFound_shk8View> createState() => _NoDataFound_shk8ViewState();
|
||||
}
|
||||
|
||||
class _NoDataFound_shk8ViewState extends State<NoDataFound_shk8View> {
|
||||
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<NoDataFound_shk8Controller>(
|
||||
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 */
|
||||
}
|
||||
}
|
||||
|
|
@ -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<NotificationSetting_bycdView> createState() =>
|
||||
_NotificationSetting_bycdViewState();
|
||||
}
|
||||
|
||||
class _NotificationSetting_bycdViewState
|
||||
extends State<NotificationSetting_bycdView> {
|
||||
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<AppController>();
|
||||
return ChangeNotifierProvider(
|
||||
create: (context) => _view,
|
||||
child: Consumer<NotificationSetting_bycdController>(
|
||||
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!];
|
||||
}
|
||||
}
|
||||
|
|
@ -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<PinNoteList_qn8aView> createState() => _PinNoteList_qn8aViewState();
|
||||
}
|
||||
|
||||
class _PinNoteList_qn8aViewState extends State<PinNoteList_qn8aView> {
|
||||
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<PinNoteList_qn8aController>(
|
||||
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!];
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Profile_pzn0View> createState() => _Profile_pzn0ViewState();
|
||||
}
|
||||
|
||||
class _Profile_pzn0ViewState extends State<Profile_pzn0View> {
|
||||
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<Profile_pzn0Controller>(
|
||||
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 */
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Register_obmzView> createState() => _Register_obmzViewState();
|
||||
}
|
||||
|
||||
class _Register_obmzViewState extends State<Register_obmzView> {
|
||||
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<Register_obmzController>(
|
||||
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 */
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Review_47suView> createState() => _Review_47suViewState();
|
||||
}
|
||||
|
||||
class _Review_47suViewState extends State<Review_47suView> {
|
||||
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<AppController>();
|
||||
return ChangeNotifierProvider(
|
||||
create: (context) => _view,
|
||||
child: Consumer<Review_47suController>(
|
||||
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 */
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Setting_panoView> createState() => _Setting_panoViewState();
|
||||
}
|
||||
|
||||
class _Setting_panoViewState extends State<Setting_panoView> {
|
||||
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<AppController>();
|
||||
return ChangeNotifierProvider(
|
||||
create: (context) => _view,
|
||||
child: Consumer<Setting_panoController>(
|
||||
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 */
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Splash_p2g8View> createState() => _Splash_p2g8ViewState();
|
||||
}
|
||||
|
||||
class _Splash_p2g8ViewState extends State<Splash_p2g8View> {
|
||||
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<Splash_p2g8Controller>(
|
||||
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 */
|
||||
}
|
||||
}
|
||||