Commit 5ab253f4 by art

init

parents
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
# 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/
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/
# Web related
lib/generated_plugin_registrant.dart
# Exceptions to above rules.
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
# 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 and should not be manually edited.
version:
revision: f139b11009aeb8ed2a3a3aa8b0066e482709dde3
channel: unknown
project_type: app
# feelverapp
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://flutter.dev/docs/get-started/codelab)
- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
For help getting started with Flutter, view our
[online documentation](https://flutter.dev/docs), which offers tutorials,
samples, guidance on mobile development, and a full API reference.
gradle-wrapper.jar
/.gradle
/captures/
/gradlew
/gradlew.bat
/local.properties
GeneratedPluginRegistrant.java
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 28
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.u2fellows.feelverapp"
minSdkVersion 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
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"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.u2fellows.feelverapp">
<!-- Flutter 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>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.u2fellows.feelverapp">
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method.
In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
<application
android:name="io.flutter.app.FlutterApplication"
android:label="feelverapp"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
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">
<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>
package com.u2fellows.feelverapp
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant
class MainActivity: FlutterActivity() {
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
}
}
<?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>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
</resources>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.u2fellows.feelverapp">
<!-- Flutter 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>
buildscript {
ext.kotlin_version = '1.3.50'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
jcenter()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}
org.gradle.jvmargs=-Xmx1536M
android.enableR8=true
android.useAndroidX=true
android.enableJetifier=true
#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-5.6.2-all.zip
include ':app'
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
}
plugins.each { name, path ->
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
include ":$name"
project(":$name").projectDir = pluginDirectory
}
*.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/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
<?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>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>8.0</string>
</dict>
</plist>
#include "Generated.xcconfig"
#include "Generated.xcconfig"
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
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 */; };
3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; };
9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
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 = (
3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */,
9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */,
);
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>"; };
3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; 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>"; };
9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; 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 = (
9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */,
3B80C3941E831B6300D905FE /* App.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
3B80C3931E831B6300D905FE /* App.framework */,
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
9740EEBA1CF902C7004384FC /* Flutter.framework */,
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 */,
97C146F11CF9000F007C117D /* Supporting Files */,
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
);
path = Runner;
sourceTree = "<group>";
};
97C146F11CF9000F007C117D /* Supporting Files */ = {
isa = PBXGroup;
children = (
);
name = "Supporting Files";
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 = 1020;
ORGANIZATIONNAME = "The Chromium Authors";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1;
LastSwiftMigration = 1100;
};
};
};
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
compatibilityVersion = "Xcode 3.2";
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\" 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;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
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 = 8.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;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
PRODUCT_BUNDLE_IDENTIFIER = com.2fellows.feelverapp;
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;
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
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 = 8.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
97C147041CF9000F007C117D /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
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 = 8.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
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;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
PRODUCT_BUNDLE_IDENTIFIER = com.2fellows.feelverapp;
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;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
PRODUCT_BUNDLE_IDENTIFIER = com.2fellows.feelverapp;
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 */;
}
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
</Workspace>
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1020"
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">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</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>
<AdditionalOptions>
</AdditionalOptions>
</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>
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
</Workspace>
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)
}
}
{
"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"
}
}
{
"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"
}
}
# Launch Screen Assets
You can customize the launch screen with your own desired assets by replacing the image files in this directory.
You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
\ No newline at end of file
<?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>
<?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>
<?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>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>feelverapp</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/>
</dict>
</plist>
#import "GeneratedPluginRegistrant.h"
\ No newline at end of file
import 'package:flutter/material.dart';
import 'ui/splashscreen/splash_screen_page.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: SplashScreenPage(),
);
}
}
import 'package:feelverapp/util/SizeConfig.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class BookingFlow extends StatefulWidget {
@override
_BookingFlowState createState() => _BookingFlowState();
}
class _BookingFlowState extends State<BookingFlow> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: _setupView(),
bottomNavigationBar: Container(
height: SizeConfig.getHeight(100),
color: Color.fromRGBO(106, 179, 170, 1),
child: Stack(
children: <Widget>[
Positioned(
top: SizeConfig.getPadding(24),
left: SizeConfig.getPadding(20),
child: Container(
// color: Colors.red,
width: MediaQuery.of(context).size.width / 2.5,
height: SizeConfig.getHeight(45),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(24),
color: Color.fromRGBO(54, 148, 163, 1),
),
child: Container(
padding: EdgeInsets.only(top: SizeConfig.getPadding(6)),
child: Text(
'หยิบใส่รถเข็น',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
),
),
Positioned(
top: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(20),
child: InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => BookingFlow(),
),
);
},
child: Container(
// color: Colors.red,
width: MediaQuery.of(context).size.width / 2.5,
height: SizeConfig.getHeight(45),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(24),
color: Color.fromRGBO(232, 166, 180, 1),
),
child: Container(
padding: EdgeInsets.only(top: SizeConfig.getPadding(6)),
child: Text(
'จองเลย',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
),
),
),
],
),
),
);
}
_setupView() {
return SingleChildScrollView(
child: Column(
children: <Widget>[
Stack(
children: <Widget>[
Image.network(
'https://www.cancurreu.com/wp-content/uploads/can_curreu_hotel_ibiza_spa_tratamientos.jpg',
width: MediaQuery.of(context).size.width,
height: SizeConfig.getHeight(450),
fit: BoxFit.cover,
),
Positioned(
top: SizeConfig.getPadding(44),
left: SizeConfig.getPadding(16),
child: InkWell(
onTap: () {
Navigator.pop(context);
},
child: Image.asset(
'assets/images/ic_back.png',
width: SizeConfig.getWidth(20),
height: SizeConfig.getWidth(20),
),
),
),
],
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(24),
top: SizeConfig.getPadding(16)),
alignment: Alignment.topLeft,
child: Text(
'4 ธ.ค. 2561 18:55 น.',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black54,
fontSize: SizeConfig.getFontSize(11),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(24),
top: SizeConfig.getPadding(3),
bottom: SizeConfig.getPadding(8)),
alignment: Alignment.topLeft,
child: Text(
'Thai Body',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(26),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
),
Row(
children: <Widget>[
SizedBox(
width: SizeConfig.getWidth(24),
),
ImageIcon(
AssetImage('assets/images/ic_fav_active.png'),
color: Colors.pink,
size: SizeConfig.getFontSize(24),
),
SizedBox(
width: SizeConfig.getWidth(8),
),
Container(
alignment: Alignment.topLeft,
child: Text(
'70',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black54,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
padding: EdgeInsets.only(
top: SizeConfig.getPadding(5),
left: SizeConfig.getPadding(0),
bottom: SizeConfig.getPadding(4)),
),
SizedBox(
width: SizeConfig.getWidth(20),
),
ImageIcon(
AssetImage('assets/images/ic_comment.png'),
color: Colors.grey,
size: SizeConfig.getFontSize(24),
),
SizedBox(
width: SizeConfig.getWidth(8),
),
Container(
alignment: Alignment.topLeft,
child: Text(
'70',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black54,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
padding: EdgeInsets.only(
top: SizeConfig.getPadding(5),
left: SizeConfig.getPadding(0),
bottom: SizeConfig.getPadding(4)),
),
SizedBox(
width: SizeConfig.getWidth(20),
),
ImageIcon(
AssetImage('assets/images/facebook-icon.png'),
color: Colors.grey,
size: SizeConfig.getFontSize(24),
),
SizedBox(
width: SizeConfig.getWidth(20),
),
ImageIcon(
AssetImage('assets/images/ic_twitter.png'),
color: Colors.grey,
size: SizeConfig.getFontSize(24),
),
],
),
SizedBox(
height: SizeConfig.getWidth(20),
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
),
child: Card(
child: Column(
children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
children: <Widget>[
ClipRRect(
borderRadius: BorderRadius.circular(11.0),
child: Image.network(
'https://image.freepik.com/free-photo/girl-massage-spa-salon_110955-422.jpg',
fit: BoxFit.cover,
height: 100.0,
width: 100.0,
),
),
Column(
children: <Widget>[
Container(
alignment: Alignment.topLeft,
child: Text(
'SPA By CLARINS',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
padding: EdgeInsets.only(
top: SizeConfig.getPadding(5),
left: SizeConfig.getPadding(0),
bottom: SizeConfig.getPadding(5)),
),
Row(
children: <Widget>[
SizedBox(
width: 16,
),
ImageIcon(
AssetImage('assets/images/pin_drop.png'),
color: Colors.black54,
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(4),
),
Container(
alignment: Alignment.topLeft,
child: Text(
'พญาไท กรุงเทพ (3.8 km)',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black87,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
padding: EdgeInsets.only(
top: SizeConfig.getPadding(5),
left: SizeConfig.getPadding(0),
bottom: SizeConfig.getPadding(5)),
),
],
),
Row(
children: <Widget>[
SizedBox(
width: SizeConfig.getWidth(24),
),
Container(
alignment: Alignment.topLeft,
child: Text(
'4.4',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black54,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
padding: EdgeInsets.only(
top: SizeConfig.getPadding(5),
left: SizeConfig.getPadding(10),
bottom: SizeConfig.getPadding(5)),
),
SizedBox(
width: SizeConfig.getWidth(14),
),
ImageIcon(
AssetImage(
'assets/images/ic_star_active.png'),
color: Color.fromRGBO(255, 207, 7, 1),
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(2),
),
ImageIcon(
AssetImage(
'assets/images/ic_star_active.png'),
color: Color.fromRGBO(255, 207, 7, 1),
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(2),
),
ImageIcon(
AssetImage(
'assets/images/ic_star_active.png'),
color: Color.fromRGBO(255, 207, 7, 1),
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(2),
),
ImageIcon(
AssetImage(
'assets/images/ic_star_active.png'),
color: Color.fromRGBO(255, 207, 7, 1),
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(2),
),
ImageIcon(
AssetImage(
'assets/images/ic_star_unactive.png'),
color: Colors.grey,
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(40),
height: SizeConfig.getWidth(30),
),
],
),
],
),
],
),
),
SizedBox(
height: SizeConfig.getHeight(8),
),
Container(
width: MediaQuery.of(context).size.width / 1.5,
height: SizeConfig.getHeight(40),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(24),
color: Color.fromRGBO(54, 148, 163, 1),
),
child: Container(
padding: EdgeInsets.only(top: SizeConfig.getPadding(6)),
child: Text(
'ร้านแนะนำ',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
),
SizedBox(
height: SizeConfig.getHeight(16),
),
],
),
),
),
Container(
alignment: Alignment.topLeft,
padding: EdgeInsets.only(
top: SizeConfig.getPadding(24),
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24)),
child: Text(
'A four hand massage performed by two therapists in unison, this experience coordinates a blend of Thai, Swedish, Shiatsu and Reflexology techniques using deep rhythmic movement to leave you feeling completely renewed. Top Tip: This is Khun Taras (our Group Spa Director) favourite massage. She loves it because having the sensation of two therapists working on you means your mind cant concentrate on one area and it basically just gives up! This massage almost forces you to switch your mind off. Try it and see.',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black54,
fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(24),
top: SizeConfig.getPadding(3),
bottom: SizeConfig.getPadding(8)),
alignment: Alignment.topLeft,
child: Text(
'Thai Body Balance 60 นาที',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(26),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Container(
alignment: Alignment.topLeft,
width: MediaQuery.of(context).size.width / 3,
height: SizeConfig.getHeight(50),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(24),
color: Color.fromRGBO(54, 148, 163, 1),
),
child: Container(
alignment: Alignment.topCenter,
padding: EdgeInsets.only(top: SizeConfig.getPadding(10)),
child: Text(
'ร้านแนะนำ',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
),
SizedBox(
height: SizeConfig.getHeight(30),
),
],
),
);
}
}
import 'package:feelverapp/util/SizeConfig.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class EditProfile extends StatefulWidget {
@override
_EditProfileState createState() => _EditProfileState();
}
class _EditProfileState extends State<EditProfile> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Color.fromRGBO(106, 179, 170, 1),
elevation: 0,
centerTitle: true,
title: Text(
'แก้ไขโปรไฟล์',
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(20),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
body: SingleChildScrollView(
child: Column(
children: <Widget>[
Stack(
children: <Widget>[
Container(
height: SizeConfig.getWidth(80),
color: Color.fromRGBO(106, 179, 170, 1),
),
Container(
alignment: Alignment.topCenter,
padding: EdgeInsets.only(
left: SizeConfig.getPadding(10),
top: SizeConfig.getPadding(30)),
child: Image.asset(
'assets/images/ic_userimg.png',
width: SizeConfig.getWidth(100),
height: SizeConfig.getWidth(100),
),
),
Container(
alignment: Alignment.topCenter,
padding: EdgeInsets.only(
left: SizeConfig.getPadding(10),
top: SizeConfig.getPadding(65)),
child: Image.asset(
'assets/images/ic_camera_profile.png',
width: SizeConfig.getWidth(34),
height: SizeConfig.getWidth(34),
),
),
],
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(10),
top: SizeConfig.getPadding(10),
),
child: Text(
'Rattaya Pratumkan',
style: TextStyle(
color: Color.fromRGBO(238, 175, 183, 1),
fontSize: SizeConfig.getFontSize(24),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Container(
alignment: Alignment.topLeft,
padding: EdgeInsets.only(
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
top: SizeConfig.getPadding(0),
),
child: TextFormField(
decoration: InputDecoration(
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.black45),
) ,
labelText: 'ชื่อผู้ใช้งาน',
labelStyle: TextStyle(
color: Colors.black87,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
) , Container(
alignment: Alignment.topLeft,
padding: EdgeInsets.only(
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
top: SizeConfig.getPadding(0),
),
child: TextFormField(
decoration: InputDecoration(
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.black45),
),
hintText: '',
labelText: 'เพศ',
labelStyle: TextStyle(
color: Colors.black87,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
focusColor: Colors.red,
),
),
), Container(
alignment: Alignment.topLeft,
padding: EdgeInsets.only(
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
top: SizeConfig.getPadding(0),
),
child: TextField(
decoration: InputDecoration(
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.black45),
),
hintText: '',
labelText: 'วัน เดือน ปีเกิด',
labelStyle: TextStyle(
color: Colors.black87,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
focusColor: Colors.red,
),
),
), Container(
alignment: Alignment.topLeft,
padding: EdgeInsets.only(
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
top: SizeConfig.getPadding(0),
),
child: TextFormField(
decoration: InputDecoration(
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.black45),
),
hintText: '',
labelText: 'เบอร์โทร',
labelStyle: TextStyle(
color: Colors.black87,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
focusColor: Colors.red,
),
),
), Container(
alignment: Alignment.topLeft,
padding: EdgeInsets.only(
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
top: SizeConfig.getPadding(0),
),
child: TextFormField(
decoration: InputDecoration(
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.black45),
),
hintText: '',
labelText: 'อีเมล์',
labelStyle: TextStyle(
color: Colors.black87,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
focusColor: Colors.red,
),
),
),Container(
alignment: Alignment.topLeft,
padding: EdgeInsets.only(
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
top: SizeConfig.getPadding(0),
),
child: TextFormField(
decoration: InputDecoration(
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.black45),
),
hintText: '',
labelText: 'ที่อยู่',
labelStyle: TextStyle(
color: Colors.black87,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
focusColor: Colors.red,
),
),
),Container(
alignment: Alignment.topLeft,
padding: EdgeInsets.only(
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
top: SizeConfig.getPadding(0),
),
child: TextFormField(
decoration: InputDecoration(
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.black45),
),
hintText: '',
labelText: 'ข้อมูลบัญชีธนาคาร',
labelStyle: TextStyle(
color: Colors.black87,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
focusColor: Colors.red,
),
),
),
],
),
),
);
}
}
import 'package:feelverapp/ui/login/login.dart';
import 'package:feelverapp/ui/menu/menu.dart';
import 'package:feelverapp/ui/nearme/near_me_list.dart';
import 'package:feelverapp/ui/reserve/reserve_list.dart';
import 'package:feelverapp/ui/shop/shop_list.dart';
import 'package:feelverapp/util/SizeConfig.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
SizeConfig(context);
return Scaffold(
body: _setupView(),
bottomNavigationBar: Container(
color: Color.fromRGBO(69, 85, 79, 1),
height: SizeConfig.getWidth(80),
child: Row(
children: <Widget>[
Container(
margin: EdgeInsets.only(left: SizeConfig.getPadding(16), top: 0),
width: SizeConfig.getWidth(60),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
IconButton(
icon: Image.asset(
'assets/images/ic_home.png',
width: SizeConfig.getWidth(24),
height: SizeConfig.getWidth(24),
),
onPressed: () {
print("Pressed");
},
),
Text(
'หน้าแรก',
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
],
),
),
Container(
margin: EdgeInsets.only(left: SizeConfig.getPadding(16), top: 0),
width: SizeConfig.getWidth(100),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
IconButton(
icon: Image.asset(
'assets/images/ic_list.png',
width: SizeConfig.getWidth(24),
height: SizeConfig.getWidth(24),
),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ReserveList()),
);
print("Pressed");
},
),
Text(
'การจองของฉัน',
style: TextStyle(
color: Colors.grey,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
],
),
),
Container(
margin: EdgeInsets.only(left: SizeConfig.getPadding(16), top: 0),
width: SizeConfig.getWidth(80),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
IconButton(
icon: Image.asset(
'assets/images/ic_cart.png',
width: SizeConfig.getWidth(24),
height: SizeConfig.getWidth(24),
),
onPressed: () {
// Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => LoginPage()),
// );
},
),
Text(
'รถเข็นของฉัน',
style: TextStyle(
color: Colors.grey,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
)
],
),
),
Container(
margin: EdgeInsets.only(
left: SizeConfig.getPadding(16), top: 0, right: 0),
width: SizeConfig.getWidth(60),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
IconButton(
icon: Image.asset(
'assets/images/ic_nearme.png',
width: SizeConfig.getWidth(24),
height: SizeConfig.getWidth(24),
),
onPressed: () {
// Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => LoginPage()),
// );
},
),
Text(
'ใกล้ฉัน',
style: TextStyle(
color: Colors.grey,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
)
],
),
),
],
),
),
);
}
_setupView() {
return Column(
children: <Widget>[
Stack(
children: <Widget>[
Container(
child: Image.asset(
'assets/images/banner_top.png',
height: SizeConfig.getHeight(200),
width: MediaQuery.of(context).size.width,
fit: BoxFit.cover,
),
),
Positioned(
top: SizeConfig.getPadding(77),
left: SizeConfig.getPadding(16),
child: Container(
child: GestureDetector(
onTap: () {
showDialog(
context: context,
builder: (BuildContext context) {
return NavDrawer();
});
},
child: Image.asset(
'assets/images/ic_menu.png',
height: SizeConfig.getWidth(24),
width: SizeConfig.getWidth(30),
fit: BoxFit.cover,
),
),
),
),
Positioned(
top: SizeConfig.getPadding(77),
right: SizeConfig.getPadding(60),
child: Container(
child: Image.asset(
'assets/images/ic_noti.png',
height: SizeConfig.getWidth(30),
width: SizeConfig.getWidth(30),
fit: BoxFit.cover,
),
),
),
Positioned(
top: SizeConfig.getPadding(77),
right: SizeConfig.getPadding(20),
child: InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => LoginPage()),
);
},
child: Container(
child: Image.asset(
'assets/images/ic_userimg.png',
height: SizeConfig.getWidth(30),
width: SizeConfig.getWidth(30),
fit: BoxFit.cover,
),
),
),
),
_searchField(),
],
),
Expanded(
child: SingleChildScrollView(
child: _listView(),
),
),
],
);
}
_listView() {
return Column(
children: <Widget>[
_listItem(
Image.asset(
'assets/images/banner_spa.png',
height: SizeConfig.getWidth(130),
width: MediaQuery.of(context).size.width,
fit: BoxFit.fill,
),
'SPA',
'99 View',NearmeList()),
_listItem(
Image.asset(
'assets/images/banner_massage.png',
height: SizeConfig.getWidth(130),
width: MediaQuery.of(context).size.width,
fit: BoxFit.fill,
),
'Massage',
'99 View',NearmeList()),
_listItem(
Image.asset(
'assets/images/banner_beauty.png',
height: SizeConfig.getWidth(130),
width: MediaQuery.of(context).size.width,
fit: BoxFit.fill,
),
'BEAUTY',
'99 View',NearmeList()),
_listItem(
Image.asset(
'assets/images/banner_nearme.png',
height: SizeConfig.getWidth(130),
width: MediaQuery.of(context).size.width,
fit: BoxFit.fill,
),
'NEAR ME',
'99 View',NearmeList()),
_listItem(
Image.asset(
'assets/images/banner_promotion.png',
height: SizeConfig.getWidth(130),
width: MediaQuery.of(context).size.width,
fit: BoxFit.fill,
),
'PROMOTION',
'99 View',NearmeList()),
_listItem(
Image.asset(
'assets/images/banner_mostpopular.png',
height: SizeConfig.getWidth(130),
width: MediaQuery.of(context).size.width,
fit: BoxFit.fill,
),
'MOST POPULAR',
'99 Vidw',NearmeList()),
_listItem(
Image.asset(
'assets/images/banner_recommended.png',
height: SizeConfig.getWidth(130),
width: MediaQuery.of(context).size.width,
fit: BoxFit.fill,
),
'RECOMMEND',
'99 View',NearmeList()),
SizedBox(
height: 30,
),
],
);
}
Widget _listItem(Image img, String title, String view, Widget page) {
return GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => page,
),
);
},
child: Container(
margin: EdgeInsets.all(
SizeConfig.getPadding(24),
),
width: MediaQuery.of(context).size.width,
child: Stack(
children: <Widget>[
Container(
width: MediaQuery.of(context).size.width,
child: img,
),
Container(
alignment: Alignment.center,
padding: EdgeInsets.only(
top: SizeConfig.getPadding(40),
),
child: Text(
title,
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(30),
fontWeight: FontWeight.w600,
),
),
),
Container(
alignment: Alignment.center,
padding: EdgeInsets.only(
top: SizeConfig.getPadding(75),
),
child: Text(
view,
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(20),
fontWeight: FontWeight.w500,
),
),
),
],
),
),
);
}
_searchField() {
return Container(
margin: EdgeInsets.only(
top: 135,
left: 24,
right: 24,
),
height: 55,
child: TextField(
decoration: new InputDecoration(
border: new OutlineInputBorder(
borderRadius: const BorderRadius.all(
const Radius.circular(30.0),
),
),
prefixIcon: IconButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ShopList()),
);
},
icon: Icon(Icons.search, color: Colors.grey)),
filled: true,
hintText: 'ค้นหาแบบละเอียด',
fillColor: Colors.white),
),
);
}
}
import 'package:feelverapp/ui/home/home.dart';
import 'package:feelverapp/ui/register/register_email.dart';
import 'package:feelverapp/util/SizeConfig.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class LoginPage extends StatefulWidget {
@override
_LoginPageState createState() => _LoginPageState();
}
class _LoginPageState extends State<LoginPage> with TickerProviderStateMixin {
TabController _tabController;
@override
void initState() {
// TODO: implement initState
super.initState();
_tabController = TabController(length: 2, vsync: this);
// registerBloc = RegisterBloc(this);
// loginBloc = LoginBloc(this);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: _setupView(),
);
}
_setupView() {
return SingleChildScrollView(
child: Column(
children: <Widget>[
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(60),
right: SizeConfig.getPadding(40),
top: SizeConfig.getPadding(60)),
child: Image.asset(
'assets/images/logo.png',
width: SizeConfig.getWidth(MediaQuery.of(context).size.width),
fit: BoxFit.fitWidth,
),
),
SizedBox(
height: SizeConfig.getWidth(24),
),
TabBar(
indicatorColor: Color.fromRGBO(106, 179, 170, 1),
unselectedLabelColor: Colors.grey[400],
labelColor: Colors.black,
controller: _tabController,
// onTap: (v) => registerBloc.changeMethodRegister(v),
tabs: <Widget>[
Tab(
child: Text(
'อีเมล์',
style: TextStyle(
fontSize: SizeConfig.getFontSize(16),
),
),
),
Tab(
child: Text(
'เบอร์โทร',
style: TextStyle(fontSize: SizeConfig.getFontSize(16)),
),
),
],
),
SizedBox(height: SizeConfig.getWidth(30)),
_formLogin(),
],
),
);
}
Widget _formLogin() {
return Container(
child: Form(
child: Column(
children: <Widget>[
Container(
alignment: Alignment.topLeft,
padding: EdgeInsets.only(left: SizeConfig.getPadding(30)),
child: Text(
'อีเมล์',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(20),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Padding(
padding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(8.0),
horizontal: SizeConfig.getPadding(24),
),
child: Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(
SizeConfig.getPadding(50.0),
),
),
child: TextFormField(
// controller: loginBloc.emailCtrl,
// validator: loginBloc.validateField,
decoration: InputDecoration(
contentPadding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(20),
horizontal: SizeConfig.getPadding(16),
),
// hintText:
// allTranslations.text(key2: 'email', key: 'login') +
// ' / ' +
// allTranslations.text(
// key2: 'tel_number', key: 'register'),
border: OutlineInputBorder(borderSide: BorderSide.none),
),
),
),
),
Container(
alignment: Alignment.topLeft,
padding: EdgeInsets.only(left: SizeConfig.getPadding(30)),
child: Text(
'รหัสผ่าน',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(20),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Padding(
padding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(8.0),
horizontal: SizeConfig.getPadding(24)),
child: Card(
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(SizeConfig.getPadding(50.0)),
),
child: TextFormField(
// controller: loginBloc.passCtrl,
// validator: loginBloc.validateField,
decoration: InputDecoration(
contentPadding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(20),
horizontal: SizeConfig.getPadding(16),
),
// hintText:
// allTranslations.text(key2: 'password', key: 'login'),
border: OutlineInputBorder(borderSide: BorderSide.none),
),
obscureText: true,
),
),
),
SizedBox(
height: SizeConfig.getWidth(24),
),
Container(
alignment: Alignment.topRight,
padding: EdgeInsets.only(right: SizeConfig.getPadding(30)),
child: Text(
'ลืมรหัสผ่าน',
style: TextStyle(
color: Color.fromRGBO(106, 179, 170, 1),
fontSize: SizeConfig.getFontSize(13),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w600),
),
),
_submitLoginButton(),
_policyText(),
SizedBox(
height: SizeConfig.getWidth(20),
),
_facebookLoginButton(),
],
),
),
);
}
_submitLoginButton() {
return Padding(
padding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(20.0),
horizontal: SizeConfig.getPadding(32)),
child: Container(
height: SizeConfig.getWidth(55),
child: CupertinoButton(
color: Color.fromRGBO(106, 179, 170, 1),
padding: EdgeInsets.all(0),
borderRadius: BorderRadius.all(Radius.circular(50)),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => HomePage()),
);
// if (loginBloc.formKey.currentState.validate()) {
// loginBloc.getLogin();
// }
},
child: Center(
child: Text(
'เข้าสู่ระบบ',
style: TextStyle(color: Colors.white),
),
),
),
),
);
}
Widget _facebookLoginButton() {
return Padding(
padding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(16.0),
horizontal: SizeConfig.getPadding(32)),
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(SizeConfig.getPadding(50)),
color: Color(0xff3b5998),
),
height: SizeConfig.getWidth(55),
child: CupertinoButton(
color: Color(0xff3b5998),
padding: EdgeInsets.all(0),
// onPressed: loginBloc.getFacebookLogin,
child: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Padding(
padding: EdgeInsets.symmetric(
horizontal: SizeConfig.getPadding(8.0)),
child: ImageIcon(
AssetImage('assets/images/facebook-icon.png'),
size: 20,
),
),
Text(
'Login with Facebook',
style: TextStyle(fontSize: SizeConfig.getFontSize(12)),
textAlign: TextAlign.center,
),
],
),
),
),
),
);
}
Widget _policyText() {
return Column(
children: <Widget>[
Stack(
children: <Widget>[
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(30),
right: SizeConfig.getPadding(30),
top: SizeConfig.getPadding(30)),
child: Center(
child: Text(
'คุณยอมรับ ข้อกำหนดการใช้งาน และ นโยบายความเป็นส่วนตัว ของอโกด้าเมื่อดำเนินการต่อ',
style: TextStyle(fontSize: SizeConfig.getFontSize(12)),
textAlign: TextAlign.center,
),
),
),
Container(
margin: EdgeInsets.only(
right: SizeConfig.getPadding(34),
top: SizeConfig.getPadding(47)),
alignment: Alignment.centerRight,
child: GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => RegisterPage()),
);
},
child: Text(
'สมัครสมาชิก',
style: TextStyle(
color: Colors.orange,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w600,
decoration: TextDecoration.underline,
),
textAlign: TextAlign.right,
),
),
)
],
),
Container(
padding: EdgeInsets.all(SizeConfig.getPadding(24)),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Expanded(
flex: 2,
child: Container(
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(width: 1, color: Color(0xFFE6E6E6)),
),
),
),
),
Expanded(
flex: 1,
child: Text(
'หรือ',
style: TextStyle(fontSize: SizeConfig.getFontSize(12)),
textAlign: TextAlign.center,
),
),
Expanded(
flex: 2,
child: Container(
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(width: 1, color: Color(0xFFE6E6E6)),
),
),
),
),
],
),
),
Stack(
children: <Widget>[
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(60),
right: SizeConfig.getPadding(60)),
child: Center(
child: Text(
'สะดวกสุดๆ แค่ใช้ Facebook เข้าสู่ระบบ ก็ไม่ต้องจำรหัสผ่านอีกต่อไป คลิกปุ่มด้านล่างได้เลย',
style: TextStyle(fontSize: SizeConfig.getFontSize(12)),
textAlign: TextAlign.center,
),
),
),
],
),
],
);
}
}
import 'package:feelverapp/ui/edit_profile/edit_profile.dart';
import 'package:feelverapp/ui/login/login.dart';
import 'package:feelverapp/util/SizeConfig.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class NavDrawer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.only(right: SizeConfig.getPadding(80)),
child: Drawer(
elevation: 10,
child: SingleChildScrollView(
child: Column(
children: <Widget>[
Stack(
children: <Widget>[
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(10),
top: SizeConfig.getPadding(24)),
child: Image.asset(
'assets/images/ic_userimg.png',
width: SizeConfig.getWidth(100),
height: SizeConfig.getWidth(100),
),
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(90),
top: SizeConfig.getPadding(100)),
child: Image.asset(
'assets/images/ic_camera.png',
width: SizeConfig.getWidth(30),
height: SizeConfig.getWidth(30),
),
),
],
),
Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(20),
),
alignment: Alignment.center,
child: Text(
'John wick',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(24),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w600),
),
),
Container(
margin: EdgeInsets.only(
left: SizeConfig.getPadding(50),
right: SizeConfig.getPadding(50),
top: SizeConfig.getPadding(20)),
height: SizeConfig.getWidth(1),
color: Colors.grey,
),
GestureDetector(
onTap: () {
Navigator.push(
context,
CupertinoPageRoute(builder: (context) => EditProfile(),),
);
},
child: Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(24),
left: SizeConfig.getPadding(30)),
alignment: Alignment.topLeft,
child: Text(
'Profile',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w600),
),
),
),
GestureDetector(
onTap: () {},
child: Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(12),
left: SizeConfig.getPadding(30)),
alignment: Alignment.topLeft,
child: Text(
'My favorite',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w600),
),
),
),
GestureDetector(
onTap: () {},
child: Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(12),
left: SizeConfig.getPadding(30)),
alignment: Alignment.topLeft,
child: Text(
'My order Status',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w600),
),
),
),
GestureDetector(
onTap: () {},
child: Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(12),
left: SizeConfig.getPadding(30)),
alignment: Alignment.topLeft,
child: Text(
'รายการสั่งซื้อที่สำเร็จ',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w600),
),
),
),
GestureDetector(
onTap: () {},
child: Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(12),
left: SizeConfig.getPadding(30)),
alignment: Alignment.topLeft,
child: Text(
'จองแล้ว',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w600),
),
),
),
GestureDetector(
onTap: () {},
child: Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(12),
left: SizeConfig.getPadding(30)),
alignment: Alignment.topLeft,
child: Text(
'ยังไม่ได้จอง',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w600),
),
),
),
GestureDetector(
onTap: () {},
child: Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(12),
left: SizeConfig.getPadding(30)),
alignment: Alignment.topLeft,
child: Text(
'รายการสั่งซื้อไม่สำเร็จ',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w600),
),
),
),
Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(30),
left: SizeConfig.getPadding(30)),
alignment: Alignment.topLeft,
child: Text(
'language',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w600),
),
),
Row(
children: <Widget>[
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(30),
top: SizeConfig.getPadding(16)),
child: Image.asset(
'assets/images/ic_th.png',
width: SizeConfig.getWidth(50),
height: SizeConfig.getWidth(50),
),
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(30),
top: SizeConfig.getPadding(16)),
child: Image.asset(
'assets/images/ic_en.png',
width: SizeConfig.getWidth(50),
height: SizeConfig.getWidth(50),
),
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(30),
top: SizeConfig.getPadding(16)),
child: Image.asset(
'assets/images/ic_ch.png',
width: SizeConfig.getWidth(50),
height: SizeConfig.getWidth(50),
),
),
],
),
Row(
children: <Widget>[
Container(
padding: EdgeInsets.only(
top: 0, left: SizeConfig.getPadding(42)),
alignment: Alignment.topLeft,
child: Text(
'TH',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w600),
),
),
Container(
padding: EdgeInsets.only(
top: 0, left: SizeConfig.getPadding(60)),
alignment: Alignment.topLeft,
child: Text(
'EN',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w600),
),
),
Container(
padding: EdgeInsets.only(
top: 0, left: SizeConfig.getPadding(60)),
alignment: Alignment.topLeft,
child: Text(
'CH',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w600),
),
),
],
),
Row(
children: <Widget>[
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(30),
top: SizeConfig.getPadding(30)),
child: Image.asset(
'assets/images/ic_logout.png',
width: SizeConfig.getWidth(20),
height: SizeConfig.getWidth(20),
),
),
GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => LoginPage()),
);
},
child: Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(26),
left: SizeConfig.getPadding(18)),
alignment: Alignment.topLeft,
child: Text(
'ออกจากระบบ',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w600),
),
),
)
],
),
SizedBox(
height: SizeConfig.getWidth(40),
),
],
),
),
),
);
}
}
import 'package:feelverapp/util/SizeConfig.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class NearmeDetail extends StatefulWidget {
@override
_NearmeDetailState createState() => _NearmeDetailState();
}
class _NearmeDetailState extends State<NearmeDetail> {
@override
Widget build(BuildContext context) {
return Scaffold(
// appBar: AppBar(
// backgroundColor: Colors.transparent,
// elevation: 0,
// centerTitle: true,
// title: Text(
// 'k',
// style: TextStyle(
// color: Colors.white,
// fontSize: SizeConfig.getFontSize(20),
// fontFamily: "SF_Pro_Text",
// fontWeight: FontWeight.w500),
// ),
// ),
body: _setupView(),
);
}
_setupView() {
return SingleChildScrollView(
child: Column(
children: <Widget>[
Stack(
children: <Widget>[
Container(
height: SizeConfig.getWidth(460),
child: Image.network(
'https://wallup.net/wp-content/uploads/2017/03/27/380781-portrait_display-abstract-digital_art-geometry-triangle-lines-748x1330.jpg',
width: double.maxFinite,
fit: BoxFit.fitWidth,
),
),
Positioned(
top: SizeConfig.getPadding(44),
left: SizeConfig.getPadding(16),
child: InkWell(
onTap: () {
Navigator.pop(context);
},
child: Image.asset(
'assets/images/ic_back.png',
width: 14,
),
),
),
Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(440),
right: SizeConfig.getPadding(0),
left: SizeConfig.getPadding(
MediaQuery.of(context).size.width / 1.6),
),
child: Stack(
children: <Widget>[
Image.asset(
'assets/images/btn_nav.png',
width: SizeConfig.getWidth(120),
),
Container(
child: Text(
'นำทาง',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
padding: EdgeInsets.only(
top: SizeConfig.getPadding(7),
left: SizeConfig.getPadding(26),
bottom: SizeConfig.getPadding(4)),
),
],
),
),
],
),
Column(
children: <Widget>[
Container(
alignment: Alignment.topLeft,
child: Text(
'4 ธ.ค. 2561 18:55 น.',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.grey,
fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
padding: EdgeInsets.only(
top: SizeConfig.getPadding(16),
left: SizeConfig.getPadding(16),
bottom: SizeConfig.getPadding(0)),
),
Container(
alignment: Alignment.topLeft,
child: Text(
'Sea Life Bangkok Ocean World',
style: TextStyle(
color: Colors.black87,
fontSize: SizeConfig.getFontSize(40),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w600),
),
padding: EdgeInsets.only(
top: SizeConfig.getPadding(10),
left: SizeConfig.getPadding(16),
right: SizeConfig.getPadding(16),
bottom: SizeConfig.getPadding(4)),
),
Row(
children: <Widget>[
SizedBox(
width: SizeConfig.getWidth(14),
),
ImageIcon(
AssetImage('assets/images/ic_star_active.png'),
color: Color.fromRGBO(255, 207, 7, 1),
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(2),
),
ImageIcon(
AssetImage('assets/images/ic_star_active.png'),
color: Color.fromRGBO(255, 207, 7, 1),
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(2),
),
ImageIcon(
AssetImage('assets/images/ic_star_active.png'),
color: Color.fromRGBO(255, 207, 7, 1),
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(2),
),
ImageIcon(
AssetImage('assets/images/ic_star_active.png'),
color: Color.fromRGBO(255, 207, 7, 1),
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(2),
),
ImageIcon(
AssetImage('assets/images/ic_star_unactive.png'),
color: Colors.grey,
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(40),height: SizeConfig.getWidth(30),
),
ImageIcon(
AssetImage('assets/images/ic_fav_active.png'),
color: Colors.pink,
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(8),
),
Container(alignment: Alignment.topLeft,
child: Text(
'70',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black54,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
padding: EdgeInsets.only(
top: SizeConfig.getPadding(5),
left: SizeConfig.getPadding(0),
bottom: SizeConfig.getPadding(4)),
),SizedBox(
width: SizeConfig.getWidth(20),
),ImageIcon(
AssetImage('assets/images/ic_comment.png'),
color: Colors.grey,
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(8),
),
Container(alignment: Alignment.topLeft,
child: Text(
'70',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black54,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
padding: EdgeInsets.only(
top: SizeConfig.getPadding(5),
left: SizeConfig.getPadding(0),
bottom: SizeConfig.getPadding(4)),
),SizedBox(
width: SizeConfig.getWidth(20),
),ImageIcon(
AssetImage('assets/images/facebook-icon.png'),
color: Colors.grey,
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(20),
),ImageIcon(
AssetImage('assets/images/ic_twitter.png'),
color: Colors.grey,
size: SizeConfig.getFontSize(16),
),
],
),
SizedBox(
height: SizeConfig.getWidth(8),
),
Container(
alignment: Alignment.topLeft,
child: Text(
'พิพิธภัณฑ์สัตว์น้ำ',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.grey,
fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
padding: EdgeInsets.only(
top: SizeConfig.getPadding(0),
left: SizeConfig.getPadding(16),
bottom: SizeConfig.getPadding(10)),
),
Row(
children: <Widget>[
SizedBox(
width: SizeConfig.getWidth(14),
),
ImageIcon(
AssetImage('assets/images/pin_drop.png'),
color: Colors.black54,
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(4),
),
Text(
'54 km',
style: TextStyle(
fontWeight: FontWeight.w500,
fontSize: SizeConfig.getFontSize(14),
color: Colors.black54,
),
),
],
),
Container(
alignment: Alignment.topLeft,
child: Text(
'ที่อยู่: 991 ถนน พระรามที่ ๑ แขวง ปทุมวัน เขต ปทุมวัน กรุงเทพมหานคร 10330',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.grey,
fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
// alignment: Alignment.topLeft,
padding: EdgeInsets.only(
top: SizeConfig.getPadding(8),
left: SizeConfig.getPadding(16),
bottom: SizeConfig.getPadding(10)),
),
Container(
alignment: Alignment.topLeft,
child: Text(
'พิพิธภัณฑ์สัตว์น้ำ ซี ไลฟ์ โอเชียน เวิลด์ กรุงเทพ หรือ บางกอก ซี ไลฟ์ โอเชียนเวิลด์ (อังกฤษ: Sea Life Bangkok Ocean World; ชื่อเดิม: สยามโอเชียนเวิลด์) เป็นพิพิธภัณฑ์สัตว์น้ำใต้ดิน พื้นที่รวม 10,000 ตาราง เมตร ตั้งอยู่ที่ชั้น B1 และ B2 ศูนย์การค้าสยามพารากอน บริหารงานโดย เมอร์ลิน เอ็นเตอร์เทนเมนท์ กรุ๊ป เปิดให้เข้าชมครั้งแรกเมื่อวันที่ 9 ธันวาคม พ.ศ. 2548 พิพิธภัณฑ์สัตว์น้ำ ซี ไลฟ์ โอเชียน เวิลด์ กรุงเทพ หรือ บางกอก ซี ไลฟ์ โอเชียนเวิลด์ (อังกฤษ: Sea Life Bangkok Ocean World; ชื่อเดิม: สยามโอเชียนเวิลด์) เป็นพิพิธภัณฑ์สัตว์น้ำใต้ดิน พื้นที่รวม 10,000 ตารางเมตร ตั้งอยู่ที่ชั้น B1 และ B2 ศูนย์การค้าสยามพารากอน บริหารงานโดย เมอร์ลิน เอ็นเตอร์เทนเมนท์ กรุ๊ป เปิดให้เข้าชมครั้งแรกเมื่อวันที่ 9 ธันวาคม พ.ศ. 2548',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black87,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
// alignment: Alignment.topLeft,
padding: EdgeInsets.only(
top: SizeConfig.getPadding(16),
left: SizeConfig.getPadding(16),
right: SizeConfig.getPadding(16),
bottom: SizeConfig.getPadding(30)),
),
],
),
],
),
);
}
}
import 'package:feelverapp/ui/nearme/near_me_detail.dart';
import 'package:feelverapp/util/SizeConfig.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class NearmeList extends StatefulWidget {
@override
_NearmeListState createState() => _NearmeListState();
}
class _NearmeListState extends State<NearmeList> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Color.fromRGBO(106, 179, 170, 1),
elevation: 0,
centerTitle: true,
title: Text(
'สถานที่ใกล้เคียงทั้งหมด',
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(20),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
body: _setupView(),
);
}
_setupView() {
return Stack(
children: <Widget>[
Container(
height: SizeConfig.getWidth(110),
color: Color.fromRGBO(106, 179, 170, 1),
child: Container(
padding: EdgeInsets.only(left: SizeConfig.getPadding(24)),
alignment: Alignment.topLeft,
child: Wrap(
alignment: WrapAlignment.start,
spacing: 10.0, // gap between adjacent chips
runSpacing: 5.0, // gap between lines
children: <Widget>[
FilterChip(
label: Text(
"ทั้งหมด (10)",
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(15),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
backgroundColor: Color.fromRGBO(106, 179, 170, 1),
shape: StadiumBorder(
side: BorderSide(color: Colors.white),
),
onSelected: (bool value) {
print("selected");
setState(() {});
},
),
FilterChip(
label: Text(
"ที่เที่ยว (5)",
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(15),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
backgroundColor: Color.fromRGBO(106, 179, 170, 1),
shape: StadiumBorder(
side: BorderSide(color: Colors.white),
),
onSelected: (bool value) {
print("selected");
},
),
FilterChip(
label: Text(
"ที่กิน (3)",
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(15),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
backgroundColor: Color.fromRGBO(106, 179, 170, 1),
shape: StadiumBorder(
side: BorderSide(color: Colors.white),
),
onSelected: (bool value) {
print("selected");
},
),
FilterChip(
label: Text(
"ที่พัก (1)",
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(15),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
backgroundColor: Color.fromRGBO(106, 179, 170, 1),
shape: StadiumBorder(
side: BorderSide(color: Colors.white),
),
onSelected: (bool value) {
print("selected");
},
),
FilterChip(
label: Text(
"กิจกรรม (1)",
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(15),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
backgroundColor: Color.fromRGBO(106, 179, 170, 1),
shape: StadiumBorder(
side: BorderSide(color: Colors.white),
),
onSelected: (bool value) {
print("selected");
},
),
],
),
),
),
_getlist(),
],
);
}
_getlist() {
final List<String> entries = <String>['A', 'B', 'C'];
return Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(140),
left: SizeConfig.getPadding(16),
right: SizeConfig.getPadding(16),
bottom: SizeConfig.getPadding(10),
),
child: ListView.builder(
itemCount: entries.length,
itemBuilder: (context, i) {
return _nearByItem(entries[i]);
},
),
);
}
Widget _nearByItem(String title) {
return InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => NearmeDetail(),
),
);
}, child: Card(
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Image.network(
'https://scontent.fbkk2-8.fna.fbcdn.net/v/t1.0-9/66224920_2384272051596091_1094623379467534336_n.jpg?_nc_cat=102&_nc_sid=85a577&_nc_eui2=AeElfU4QES6XQW0XzlV5G9zQ-F-e_QdADw_4X579B0APD-UJsAV-PuXX-iMA6hWVLgUUmCNm5HTgTMw_q4YARQm8&_nc_ohc=do7yQl7hf74AX8-8Yk-&_nc_ht=scontent.fbkk2-8.fna&oh=140482c64ecf1893bf59498dfff5f592&oe=5EFAC9CF',
width: SizeConfig.getWidth(110),
height: SizeConfig.getHeight(150),
fit: BoxFit.fitWidth,
),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
child: Text(
'ซีไลฟ์ แบงคอก โอเชียน เวิลด์',
style: TextStyle(
color: Colors.black87,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
padding: EdgeInsets.only(
top: SizeConfig.getPadding(16),
left: SizeConfig.getPadding(16),
right: SizeConfig.getPadding(16),
bottom: SizeConfig.getPadding(4)),
),
Container(
child: Text(
'พิพิธภัณฑ์สัตว์น้ำ',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black54,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
// alignment: Alignment.topLeft,
padding: EdgeInsets.only(
top: SizeConfig.getPadding(0),
left: SizeConfig.getPadding(16),
bottom: SizeConfig.getPadding(4)),
),
Row(
children: <Widget>[
SizedBox(
width: SizeConfig.getWidth(16),
),
ImageIcon(
AssetImage('assets/images/pin_drop.png'),
color: Colors.black54,
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(4),
),
Text(
'54 km',
style: TextStyle(
fontWeight: FontWeight.w500,
fontSize: SizeConfig.getFontSize(12),
color: Colors.black54,
),
),
],
),
Container(
child: Text(
'พิพิธภัณฑ์สัตว์น้ำ ซี ไลฟ์ โอเชียน เวิลด์ กรุงเทพ หรือ บางกอก ซี ไลฟ์ โอเชียนเวิลด์...',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black54,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
// alignment: Alignment.topLeft,
padding: EdgeInsets.only(
top: SizeConfig.getPadding(8),
left: SizeConfig.getPadding(16),
bottom: SizeConfig.getPadding(0)),
),
Row(
children: <Widget>[
SizedBox(
width: SizeConfig.getWidth(4),
),
Container(
alignment: Alignment.topLeft,
child: Text(
'4.4',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black54,
fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
padding: EdgeInsets.only(
top: SizeConfig.getPadding(5),
left: SizeConfig.getPadding(10),
bottom: SizeConfig.getPadding(5)),
),
SizedBox(
width: SizeConfig.getWidth(14),
),
ImageIcon(
AssetImage('assets/images/ic_star_active.png'),
color: Color.fromRGBO(255, 207, 7, 1),
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(2),
),
ImageIcon(
AssetImage('assets/images/ic_star_active.png'),
color: Color.fromRGBO(255, 207, 7, 1),
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(2),
),
ImageIcon(
AssetImage('assets/images/ic_star_active.png'),
color: Color.fromRGBO(255, 207, 7, 1),
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(2),
),
ImageIcon(
AssetImage('assets/images/ic_star_active.png'),
color: Color.fromRGBO(255, 207, 7, 1),
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(2),
),
ImageIcon(
AssetImage('assets/images/ic_star_unactive.png'),
color: Colors.grey,
size: SizeConfig.getFontSize(16),
),
SizedBox(
width: SizeConfig.getWidth(40),
height: SizeConfig.getWidth(30),
),
],
), SizedBox(
height: SizeConfig.getWidth(10),
),
],
),
),
],
),
),
);
}
}
import 'package:feelverapp/ui/home/home.dart';
import 'package:feelverapp/ui/login/login.dart';
import 'package:feelverapp/util/SizeConfig.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class RegisterPage extends StatefulWidget {
@override
_RegisterPageState createState() => _RegisterPageState();
}
class _RegisterPageState extends State<RegisterPage> with TickerProviderStateMixin {
@override
TabController _tabController;
@override
void initState() {
// TODO: implement initState
super.initState();
_tabController = TabController(length: 2, vsync: this);
// registerBloc = RegisterBloc(this);
// loginBloc = LoginBloc(this);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: _setupView(),
);
}
_setupView() {
return SingleChildScrollView(
child: Column(
children: <Widget>[
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(60),
right: SizeConfig.getPadding(40),
top: SizeConfig.getPadding(60)),
child: Image.asset(
'assets/images/logo.png',
width: SizeConfig.getWidth(MediaQuery.of(context).size.width),
fit: BoxFit.fitWidth,
),
),
SizedBox(
height: SizeConfig.getWidth(24),
),
TabBar(
indicatorColor: Color.fromRGBO(106, 179, 170, 1),
unselectedLabelColor: Colors.grey[400],
labelColor: Colors.black,
controller: _tabController,
// onTap: (v) => registerBloc.changeMethodRegister(v),
tabs: <Widget>[
Tab(
child: Text(
'อีเมล์',
style: TextStyle(
fontSize: SizeConfig.getFontSize(16),
),
),
),
Tab(
child: Text(
'เบอร์โทร',
style: TextStyle(fontSize: SizeConfig.getFontSize(16)),
),
),
],
),
SizedBox(height: SizeConfig.getWidth(30)),
_formLogin(),
],
),
);
}
Widget _formLogin() {
return Container(
child: Form(
child: Column(
children: <Widget>[
Container(
alignment: Alignment.topLeft,
padding: EdgeInsets.only(left: SizeConfig.getPadding(30)),
child: Text(
'อีเมล์',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(20),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Padding(
padding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(8.0),
horizontal: SizeConfig.getPadding(24),
),
child: Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(
SizeConfig.getPadding(50.0),
),
),
child: TextFormField(
// controller: loginBloc.emailCtrl,
// validator: loginBloc.validateField,
decoration: InputDecoration(
contentPadding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(20),
horizontal: SizeConfig.getPadding(16),
),
// hintText:
// allTranslations.text(key2: 'email', key: 'login') +
// ' / ' +
// allTranslations.text(
// key2: 'tel_number', key: 'register'),
border: OutlineInputBorder(borderSide: BorderSide.none),
),
),
),
),
Container(
alignment: Alignment.topLeft,
padding: EdgeInsets.only(left: SizeConfig.getPadding(30)),
child: Text(
'รหัสผ่าน',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(20),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Padding(
padding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(8.0),
horizontal: SizeConfig.getPadding(24)),
child: Card(
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(SizeConfig.getPadding(50.0)),
),
child: TextFormField(
// controller: loginBloc.passCtrl,
// validator: loginBloc.validateField,
decoration: InputDecoration(
contentPadding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(20),
horizontal: SizeConfig.getPadding(16),
),
// hintText:
// allTranslations.text(key2: 'password', key: 'login'),
border: OutlineInputBorder(borderSide: BorderSide.none),
),
obscureText: true,
),
),
),
Container(
alignment: Alignment.topLeft,
padding: EdgeInsets.only(left: SizeConfig.getPadding(30)),
child: Text(
'ชื่อ',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(20),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Padding(
padding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(8.0),
horizontal: SizeConfig.getPadding(24),
),
child: Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(
SizeConfig.getPadding(50.0),
),
),
child: TextFormField(
// controller: loginBloc.emailCtrl,
// validator: loginBloc.validateField,
decoration: InputDecoration(
contentPadding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(20),
horizontal: SizeConfig.getPadding(16),
),
// hintText:
// allTranslations.text(key2: 'email', key: 'login') +
// ' / ' +
// allTranslations.text(
// key2: 'tel_number', key: 'register'),
border: OutlineInputBorder(borderSide: BorderSide.none),
),
),
),
), Container(
alignment: Alignment.topLeft,
padding: EdgeInsets.only(left: SizeConfig.getPadding(30)),
child: Text(
'นามสกุล',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(20),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Padding(
padding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(8.0),
horizontal: SizeConfig.getPadding(24),
),
child: Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(
SizeConfig.getPadding(50.0),
),
),
child: TextFormField(
// controller: loginBloc.emailCtrl,
// validator: loginBloc.validateField,
decoration: InputDecoration(
contentPadding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(20),
horizontal: SizeConfig.getPadding(16),
),
// hintText:
// allTranslations.text(key2: 'email', key: 'login') +
// ' / ' +
// allTranslations.text(
// key2: 'tel_number', key: 'register'),
border: OutlineInputBorder(borderSide: BorderSide.none),
),
),
),
),
SizedBox(
height: SizeConfig.getWidth(24),
),
_submitLoginButton(),
_policyText(),
SizedBox(
height: SizeConfig.getWidth(20),
),
_facebookLoginButton(),
],
),
),
);
}
_submitLoginButton() {
return Padding(
padding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(10.0),
horizontal: SizeConfig.getPadding(32)),
child: Container(
height: SizeConfig.getWidth(55),
child: CupertinoButton(
color: Color.fromRGBO(106, 179, 170, 1),
padding: EdgeInsets.all(0),
borderRadius: BorderRadius.all(Radius.circular(50)),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => LoginPage()),
);
// if (loginBloc.formKey.currentState.validate()) {
// loginBloc.getLogin();
// }
},
child: Center(
child: Text(
'สมัครสมาชิก',
style: TextStyle(color: Colors.white),
),
),
),
),
);
}
Widget _facebookLoginButton() {
return Padding(
padding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(16.0),
horizontal: SizeConfig.getPadding(32)),
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(SizeConfig.getPadding(50)),
color: Color(0xff3b5998),
),
height: SizeConfig.getWidth(55),
child: CupertinoButton(
color: Color(0xff3b5998),
padding: EdgeInsets.all(0),
// onPressed: loginBloc.getFacebookLogin,
child: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Padding(
padding: EdgeInsets.symmetric(
horizontal: SizeConfig.getPadding(8.0)),
child: ImageIcon(
AssetImage('assets/images/facebook-icon.png'),
size: 20,
),
),
Text(
'Login with Facebook',
style: TextStyle(fontSize: SizeConfig.getFontSize(12)),
textAlign: TextAlign.center,
),
],
),
),
),
),
);
}
Widget _policyText() {
return Column(
children: <Widget>[
Stack(
children: <Widget>[
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(30),
right: SizeConfig.getPadding(30),
top: SizeConfig.getPadding(30)),
child: Center(
child: Text(
'คุณยอมรับ ข้อกำหนดการใช้งาน และ นโยบายความเป็นส่วนตัว ของอโกด้าเมื่อดำเนินการต่อ',
style: TextStyle(fontSize: SizeConfig.getFontSize(12)),
textAlign: TextAlign.center,
),
),
),
Container(
margin: EdgeInsets.only(
right: SizeConfig.getPadding(34),
top: SizeConfig.getPadding(47)),
alignment: Alignment.centerRight,
child: GestureDetector(
onTap: () {
// Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => RegisterPage()),
// );
},
child: Text(
'สมัครสมาชิก',
style: TextStyle(
color: Colors.orange,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w600,
decoration: TextDecoration.underline,
),
textAlign: TextAlign.right,
),
),
)
],
),
Container(
padding: EdgeInsets.all(SizeConfig.getPadding(24)),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Expanded(
flex: 2,
child: Container(
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(width: 1, color: Color(0xFFE6E6E6)),
),
),
),
),
Expanded(
flex: 1,
child: Text(
'หรือ',
style: TextStyle(fontSize: SizeConfig.getFontSize(12)),
textAlign: TextAlign.center,
),
),
Expanded(
flex: 2,
child: Container(
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(width: 1, color: Color(0xFFE6E6E6)),
),
),
),
),
],
),
),
Stack(
children: <Widget>[
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(60),
right: SizeConfig.getPadding(60)),
child: Center(
child: Text(
'สะดวกสุดๆ แค่ใช้ Facebook เข้าสู่ระบบ ก็ไม่ต้องจำรหัสผ่านอีกต่อไป คลิกปุ่มด้านล่างได้เลย',
style: TextStyle(fontSize: SizeConfig.getFontSize(12)),
textAlign: TextAlign.center,
),
),
),
],
),
],
);
}
}
import 'package:feelverapp/ui/booking/bookingflow.dart';
import 'package:feelverapp/util/SizeConfig.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class ReserveDateTime extends StatefulWidget {
@override
_ReserveDateTimeState createState() => _ReserveDateTimeState();
}
class _ReserveDateTimeState extends State<ReserveDateTime> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: _setupView(),
bottomNavigationBar: Container(
height: SizeConfig.getHeight(100),
color: Color.fromRGBO(106, 179, 170, 1),
child: Stack(
children: <Widget>[
Positioned(
top: SizeConfig.getPadding(24),
left: SizeConfig.getPadding(20),
child: Container(
// color: Colors.red,
width: MediaQuery.of(context).size.width / 2.5,
height: SizeConfig.getHeight(45),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(24),
color: Color.fromRGBO(54, 148, 163, 1),
),
child: Container(
padding: EdgeInsets.only(top: SizeConfig.getPadding(6)),
child: Text(
'หยิบใส่รถเข็น',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
),
),
Positioned(
top: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(20),
child: InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => BookingFlow(),
),
);
},
child: Container(
// color: Colors.red,
width: MediaQuery.of(context).size.width / 2.5,
height: SizeConfig.getHeight(45),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(24),
color: Color.fromRGBO(232, 166, 180, 1),
),
child: Container(
padding: EdgeInsets.only(top: SizeConfig.getPadding(6)),
child: Text(
'จองเลย',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
),
),
),
],
),
),
);
}
_setupView() {
return SingleChildScrollView(
child: Column(
children: <Widget>[
Stack(
children: <Widget>[
Image.network(
'https://www.cancurreu.com/wp-content/uploads/can_curreu_hotel_ibiza_spa_tratamientos.jpg',
width: MediaQuery.of(context).size.width,
fit: BoxFit.cover,
),
Positioned(
top: SizeConfig.getPadding(44),
left: SizeConfig.getPadding(16),
child: InkWell(
onTap: () {
Navigator.pop(context);
},
child: Image.asset(
'assets/images/ic_back.png',
width: SizeConfig.getWidth(20),
height: SizeConfig.getWidth(20),
),
),
)
],
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(24),
top: SizeConfig.getPadding(16)),
alignment: Alignment.topLeft,
child: Text(
'คุณกำลังจอง',
textAlign: TextAlign.left,
style: TextStyle(
color: Color.fromRGBO(106, 179, 170, 1),
fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(24),
top: SizeConfig.getPadding(3),
bottom: SizeConfig.getPadding(8)),
alignment: Alignment.topLeft,
child: Text(
'Thai Body',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(26),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
),
Row(
children: <Widget>[
SizedBox(
width: SizeConfig.getWidth(20),
),
Image.asset(
'assets/images/clock.png',
width: SizeConfig.getWidth(20),
height: SizeConfig.getWidth(20),
),
SizedBox(
width: SizeConfig.getWidth(10),
),
Text(
'90 นาที',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black87,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
],
),
SizedBox(
height: 8,
),
Row(
children: <Widget>[
SizedBox(
width: SizeConfig.getWidth(22),
),
Text(
'฿599.00',
textAlign: TextAlign.left,
style: TextStyle(
decoration: TextDecoration.lineThrough,
color: Colors.black54,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
SizedBox(
width: SizeConfig.getWidth(5),
),
Text(
'฿1,599.00 ',
textAlign: TextAlign.left,
style: TextStyle(
color: Color.fromRGBO(253, 41, 86, 1),
fontSize: SizeConfig.getFontSize(22),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
],
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
top: SizeConfig.getPadding(8),
bottom: SizeConfig.getPadding(8)),
alignment: Alignment.topLeft,
child: Text(
'ระบุวันที่ เวลาที่ต้องการนัดหมายเข้าใช้ปริการ',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black54,
fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
_formDate(),
],
),
);
}
Widget _formDate() {
return Container(
child: Form(
child: Column(
children: <Widget>[
Container(
alignment: Alignment.topLeft,
padding: EdgeInsets.only(left: SizeConfig.getPadding(30),top: SizeConfig.getPadding(24)),
child: Text(
'ระบุวันที่เข้าใช้บริการ',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(20),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Padding(
padding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(8.0),
horizontal: SizeConfig.getPadding(24),
),
child: Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(
SizeConfig.getPadding(50.0),
),
),
child: TextFormField(
// controller: loginBloc.emailCtrl,
// validator: loginBloc.validateField,
decoration: InputDecoration(
contentPadding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(20),
horizontal: SizeConfig.getPadding(16),
),
// hintText:
// allTranslations.text(key2: 'email', key: 'login') +
// ' / ' +
// allTranslations.text(
// key2: 'tel_number', key: 'register'),
border: OutlineInputBorder(borderSide: BorderSide.none),
),
),
),
),
Container(
alignment: Alignment.topLeft,
padding: EdgeInsets.only(left: SizeConfig.getPadding(30)),
child: Text(
'ระบุเวลาที่เข้าใช้บริการ',
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(20),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Padding(
padding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(8.0),
horizontal: SizeConfig.getPadding(24)),
child: Card(
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(SizeConfig.getPadding(50.0)),
),
child: TextFormField(
// controller: loginBloc.passCtrl,
// validator: loginBloc.validateField,
decoration: InputDecoration(
contentPadding: EdgeInsets.symmetric(
vertical: SizeConfig.getPadding(20),
horizontal: SizeConfig.getPadding(16),
),
// hintText:
// allTranslations.text(key2: 'password', key: 'login'),
border: OutlineInputBorder(borderSide: BorderSide.none),
),
obscureText: true,
),
),
),
SizedBox(
height: SizeConfig.getWidth(30),
),
],
),
),
);
}
}
import 'package:feelverapp/ui/booking/bookingflow.dart';
import 'package:feelverapp/ui/home/home.dart';
import 'package:feelverapp/ui/reserve/reserve_date_time.dart';
import 'package:feelverapp/util/SizeConfig.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class ReserveList extends StatefulWidget {
@override
_ReserveListState createState() => _ReserveListState();
}
class _ReserveListState extends State<ReserveList> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: _setupView(),
bottomNavigationBar: Container(
height: SizeConfig.getHeight(100),
color: Color.fromRGBO(106, 179, 170, 1),
child: Stack(
children: <Widget>[
Positioned(
top: SizeConfig.getPadding(24),
left: SizeConfig.getPadding(20),
child: Container(
// color: Colors.red,
width: MediaQuery.of(context).size.width / 2.5,
height: SizeConfig.getHeight(45),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(24),
color: Color.fromRGBO(54, 148, 163, 1),
),
child: Container(
padding: EdgeInsets.only(top: SizeConfig.getPadding(6)),
child: Text(
'หยิบใส่รถเข็น',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
),
),
Positioned(
top: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(20),
child: InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => BookingFlow(),
),
);
},
child: Container(
// color: Colors.red,
width: MediaQuery.of(context).size.width / 2.5,
height: SizeConfig.getHeight(45),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(24),
color: Color.fromRGBO(232, 166, 180, 1),
),
child: Container(
padding: EdgeInsets.only(top: SizeConfig.getPadding(6)),
child: Text(
'จองเลย',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
),
),
),
],
),
),
);
}
_setupView() {
return SingleChildScrollView(
child: Column(
children: <Widget>[
Stack(
children: <Widget>[
Image.network(
'https://www.cancurreu.com/wp-content/uploads/can_curreu_hotel_ibiza_spa_tratamientos.jpg',
width: MediaQuery.of(context).size.width,
fit: BoxFit.cover,
),
Positioned(
top: SizeConfig.getPadding(44),
left: SizeConfig.getPadding(16),
child: InkWell(
onTap: () {
Navigator.pop(context);
},
child: Image.asset(
'assets/images/ic_back.png',
width: SizeConfig.getWidth(20),
height: SizeConfig.getWidth(20),
),
),
)
],
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(24),
top: SizeConfig.getPadding(16)),
alignment: Alignment.topLeft,
child: Text(
'คุณกำลังจอง',
textAlign: TextAlign.left,
style: TextStyle(
color: Color.fromRGBO(106, 179, 170, 1),
fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(24),
top: SizeConfig.getPadding(3),
bottom: SizeConfig.getPadding(8)),
alignment: Alignment.topLeft,
child: Text(
'Thai Body',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(26),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
),
Row(
children: <Widget>[
SizedBox(
width: SizeConfig.getWidth(20),
),
Image.asset(
'assets/images/clock.png',
width: SizeConfig.getWidth(20),
height: SizeConfig.getWidth(20),
),
SizedBox(
width: SizeConfig.getWidth(10),
),
Text(
'90 นาที',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black87,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
],
),
SizedBox(
height: 8,
),
Row(
children: <Widget>[
SizedBox(
width: SizeConfig.getWidth(22),
),
Text(
'฿599.00',
textAlign: TextAlign.left,
style: TextStyle(
decoration: TextDecoration.lineThrough,
color: Colors.black54,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
SizedBox(
width: SizeConfig.getWidth(5),
),
Text(
'฿1,599.00 ',
textAlign: TextAlign.left,
style: TextStyle(
color: Color.fromRGBO(253, 41, 86, 1),
fontSize: SizeConfig.getFontSize(22),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
],
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
top: SizeConfig.getPadding(8),
bottom: SizeConfig.getPadding(8)),
alignment: Alignment.topLeft,
child: Text(
'เลือกพนักงานบริการ ที่คุณต้องการหากไม่ต้องการระบุพนักงานบริการให้กดที่ปุ่มถัดไป ',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black54,
fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
_ratingMenu(),
],
),
);
}
_ratingMenu() {
final List<String> entries = <String>[
'assets/images/ic_flower.png',
'assets/images/ic_homee.png',
'assets/images/ic_tagservice.png',
'assets/images/ic_cash.png'
];
final List<String> title = <String>[
'อพินญา วงวาลัย',
'อพินญา วงวาลัย',
'อพินญา วงวาลัย',
'อพินญา วงวาลัย'
];
return Container(
height: MediaQuery.of(context).size.height / 2,
child: GridView.count(
crossAxisCount: 3,
physics: const NeverScrollableScrollPhysics(),
children: List.generate(
entries.length,
(index) {
return Column(
children: <Widget>[
ClipRRect(
borderRadius: BorderRadius.circular(50),
child: Image.network(
'https://scontent.fbkk7-2.fna.fbcdn.net/v/t1.0-9/104204530_3370427592977187_6031309814586327212_o.jpg?_nc_cat=106&_nc_sid=110474&_nc_eui2=AeE2vpoR5NHZLbG8b3YABiSdSsMCoPYM3W1KwwKg9gzdbZuYqR1gPnkW3tGe-TS2Vtphdvn2OuvO2CdDLaCMVvcI&_nc_ohc=T5EK3sWOgtAAX994m4I&_nc_ht=scontent.fbkk7-2.fna&oh=0b3e434546b19e256c07ecd6a4d499fb&oe=5F098A94',
width: 85.0,
height: 85.0,
fit: BoxFit.cover,
),
),
SizedBox(
height: 8,
),
Text(
title[index],
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.black87,
fontSize: SizeConfig.getFontSize(15),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
)
],
);
},
),
),
);
}
}
import 'package:feelverapp/ui/home/home.dart';
import 'package:feelverapp/ui/menu/menu.dart';
import 'package:feelverapp/ui/shop/shop_list_detail.dart';
import 'package:feelverapp/util/SizeConfig.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class ShopList extends StatefulWidget {
@override
_ShopListState createState() => _ShopListState();
}
class _ShopListState extends State<ShopList> {
@override
Widget build(BuildContext context) {
SizeConfig(context);
return Scaffold(
body: _setupView(),
bottomNavigationBar: Container(
color: Color.fromRGBO(69, 85, 79, 1),
height: SizeConfig.getWidth(80),
child: Row(
children: <Widget>[
Container(
margin: EdgeInsets.only(left: SizeConfig.getPadding(16), top: 0),
width: SizeConfig.getWidth(60),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
IconButton(
icon: Image.asset(
'assets/images/ic_home.png',
width: SizeConfig.getWidth(24),
height: SizeConfig.getWidth(24),
),
onPressed: () {
print("Pressed");
Navigator.push(
context,
MaterialPageRoute(builder: (context) => HomePage()),
);
},
),
Text(
'หน้าแรก',
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
],
),
),
Container(
margin: EdgeInsets.only(left: SizeConfig.getPadding(16), top: 0),
width: SizeConfig.getWidth(100),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
IconButton(
icon: Image.asset(
'assets/images/ic_list.png',
width: SizeConfig.getWidth(24),
height: SizeConfig.getWidth(24),
),
onPressed: () {
// Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => LoginPage()),
// );
print("Pressed");
},
),
Text(
'การจองของฉัน',
style: TextStyle(
color: Colors.grey,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
],
),
),
Container(
margin: EdgeInsets.only(left: SizeConfig.getPadding(16), top: 0),
width: SizeConfig.getWidth(80),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
IconButton(
icon: Image.asset(
'assets/images/ic_cart.png',
width: SizeConfig.getWidth(24),
height: SizeConfig.getWidth(24),
),
onPressed: () {
// Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => LoginPage()),
// );
},
),
Text(
'รถเข็นของฉัน',
style: TextStyle(
color: Colors.grey,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
)
],
),
),
Container(
margin: EdgeInsets.only(
left: SizeConfig.getPadding(16), top: 0, right: 0),
width: SizeConfig.getWidth(60),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
IconButton(
icon: Image.asset(
'assets/images/ic_nearme.png',
width: SizeConfig.getWidth(24),
height: SizeConfig.getWidth(24),
),
onPressed: () {
// Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => LoginPage()),
// );
},
),
Text(
'ใกล้ฉัน',
style: TextStyle(
color: Colors.grey,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
)
],
),
),
],
),
),
);
}
_setupView() {
return Column(
children: <Widget>[
Stack(
children: <Widget>[
Container(
color: Color.fromRGBO(69, 85, 79, 1),
height: SizeConfig.getHeight(200),
width: MediaQuery.of(context).size.width,
),
Positioned(
top: SizeConfig.getPadding(50),
left: SizeConfig.getPadding(
MediaQuery.of(context).size.width / 3.5),
child: Container(
alignment: Alignment.topCenter,
child: Image.asset(
'assets/images/feelver_banner.png',
width: MediaQuery.of(context).size.width / 2.5,
),
),
),
Positioned(
top: SizeConfig.getPadding(77),
left: SizeConfig.getPadding(16),
child: Container(
child: GestureDetector(
onTap: () {
showDialog(
context: context,
builder: (BuildContext context) {
return NavDrawer();
},
);
},
child: Image.asset(
'assets/images/ic_menu.png',
height: SizeConfig.getWidth(24),
width: SizeConfig.getWidth(30),
fit: BoxFit.cover,
),
),
),
),
Positioned(
top: SizeConfig.getPadding(77),
right: SizeConfig.getPadding(60),
child: Container(
child: Image.asset(
'assets/images/ic_noti.png',
height: SizeConfig.getWidth(30),
width: SizeConfig.getWidth(30),
fit: BoxFit.cover,
),
),
),
Positioned(
top: SizeConfig.getPadding(77),
right: SizeConfig.getPadding(20),
child: InkWell(
// onTap: () {
// Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => LoginPage()),
// );
// },
child: Container(
child: Image.asset(
'assets/images/ic_userimg.png',
height: SizeConfig.getWidth(30),
width: SizeConfig.getWidth(30),
fit: BoxFit.cover,
),
),
),
),
_searchField(),
],
),
_getlist(),
],
);
}
_getlist() {
final List<String> entries = <String>[
'Ivory Relax and Spa',
'Sunshine Spa & Massage',
'Mandarin Ginger Spa'
];
return Expanded(
child: Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(16),
left: SizeConfig.getPadding(16),
right: SizeConfig.getPadding(16),
bottom: SizeConfig.getPadding(10),
),
child: ListView.builder(
itemCount: entries.length,
itemBuilder: (context, i) {
return _shopItem(entries[i]);
},
),
),
);
}
Widget _shopItem(String title) {
return Card(
child: Column(
children: <Widget>[
Container(
height: SizeConfig.getHeight(270),
child: Stack(
children: <Widget>[
Image.network(
'https://image.freepik.com/free-photo/girl-massage-spa-salon_110955-422.jpg',
height: SizeConfig.getWidth(180),
width: MediaQuery.of(context).size.width,
fit: BoxFit.cover,
),
Positioned(
right: SizeConfig.getPadding(16),
top: SizeConfig.getPadding(16),
child: ImageIcon(
AssetImage('assets/images/ic_fav_list.png'),
color: Colors.white,
size: SizeConfig.getFontSize(30),
),
),
Positioned(
left: SizeConfig.getPadding(16),
top: SizeConfig.getPadding(165),
child: Image.asset(
'assets/images/pin_list.png',
width: SizeConfig.getWidth(50),
height: SizeConfig.getWidth(50),
),
),
Positioned(
left: SizeConfig.getPadding(75),
top: SizeConfig.getPadding(190),
child: Text(
title,
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
),
],
),
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24)),
alignment: Alignment.topLeft,
child: Text(
'4/18, 4/21 BTS Nana Exit4 Sukhumvit Soi 8 , KlongToey Bangkok, Thailand 10110',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.grey,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(10),
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
bottom: SizeConfig.getPadding(10)),
alignment: Alignment.topLeft,
child: Text(
'Body Scrub',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
),
Row(
children: <Widget>[
SizedBox(
width: SizeConfig.getWidth(20),
),
Image.asset(
'assets/images/clock.png',
width: SizeConfig.getWidth(20),
height: SizeConfig.getWidth(20),
),
SizedBox(
width: SizeConfig.getWidth(10),
),
Text(
'90 นาที',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black87,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
SizedBox(
width: SizeConfig.getWidth(30),
),
Image.asset(
'assets/images/sell.png',
width: SizeConfig.getWidth(20),
height: SizeConfig.getWidth(20),
),
SizedBox(
width: SizeConfig.getWidth(5),
),
Text(
'฿1,599.00 ',
textAlign: TextAlign.left,
style: TextStyle(
color: Color.fromRGBO(238, 175, 183, 1),
fontSize: SizeConfig.getFontSize(12),
decoration: TextDecoration.lineThrough,
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
SizedBox(
width: SizeConfig.getWidth(5),
),
Text(
'฿1,599.00 ',
textAlign: TextAlign.left,
style: TextStyle(
color: Color.fromRGBO(253, 41, 86, 1),
fontSize: SizeConfig.getFontSize(22),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
],
),
InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ShopListDetail(),
),
);
},
child: Stack(
children: <Widget>[
Container(
child: Image.asset('assets/images/btn_shoplist.png'),
padding: EdgeInsets.only(
left: SizeConfig.getPadding(20),
right: SizeConfig.getPadding(20),
top: SizeConfig.getPadding(20),
bottom: SizeConfig.getPadding(20),
),
),
Container(
alignment: Alignment.center,
child: Text(
'หยิบใส่รถเข็น',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
padding: EdgeInsets.only(
left: SizeConfig.getPadding(60),
right: SizeConfig.getPadding(20),
top: SizeConfig.getPadding(30),
bottom: SizeConfig.getPadding(20),
),
)
],
),
)
],
),
);
}
_searchField() {
return Container(
margin: EdgeInsets.only(
top: 135,
left: 24,
right: 24,
),
height: 55,
child: TextField(
decoration: new InputDecoration(
border: new OutlineInputBorder(
borderRadius: const BorderRadius.all(
const Radius.circular(30.0),
),
),
prefixIcon: IconButton(
onPressed: () {
print('object');
},
icon: Icon(Icons.search, color: Colors.grey)),
filled: true,
hintText: 'ค้นหาแบบละเอียด',
fillColor: Colors.white),
),
);
}
}
import 'package:feelverapp/ui/home/home.dart';
import 'package:feelverapp/ui/menu/menu.dart';
import 'package:feelverapp/util/SizeConfig.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class ShopListDetail extends StatefulWidget {
@override
_ShopListDetailState createState() => _ShopListDetailState();
}
class _ShopListDetailState extends State<ShopListDetail> {
@override
Widget build(BuildContext context) {
SizeConfig(context);
return Scaffold(
body: _setupView(),
bottomNavigationBar: Container(
color: Color.fromRGBO(69, 85, 79, 1),
height: SizeConfig.getWidth(80),
child: Row(
children: <Widget>[
Container(
margin: EdgeInsets.only(left: SizeConfig.getPadding(16), top: 0),
width: SizeConfig.getWidth(60),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
IconButton(
icon: Image.asset(
'assets/images/ic_home.png',
width: SizeConfig.getWidth(24),
height: SizeConfig.getWidth(24),
),
onPressed: () {
print("Pressed");
Navigator.push(
context,
MaterialPageRoute(builder: (context) => HomePage()),
);
},
),
Text(
'หน้าแรก',
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
],
),
),
Container(
margin: EdgeInsets.only(left: SizeConfig.getPadding(16), top: 0),
width: SizeConfig.getWidth(100),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
IconButton(
icon: Image.asset(
'assets/images/ic_list.png',
width: SizeConfig.getWidth(24),
height: SizeConfig.getWidth(24),
),
onPressed: () {
// Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => LoginPage()),
// );
print("Pressed");
},
),
Text(
'การจองของฉัน',
style: TextStyle(
color: Colors.grey,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
],
),
),
Container(
margin: EdgeInsets.only(left: SizeConfig.getPadding(16), top: 0),
width: SizeConfig.getWidth(80),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
IconButton(
icon: Image.asset(
'assets/images/ic_cart.png',
width: SizeConfig.getWidth(24),
height: SizeConfig.getWidth(24),
),
onPressed: () {
// Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => LoginPage()),
// );
},
),
Text(
'รถเข็นของฉัน',
style: TextStyle(
color: Colors.grey,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
)
],
),
),
Container(
margin: EdgeInsets.only(
left: SizeConfig.getPadding(16), top: 0, right: 0),
width: SizeConfig.getWidth(60),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
IconButton(
icon: Image.asset(
'assets/images/ic_nearme.png',
width: SizeConfig.getWidth(24),
height: SizeConfig.getWidth(24),
),
onPressed: () {
// Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => LoginPage()),
// );
},
),
Text(
'ใกล้ฉัน',
style: TextStyle(
color: Colors.grey,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
)
],
),
),
],
),
),
);
}
_setupView() {
return SingleChildScrollView(
child: Column(
children: <Widget>[
Stack(
children: <Widget>[
Container(
color: Color.fromRGBO(69, 85, 79, 1),
height: SizeConfig.getHeight(200),
width: MediaQuery.of(context).size.width,
),
Positioned(
top: SizeConfig.getPadding(50),
left: SizeConfig.getPadding(
MediaQuery.of(context).size.width / 3.5),
child: Container(
alignment: Alignment.topCenter,
child: Image.asset(
'assets/images/feelver_banner.png',
width: MediaQuery.of(context).size.width / 2.5,
),
),
),
Positioned(
top: SizeConfig.getPadding(77),
left: SizeConfig.getPadding(16),
child: Container(
child: GestureDetector(
onTap: () {
showDialog(
context: context,
builder: (BuildContext context) {
return NavDrawer();
},
);
},
child: Image.asset(
'assets/images/ic_menu.png',
height: SizeConfig.getWidth(24),
width: SizeConfig.getWidth(30),
fit: BoxFit.cover,
),
),
),
),
Positioned(
top: SizeConfig.getPadding(77),
right: SizeConfig.getPadding(60),
child: Container(
child: Image.asset(
'assets/images/ic_noti.png',
height: SizeConfig.getWidth(30),
width: SizeConfig.getWidth(30),
fit: BoxFit.cover,
),
),
),
Positioned(
top: SizeConfig.getPadding(77),
right: SizeConfig.getPadding(20),
child: InkWell(
// onTap: () {
// Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => LoginPage()),
// );
// },
child: Container(
child: Image.asset(
'assets/images/ic_userimg.png',
height: SizeConfig.getWidth(30),
width: SizeConfig.getWidth(30),
fit: BoxFit.cover,
),
),
),
),
],
),
Container(
height: SizeConfig.getHeight(270),
child: Stack(
children: <Widget>[
Image.network(
'https://image.freepik.com/free-photo/girl-massage-spa-salon_110955-422.jpg',
height: SizeConfig.getWidth(180),
width: MediaQuery.of(context).size.width,
fit: BoxFit.cover,
),
Positioned(
right: SizeConfig.getPadding(16),
top: SizeConfig.getPadding(16),
child: ImageIcon(
AssetImage('assets/images/ic_fav_list.png'),
color: Colors.white,
size: SizeConfig.getFontSize(30),
),
),
Positioned(
left: SizeConfig.getPadding(16),
top: SizeConfig.getPadding(165),
child: Image.asset(
'assets/images/pin_list.png',
width: SizeConfig.getWidth(50),
height: SizeConfig.getWidth(50),
),
),
Positioned(
left: SizeConfig.getPadding(75),
top: SizeConfig.getPadding(190),
child: Text(
'Ivory Relax and Spa',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
),
],
),
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
bottom: SizeConfig.getPadding(15)),
alignment: Alignment.topLeft,
child: Text(
'4/18, 4/21 BTS Nana Exit4 Sukhumvit Soi 8 , KlongToey Bangkok, Thailand 10110',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.grey,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(20),
right: SizeConfig.getPadding(20),
top: SizeConfig.getPadding(20),
bottom: SizeConfig.getPadding(20),
),
height: SizeConfig.getHeight(1),
width: MediaQuery.of(context).size.width - 40,
color: Colors.grey,
),
_dayOpen(),
_rating(),
_ratingMenu(),
SizedBox(
height: SizeConfig.getHeight(20),
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(20),
right: SizeConfig.getPadding(20),
top: SizeConfig.getPadding(40),
bottom: SizeConfig.getPadding(20),
),
height: SizeConfig.getHeight(1),
width: MediaQuery.of(context).size.width - 40,
color: Colors.grey,
),
SizedBox(
height: SizeConfig.getHeight(20),
),
_detail(),
],
),
);
}
_dayOpen() {
return Column(
children: <Widget>[
Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(15),
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
bottom: SizeConfig.getPadding(5),
),
alignment: Alignment.topLeft,
child: Text(
'วันเปิดปิดทำการ',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black87,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
),
Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(0),
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
bottom: SizeConfig.getPadding(5),
),
alignment: Alignment.topLeft,
child: Text(
'จันทร์ 10:00 AM - 10:00 PM',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black54,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(0),
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
bottom: SizeConfig.getPadding(5),
),
alignment: Alignment.topLeft,
child: Text(
'อังคาร 10:00 AM - 10:00 PM',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black54,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(0),
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
bottom: SizeConfig.getPadding(5),
),
alignment: Alignment.topLeft,
child: Text(
'พุธ 10:00 AM - 10:00 PM',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black54,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(0),
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
bottom: SizeConfig.getPadding(5),
),
alignment: Alignment.topLeft,
child: Text(
'พฤหัสบดี 10:00 AM - 10:00 PM',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black54,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(0),
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
bottom: SizeConfig.getPadding(5),
),
alignment: Alignment.topLeft,
child: Text(
'ศุกร์ 10:00 AM - 10:00 PM',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black54,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(0),
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
bottom: SizeConfig.getPadding(5),
),
alignment: Alignment.topLeft,
child: Text(
'เสาร์ 10:00 AM - 10:00 PM',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black54,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(0),
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
bottom: SizeConfig.getPadding(20),
),
alignment: Alignment.topLeft,
child: Text(
'อาทิตย์ 10:00 AM - 10:00 PM',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black54,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(20),
right: SizeConfig.getPadding(20),
top: SizeConfig.getPadding(40),
bottom: SizeConfig.getPadding(20),
),
height: SizeConfig.getHeight(1),
width: MediaQuery.of(context).size.width - 40,
color: Colors.grey,
),
],
);
}
_rating() {
return Container(
height: SizeConfig.getHeight(100),
child: Stack(
children: <Widget>[
Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(15),
left: SizeConfig.getPadding(24),
bottom: SizeConfig.getPadding(5),
),
alignment: Alignment.topLeft,
child: Text(
'คะแนนร้านค้าและการรีวิว',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black87,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
),
Positioned(
right: SizeConfig.getPadding(15),
top: SizeConfig.getPadding(20),
child: Text(
'ดูทั้งหมด',
textAlign: TextAlign.right,
style: TextStyle(
decoration: TextDecoration.underline,
color: Colors.black54,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
),
Positioned(
top: SizeConfig.getPadding(53),
left: SizeConfig.getPadding(20),
child: Image.asset(
'assets/images/ic_star_active.png',
width: SizeConfig.getWidth(16),
height: SizeConfig.getWidth(16),
),
),
Positioned(
left: SizeConfig.getPadding(45),
top: SizeConfig.getPadding(50),
child: Text(
'4.9',
textAlign: TextAlign.right,
style: TextStyle(
decoration: TextDecoration.underline,
color: Colors.black87,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
),
Positioned(
left: SizeConfig.getPadding(80),
top: SizeConfig.getPadding(52),
child: Text(
'267 รีวิว',
textAlign: TextAlign.right,
style: TextStyle(
// decoration: TextDecoration.underline,
color: Colors.black54,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Positioned(
right: SizeConfig.getPadding(20),
top: SizeConfig.getPadding(52),
child: Text(
'',
textAlign: TextAlign.right,
style: TextStyle(
// decoration: TextDecoration.underline,
color: Colors.black87,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
],
),
);
}
_ratingMenu() {
final List<String> entries = <String>[
'assets/images/ic_flower.png',
'assets/images/ic_homee.png',
'assets/images/ic_tagservice.png',
'assets/images/ic_cash.png'
];
final List<String> title = <String>[
'บรรยากาศ',
'ความสะอาด',
'บริการ',
'ความคุ้มค่า'
];
return Container(
height: 80,
child: GridView.count(
crossAxisCount: 4,
physics: const NeverScrollableScrollPhysics(),
children: List.generate(
entries.length,
(index) {
return Center(
child: Column(
children: <Widget>[
Image.asset(
entries[index],
width: SizeConfig.getWidth(24),
height: SizeConfig.getWidth(24),
),
SizedBox(
height: 10,
),
Text(
title[index],
textAlign: TextAlign.right,
style: TextStyle(
// decoration: TextDecoration.underline,
color: Colors.black54,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
)
],
),
);
},
),
),
);
}
_detail() {
return Column(
children: <Widget>[
Container(
alignment: Alignment.topLeft,
padding: EdgeInsets.only(
left: SizeConfig.getPadding(20),
),
child: Text(
'ข้อมูลร้านค้า',
textAlign: TextAlign.left,
style: TextStyle(
// decoration: TextDecoration.underline,
color: Colors.black87,
fontSize: SizeConfig.getFontSize(16),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
),
Container(
alignment: Alignment.topLeft,
padding: EdgeInsets.only(
left: SizeConfig.getPadding(20),
right: SizeConfig.getPadding(20),
top: SizeConfig.getPadding(10),
),
child: Text(
'ไม่ว่าคุณจะมาเยี่ยมเยียนเมืองเพลิดเพลินไปกับการพักผ่อนหรือคุณเป็นคนกรุงเทพฯตลอดไปสปาธรรมชาติของเราเป็นทางเลือกที่สมบูรณ์แบบหากคุณกำลังมองหาการผ่อนคลายความรู้สึกทั้งหมดในขณะที่เราปรนเปรอคุณด้วยสปาธรรมชาติ 100% และ ผลิตภัณฑ์สปาออร์แกนิก ทุกสิ่งที่คุณสัมผัสกลิ่นความรู้สึกการได้ยินและประสบการณ์นั้นเป็นเรื่องจริงและเป็นธรรมชาติอย่างที่ได้รับการเดินทางครั้งใหญ่จากความเร่งรีบและวุ่นวายของกรุงเทพฯที่วุ่นวายและความวุ่นวายของชีวิตสมัยใหม่! ด้วยเสียงมลภาวะความวุ่นวายและสารเคมีที่กลายเป็นบรรทัดฐานในการใช้ชีวิตในเมืองข้อเสนอของสปาของเราจึงเป็นสิ่งที่ต้องการ ดังนั้นอย่าลืมที่จะได้รับ Plant Day Spa อันสดใหม่ของคุณ',
textAlign: TextAlign.left,
style: TextStyle(
// decoration: TextDecoration.underline,
color: Colors.black54,
fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
SizedBox(
height: SizeConfig.getHeight(20),
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(20),
right: SizeConfig.getPadding(20),
top: SizeConfig.getPadding(40),
bottom: SizeConfig.getPadding(20),
),
height: SizeConfig.getHeight(1),
width: MediaQuery.of(context).size.width - 40,
color: Colors.grey,
),
],
);
}
_getlist() {
final List<String> entries = <String>[
'Ivory Relax and Spa',
'Sunshine Spa & Massage',
'Mandarin Ginger Spa'
];
return Expanded(
child: Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(16),
left: SizeConfig.getPadding(16),
right: SizeConfig.getPadding(16),
bottom: SizeConfig.getPadding(10),
),
child: ListView.builder(
itemCount: entries.length,
itemBuilder: (context, i) {
return _shopItem(entries[i]);
},
),
),
);
}
Widget _shopItem(String title) {
return Card(
child: Column(
children: <Widget>[
Container(
height: SizeConfig.getHeight(270),
child: Stack(
children: <Widget>[
Image.network(
'https://image.freepik.com/free-photo/girl-massage-spa-salon_110955-422.jpg',
height: SizeConfig.getWidth(180),
width: MediaQuery.of(context).size.width,
fit: BoxFit.cover,
),
Positioned(
right: SizeConfig.getPadding(16),
top: SizeConfig.getPadding(16),
child: ImageIcon(
AssetImage('assets/images/ic_fav_list.png'),
color: Colors.white,
size: SizeConfig.getFontSize(30),
),
),
Positioned(
left: SizeConfig.getPadding(16),
top: SizeConfig.getPadding(165),
child: Image.asset(
'assets/images/pin_list.png',
width: SizeConfig.getWidth(50),
height: SizeConfig.getWidth(50),
),
),
Positioned(
left: SizeConfig.getPadding(75),
top: SizeConfig.getPadding(190),
child: Text(
title,
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
),
],
),
),
Container(
padding: EdgeInsets.only(
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24)),
alignment: Alignment.topLeft,
child: Text(
'4/18, 4/21 BTS Nana Exit4 Sukhumvit Soi 8 , KlongToey Bangkok, Thailand 10110',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.grey,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
),
Container(
padding: EdgeInsets.only(
top: SizeConfig.getPadding(10),
left: SizeConfig.getPadding(24),
right: SizeConfig.getPadding(24),
bottom: SizeConfig.getPadding(10)),
alignment: Alignment.topLeft,
child: Text(
'Body Scrub',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
),
Row(
children: <Widget>[
SizedBox(
width: SizeConfig.getWidth(20),
),
Image.asset(
'assets/images/clock.png',
width: SizeConfig.getWidth(20),
height: SizeConfig.getWidth(20),
),
SizedBox(
width: SizeConfig.getWidth(10),
),
Text(
'90 นาที',
textAlign: TextAlign.left,
style: TextStyle(
color: Colors.black87,
fontSize: SizeConfig.getFontSize(12),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
SizedBox(
width: SizeConfig.getWidth(30),
),
Image.asset(
'assets/images/sell.png',
width: SizeConfig.getWidth(20),
height: SizeConfig.getWidth(20),
),
SizedBox(
width: SizeConfig.getWidth(5),
),
Text(
'฿1,599.00 ',
textAlign: TextAlign.left,
style: TextStyle(
color: Color.fromRGBO(238, 175, 183, 1),
fontSize: SizeConfig.getFontSize(12),
decoration: TextDecoration.lineThrough,
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w500),
),
SizedBox(
width: SizeConfig.getWidth(5),
),
Text(
'฿1,599.00 ',
textAlign: TextAlign.left,
style: TextStyle(
color: Color.fromRGBO(253, 41, 86, 1),
fontSize: SizeConfig.getFontSize(22),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
],
),
InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ShopListDetail(),
),
);
},
child: Stack(
children: <Widget>[
Container(
child: Image.asset('assets/images/btn_shoplist.png'),
padding: EdgeInsets.only(
left: SizeConfig.getPadding(20),
right: SizeConfig.getPadding(20),
top: SizeConfig.getPadding(20),
bottom: SizeConfig.getPadding(20),
),
),
Container(
alignment: Alignment.center,
child: Text(
'หยิบใส่รถเข็น',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: SizeConfig.getFontSize(14),
fontFamily: "SF_Pro_Text",
fontWeight: FontWeight.w700),
),
padding: EdgeInsets.only(
left: SizeConfig.getPadding(60),
right: SizeConfig.getPadding(20),
top: SizeConfig.getPadding(30),
bottom: SizeConfig.getPadding(20),
),
)
],
),
)
],
),
);
}}
\ No newline at end of file
import 'dart:async';
import 'package:feelverapp/ui/home/home.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class SplashScreenPage extends StatefulWidget {
@override
_SplashScreenPageState createState() => _SplashScreenPageState();
}
class _SplashScreenPageState extends State<SplashScreenPage> {
Timer _timer;
@override
void initState() {
_timer = new Timer(Duration(seconds: 2), () => Navigator.pushReplacement(context, CupertinoPageRoute(builder: (_) => HomePage())));
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
padding: const EdgeInsets.all(30),
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
child: Center(
child: Image.asset('assets/images/logo.png'),
),
),
);
}
}
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_screenutil/screenutil.dart';
class SizeConfig {
BuildContext context;
SizeConfig(this.context){
ScreenUtil.init(context,width: 375,height: 812);
}
static double getScreenWidth(){
return ScreenUtil.screenWidth;
}
static double getScreenHeight(){
return ScreenUtil.screenHeight;
}
static double getScaleOfWidth(double scaleFactor){
return ScreenUtil.screenWidth*scaleFactor;
}
static double getPadding(double value, {double right}){
return ScreenUtil().setWidth(value);
}
static double getWidth(double value){
return ScreenUtil().setWidth(value);
}
static double getHeight(double value){
return ScreenUtil().setHeight(value);
}
static double getFontSize(double value){
return ScreenUtil().setSp(value, allowFontScalingSelf: true);
}
}
\ No newline at end of file
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
archive:
dependency: transitive
description:
name: archive
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.11"
args:
dependency: transitive
description:
name: args
url: "https://pub.dartlang.org"
source: hosted
version: "1.5.2"
async:
dependency: transitive
description:
name: async
url: "https://pub.dartlang.org"
source: hosted
version: "2.4.0"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.5"
charcode:
dependency: transitive
description:
name: charcode
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.2"
collection:
dependency: transitive
description:
name: collection
url: "https://pub.dartlang.org"
source: hosted
version: "1.14.11"
convert:
dependency: transitive
description:
name: convert
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
crypto:
dependency: transitive
description:
name: crypto
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.3"
cupertino_icons:
dependency: "direct main"
description:
name: cupertino_icons
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.3"
flutter:
dependency: "direct main"
description: flutter
source: sdk
version: "0.0.0"
flutter_screenutil:
dependency: "direct main"
description:
name: flutter_screenutil
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
flutter_test:
dependency: "direct dev"
description: flutter
source: sdk
version: "0.0.0"
image:
dependency: transitive
description:
name: image
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.4"
matcher:
dependency: transitive
description:
name: matcher
url: "https://pub.dartlang.org"
source: hosted
version: "0.12.6"
meta:
dependency: transitive
description:
name: meta
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.8"
path:
dependency: transitive
description:
name: path
url: "https://pub.dartlang.org"
source: hosted
version: "1.6.4"
pedantic:
dependency: transitive
description:
name: pedantic
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.0+1"
petitparser:
dependency: transitive
description:
name: petitparser
url: "https://pub.dartlang.org"
source: hosted
version: "2.4.0"
quiver:
dependency: transitive
description:
name: quiver
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.5"
sky_engine:
dependency: transitive
description: flutter
source: sdk
version: "0.0.99"
source_span:
dependency: transitive
description:
name: source_span
url: "https://pub.dartlang.org"
source: hosted
version: "1.5.5"
stack_trace:
dependency: transitive
description:
name: stack_trace
url: "https://pub.dartlang.org"
source: hosted
version: "1.9.3"
stream_channel:
dependency: transitive
description:
name: stream_channel
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
string_scanner:
dependency: transitive
description:
name: string_scanner
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.5"
term_glyph:
dependency: transitive
description:
name: term_glyph
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
test_api:
dependency: transitive
description:
name: test_api
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.11"
typed_data:
dependency: transitive
description:
name: typed_data
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.6"
vector_math:
dependency: transitive
description:
name: vector_math
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.8"
xml:
dependency: transitive
description:
name: xml
url: "https://pub.dartlang.org"
source: hosted
version: "3.5.0"
sdks:
dart: ">=2.6.0 <3.0.0"
name: feelverapp
description: A new Flutter project.
# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1
environment:
sdk: ">=2.1.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
flutter_screenutil: ^1.0.2
dev_dependencies:
flutter_test:
sdk: flutter
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
# The following section is specific to Flutter.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
# To add assets to your application, add an assets section, like this:
assets:
- assets/images/
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware.
# For details regarding adding assets from package dependencies, see
# https://flutter.dev/assets-and-images/#from-packages
# To add custom fonts to your application, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a
# "family" key with the font family name, and a "fonts" key with a
# list giving the asset and other descriptors for the font. For
# example:
# fonts:
# - family: Schyler
# fonts:
# - asset: fonts/Schyler-Regular.ttf
# - asset: fonts/Schyler-Italic.ttf
# style: italic
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
#
# For details regarding fonts from package dependencies,
# see https://flutter.dev/custom-fonts/#from-packages
// This is a basic Flutter widget test.
//
// To perform an interaction with a widget in your test, use the WidgetTester
// utility that Flutter provides. For example, you can send tap and scroll
// gestures. You can also use WidgetTester to find child widgets in the widget
// tree, read text, and verify that the values of widget properties are correct.
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:feelverapp/main.dart';
void main() {
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
// Build our app and trigger a frame.
await tester.pumpWidget(MyApp());
// Verify that our counter starts at 0.
expect(find.text('0'), findsOneWidget);
expect(find.text('1'), findsNothing);
// Tap the '+' icon and trigger a frame.
await tester.tap(find.byIcon(Icons.add));
await tester.pump();
// Verify that our counter has incremented.
expect(find.text('0'), findsNothing);
expect(find.text('1'), findsOneWidget);
});
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment