Merge pull request 'feature/unit2/UNIT2-#1Upgrade-flutter-dart-version-and-create-UI-for-login' (#2) from feature/unit2/UNIT2-#1Upgrade-flutter-dart-version-and-create-UI-for-login into develop
Reviewed-on: http://git.agusandelnorte.gov.ph:3000/SoftwareDevelopmentSection/unit2-null-safety-repository/pulls/2feature/passo/PASSO-#1-Sync-data-from-device-to-postgre-and-vice-versa
|
@ -0,0 +1,44 @@
|
||||||
|
# Miscellaneous
|
||||||
|
*.class
|
||||||
|
*.log
|
||||||
|
*.pyc
|
||||||
|
*.swp
|
||||||
|
.DS_Store
|
||||||
|
.atom/
|
||||||
|
.buildlog/
|
||||||
|
.history
|
||||||
|
.svn/
|
||||||
|
migrate_working_dir/
|
||||||
|
|
||||||
|
# IntelliJ related
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
*.iws
|
||||||
|
.idea/
|
||||||
|
|
||||||
|
# The .vscode folder contains launch configuration and tasks you configure in
|
||||||
|
# VS Code which you may wish to be included in version control, so this line
|
||||||
|
# is commented out by default.
|
||||||
|
#.vscode/
|
||||||
|
|
||||||
|
# Flutter/Dart/Pub related
|
||||||
|
**/doc/api/
|
||||||
|
**/ios/Flutter/.last_build_id
|
||||||
|
.dart_tool/
|
||||||
|
.flutter-plugins
|
||||||
|
.flutter-plugins-dependencies
|
||||||
|
.packages
|
||||||
|
.pub-cache/
|
||||||
|
.pub/
|
||||||
|
/build/
|
||||||
|
|
||||||
|
# Symbolication related
|
||||||
|
app.*.symbols
|
||||||
|
|
||||||
|
# Obfuscation related
|
||||||
|
app.*.map.json
|
||||||
|
|
||||||
|
# Android Studio will place build artifacts here
|
||||||
|
/android/app/debug
|
||||||
|
/android/app/profile
|
||||||
|
/android/app/release
|
|
@ -0,0 +1,45 @@
|
||||||
|
# This file tracks properties of this Flutter project.
|
||||||
|
# Used by Flutter tool to assess capabilities and perform upgrades etc.
|
||||||
|
#
|
||||||
|
# This file should be version controlled.
|
||||||
|
|
||||||
|
version:
|
||||||
|
revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
|
||||||
|
channel: stable
|
||||||
|
|
||||||
|
project_type: app
|
||||||
|
|
||||||
|
# Tracks metadata for the flutter migrate command
|
||||||
|
migration:
|
||||||
|
platforms:
|
||||||
|
- platform: root
|
||||||
|
create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
|
||||||
|
base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
|
||||||
|
- platform: android
|
||||||
|
create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
|
||||||
|
base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
|
||||||
|
- platform: ios
|
||||||
|
create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
|
||||||
|
base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
|
||||||
|
- platform: linux
|
||||||
|
create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
|
||||||
|
base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
|
||||||
|
- platform: macos
|
||||||
|
create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
|
||||||
|
base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
|
||||||
|
- platform: web
|
||||||
|
create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
|
||||||
|
base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
|
||||||
|
- platform: windows
|
||||||
|
create_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
|
||||||
|
base_revision: b8f7f1f9869bb2d116aa6a70dbeac61000b52849
|
||||||
|
|
||||||
|
# User provided section
|
||||||
|
|
||||||
|
# List of Local paths (relative to this file) that should be
|
||||||
|
# ignored by the migrate tool.
|
||||||
|
#
|
||||||
|
# Files that are not part of the templates will be ignored by default.
|
||||||
|
unmanaged_files:
|
||||||
|
- 'lib/main.dart'
|
||||||
|
- 'ios/Runner.xcodeproj/project.pbxproj'
|
|
@ -0,0 +1,16 @@
|
||||||
|
# unit2
|
||||||
|
|
||||||
|
A new Flutter project.
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
This project is a starting point for a Flutter application.
|
||||||
|
|
||||||
|
A few resources to get you started if this is your first Flutter project:
|
||||||
|
|
||||||
|
- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
|
||||||
|
- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
|
||||||
|
|
||||||
|
For help getting started with Flutter development, view the
|
||||||
|
[online documentation](https://docs.flutter.dev/), which offers tutorials,
|
||||||
|
samples, guidance on mobile development, and a full API reference.
|
|
@ -0,0 +1,29 @@
|
||||||
|
# This file configures the analyzer, which statically analyzes Dart code to
|
||||||
|
# check for errors, warnings, and lints.
|
||||||
|
#
|
||||||
|
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
|
||||||
|
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
|
||||||
|
# invoked from the command line by running `flutter analyze`.
|
||||||
|
|
||||||
|
# The following line activates a set of recommended lints for Flutter apps,
|
||||||
|
# packages, and plugins designed to encourage good coding practices.
|
||||||
|
include: package:flutter_lints/flutter.yaml
|
||||||
|
|
||||||
|
linter:
|
||||||
|
# The lint rules applied to this project can be customized in the
|
||||||
|
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
|
||||||
|
# included above or to enable additional rules. A list of all available lints
|
||||||
|
# and their documentation is published at
|
||||||
|
# https://dart-lang.github.io/linter/lints/index.html.
|
||||||
|
#
|
||||||
|
# Instead of disabling a lint rule for the entire project in the
|
||||||
|
# section below, it can also be suppressed for a single line of code
|
||||||
|
# or a specific dart file by using the `// ignore: name_of_lint` and
|
||||||
|
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
|
||||||
|
# producing the lint.
|
||||||
|
rules:
|
||||||
|
# avoid_print: false # Uncomment to disable the `avoid_print` rule
|
||||||
|
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
|
||||||
|
|
||||||
|
# Additional information about this file can be found at
|
||||||
|
# https://dart.dev/guides/language/analysis-options
|
|
@ -0,0 +1,13 @@
|
||||||
|
gradle-wrapper.jar
|
||||||
|
/.gradle
|
||||||
|
/captures/
|
||||||
|
/gradlew
|
||||||
|
/gradlew.bat
|
||||||
|
/local.properties
|
||||||
|
GeneratedPluginRegistrant.java
|
||||||
|
|
||||||
|
# Remember to never publicly share your keystore.
|
||||||
|
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
|
||||||
|
key.properties
|
||||||
|
**/*.keystore
|
||||||
|
**/*.jks
|
|
@ -0,0 +1,71 @@
|
||||||
|
def localProperties = new Properties()
|
||||||
|
def localPropertiesFile = rootProject.file('local.properties')
|
||||||
|
if (localPropertiesFile.exists()) {
|
||||||
|
localPropertiesFile.withReader('UTF-8') { reader ->
|
||||||
|
localProperties.load(reader)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def flutterRoot = localProperties.getProperty('flutter.sdk')
|
||||||
|
if (flutterRoot == null) {
|
||||||
|
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
|
||||||
|
}
|
||||||
|
|
||||||
|
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
||||||
|
if (flutterVersionCode == null) {
|
||||||
|
flutterVersionCode = '1'
|
||||||
|
}
|
||||||
|
|
||||||
|
def flutterVersionName = localProperties.getProperty('flutter.versionName')
|
||||||
|
if (flutterVersionName == null) {
|
||||||
|
flutterVersionName = '1.0'
|
||||||
|
}
|
||||||
|
|
||||||
|
apply plugin: 'com.android.application'
|
||||||
|
apply plugin: 'kotlin-android'
|
||||||
|
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||||
|
|
||||||
|
android {
|
||||||
|
compileSdkVersion flutter.compileSdkVersion
|
||||||
|
ndkVersion flutter.ndkVersion
|
||||||
|
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility JavaVersion.VERSION_1_8
|
||||||
|
targetCompatibility JavaVersion.VERSION_1_8
|
||||||
|
}
|
||||||
|
|
||||||
|
kotlinOptions {
|
||||||
|
jvmTarget = '1.8'
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
main.java.srcDirs += 'src/main/kotlin'
|
||||||
|
}
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
||||||
|
applicationId "com.example.unit2"
|
||||||
|
// You can update the following values to match your application needs.
|
||||||
|
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
|
||||||
|
minSdkVersion flutter.minSdkVersion
|
||||||
|
targetSdkVersion flutter.targetSdkVersion
|
||||||
|
versionCode flutterVersionCode.toInteger()
|
||||||
|
versionName flutterVersionName
|
||||||
|
}
|
||||||
|
|
||||||
|
buildTypes {
|
||||||
|
release {
|
||||||
|
// TODO: Add your own signing config for the release build.
|
||||||
|
// Signing with the debug keys for now, so `flutter run --release` works.
|
||||||
|
signingConfig signingConfigs.debug
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
flutter {
|
||||||
|
source '../..'
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="com.example.unit2">
|
||||||
|
<!-- The INTERNET permission is required for development. Specifically,
|
||||||
|
the Flutter tool needs it to communicate with the running application
|
||||||
|
to allow setting breakpoints, to provide hot reload, etc.
|
||||||
|
-->
|
||||||
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
|
</manifest>
|
|
@ -0,0 +1,35 @@
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="com.example.unit2">
|
||||||
|
<uses-permission android:name="android.permission.CAMERA" />
|
||||||
|
<application
|
||||||
|
android:label="unit2"
|
||||||
|
android:name="${applicationName}"
|
||||||
|
android:icon="@mipmap/ic_launcher">
|
||||||
|
<activity
|
||||||
|
android:name=".MainActivity"
|
||||||
|
android:exported="true"
|
||||||
|
android:launchMode="singleTop"
|
||||||
|
android:theme="@style/LaunchTheme"
|
||||||
|
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||||
|
android:hardwareAccelerated="true"
|
||||||
|
android:windowSoftInputMode="adjustResize">
|
||||||
|
<!-- Specifies an Android theme to apply to this Activity as soon as
|
||||||
|
the Android process has started. This theme is visible to the user
|
||||||
|
while the Flutter UI initializes. After that, this theme continues
|
||||||
|
to determine the Window background behind the Flutter UI. -->
|
||||||
|
<meta-data
|
||||||
|
android:name="io.flutter.embedding.android.NormalTheme"
|
||||||
|
android:resource="@style/NormalTheme"
|
||||||
|
/>
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN"/>
|
||||||
|
<category android:name="android.intent.category.LAUNCHER"/>
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
<!-- Don't delete the meta-data below.
|
||||||
|
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
|
||||||
|
<meta-data
|
||||||
|
android:name="flutterEmbedding"
|
||||||
|
android:value="2" />
|
||||||
|
</application>
|
||||||
|
</manifest>
|
|
@ -0,0 +1,6 @@
|
||||||
|
package com.example.unit2
|
||||||
|
|
||||||
|
import io.flutter.embedding.android.FlutterActivity
|
||||||
|
|
||||||
|
class MainActivity: FlutterActivity() {
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Modify this file to customize your launch splash screen -->
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item android:drawable="?android:colorBackground" />
|
||||||
|
|
||||||
|
<!-- You can insert your own image assets here -->
|
||||||
|
<!-- <item>
|
||||||
|
<bitmap
|
||||||
|
android:gravity="center"
|
||||||
|
android:src="@mipmap/launch_image" />
|
||||||
|
</item> -->
|
||||||
|
</layer-list>
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Modify this file to customize your launch splash screen -->
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item android:drawable="@android:color/white" />
|
||||||
|
|
||||||
|
<!-- You can insert your own image assets here -->
|
||||||
|
<!-- <item>
|
||||||
|
<bitmap
|
||||||
|
android:gravity="center"
|
||||||
|
android:src="@mipmap/launch_image" />
|
||||||
|
</item> -->
|
||||||
|
</layer-list>
|
After Width: | Height: | Size: 544 B |
After Width: | Height: | Size: 442 B |
After Width: | Height: | Size: 721 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.4 KiB |
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
|
||||||
|
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||||
|
<!-- Show a splash screen on the activity. Automatically removed when
|
||||||
|
the Flutter engine draws its first frame -->
|
||||||
|
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||||
|
</style>
|
||||||
|
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||||
|
This theme determines the color of the Android Window while your
|
||||||
|
Flutter UI initializes, as well as behind your Flutter UI while its
|
||||||
|
running.
|
||||||
|
|
||||||
|
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
||||||
|
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||||
|
<item name="android:windowBackground">?android:colorBackground</item>
|
||||||
|
</style>
|
||||||
|
</resources>
|
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
|
||||||
|
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
||||||
|
<!-- Show a splash screen on the activity. Automatically removed when
|
||||||
|
the Flutter engine draws its first frame -->
|
||||||
|
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||||
|
</style>
|
||||||
|
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||||
|
This theme determines the color of the Android Window while your
|
||||||
|
Flutter UI initializes, as well as behind your Flutter UI while its
|
||||||
|
running.
|
||||||
|
|
||||||
|
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
||||||
|
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
||||||
|
<item name="android:windowBackground">?android:colorBackground</item>
|
||||||
|
</style>
|
||||||
|
</resources>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="com.example.unit2">
|
||||||
|
<!-- The INTERNET permission is required for development. Specifically,
|
||||||
|
the Flutter tool needs it to communicate with the running application
|
||||||
|
to allow setting breakpoints, to provide hot reload, etc.
|
||||||
|
-->
|
||||||
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
|
</manifest>
|
|
@ -0,0 +1,31 @@
|
||||||
|
buildscript {
|
||||||
|
ext.kotlin_version = '1.6.10'
|
||||||
|
repositories {
|
||||||
|
google()
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
classpath 'com.android.tools.build:gradle:7.1.2'
|
||||||
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
allprojects {
|
||||||
|
repositories {
|
||||||
|
google()
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rootProject.buildDir = '../build'
|
||||||
|
subprojects {
|
||||||
|
project.buildDir = "${rootProject.buildDir}/${project.name}"
|
||||||
|
}
|
||||||
|
subprojects {
|
||||||
|
project.evaluationDependsOn(':app')
|
||||||
|
}
|
||||||
|
|
||||||
|
task clean(type: Delete) {
|
||||||
|
delete rootProject.buildDir
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
org.gradle.jvmargs=-Xmx1536M
|
||||||
|
android.useAndroidX=true
|
||||||
|
android.enableJetifier=true
|
|
@ -0,0 +1,5 @@
|
||||||
|
distributionBase=GRADLE_USER_HOME
|
||||||
|
distributionPath=wrapper/dists
|
||||||
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
zipStorePath=wrapper/dists
|
||||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
|
|
@ -0,0 +1,11 @@
|
||||||
|
include ':app'
|
||||||
|
|
||||||
|
def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
|
||||||
|
def properties = new Properties()
|
||||||
|
|
||||||
|
assert localPropertiesFile.exists()
|
||||||
|
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
|
||||||
|
|
||||||
|
def flutterSdkPath = properties.getProperty("flutter.sdk")
|
||||||
|
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
|
||||||
|
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
|
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 9.7 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 160 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 8.7 KiB |
After Width: | Height: | Size: 8.6 KiB |
|
@ -0,0 +1,108 @@
|
||||||
|
<?xml version="1.0" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||||
|
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||||
|
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||||
|
width="2126.000000pt" height="2148.000000pt" viewBox="0 0 2126.000000 2148.000000"
|
||||||
|
preserveAspectRatio="xMidYMid meet">
|
||||||
|
|
||||||
|
<g transform="translate(0.000000,2148.000000) scale(0.100000,-0.100000)"
|
||||||
|
fill="#000000" stroke="none">
|
||||||
|
<path d="M5120 21219 c0 -6 -16 -27 -35 -47 -19 -20 -35 -43 -35 -50 0 -7 -18
|
||||||
|
-32 -40 -56 -22 -24 -40 -48 -40 -55 0 -6 -13 -24 -30 -39 -16 -16 -30 -35
|
||||||
|
-30 -43 -1 -8 -34 -50 -75 -93 -41 -44 -75 -85 -75 -91 0 -6 -13 -27 -30 -45
|
||||||
|
-16 -18 -30 -38 -30 -43 0 -4 -18 -30 -40 -56 -22 -26 -40 -51 -40 -57 0 -5
|
||||||
|
-29 -40 -65 -77 -36 -38 -65 -74 -65 -81 0 -7 -11 -25 -25 -40 -14 -15 -25
|
||||||
|
-31 -25 -36 0 -5 -36 -49 -80 -97 -44 -49 -80 -94 -80 -102 0 -7 -11 -22 -25
|
||||||
|
-33 -14 -11 -25 -26 -25 -34 0 -8 -18 -34 -40 -58 -22 -24 -40 -49 -40 -57 0
|
||||||
|
-8 -30 -45 -65 -83 -36 -38 -65 -74 -65 -80 0 -7 -13 -25 -30 -41 -16 -16 -30
|
||||||
|
-36 -30 -45 0 -9 -18 -34 -40 -55 -22 -21 -40 -46 -40 -53 0 -8 -18 -34 -40
|
||||||
|
-58 -22 -24 -40 -50 -40 -58 0 -8 -10 -16 -22 -18 -13 -2 -24 -11 -27 -23 -2
|
||||||
|
-11 -16 -35 -32 -53 -16 -18 -29 -38 -29 -45 0 -7 -22 -35 -50 -62 -27 -27
|
||||||
|
-50 -57 -50 -66 0 -10 -11 -20 -25 -23 -14 -4 -25 -14 -25 -23 0 -8 -18 -35
|
||||||
|
-40 -59 -22 -24 -40 -50 -40 -57 0 -7 -11 -24 -25 -37 -14 -13 -25 -30 -25
|
||||||
|
-37 0 -7 -18 -33 -40 -57 -22 -24 -40 -50 -40 -58 0 -8 -16 -30 -36 -49 -20
|
||||||
|
-18 -40 -45 -45 -57 -5 -13 -18 -26 -29 -29 -11 -3 -20 -12 -20 -19 0 -8 -18
|
||||||
|
-34 -40 -58 -22 -24 -40 -48 -40 -55 0 -6 -18 -31 -40 -55 -22 -24 -40 -47
|
||||||
|
-40 -51 0 -4 -13 -24 -30 -45 -16 -21 -30 -43 -30 -49 0 -6 -11 -16 -25 -21
|
||||||
|
-14 -5 -25 -17 -25 -28 0 -10 -18 -36 -40 -57 -22 -21 -40 -46 -40 -53 0 -8
|
||||||
|
-18 -34 -40 -58 -22 -24 -40 -48 -40 -54 0 -6 -11 -15 -25 -20 -14 -5 -25 -17
|
||||||
|
-25 -28 0 -10 -18 -36 -40 -57 -22 -21 -40 -46 -40 -55 -1 -8 -19 -33 -40 -55
|
||||||
|
-22 -22 -40 -46 -40 -54 0 -7 -11 -24 -24 -36 -13 -12 -27 -32 -31 -43 -3 -12
|
||||||
|
-13 -22 -21 -22 -8 0 -19 -12 -24 -26 -6 -14 -26 -42 -45 -62 -19 -20 -35 -41
|
||||||
|
-35 -45 0 -5 -18 -30 -40 -56 -22 -26 -40 -51 -40 -57 0 -5 -25 -36 -55 -68
|
||||||
|
-30 -33 -55 -64 -55 -70 0 -5 -23 -35 -50 -67 -28 -32 -50 -61 -50 -66 0 -4
|
||||||
|
-14 -23 -30 -42 -17 -18 -30 -38 -30 -43 0 -6 -29 -42 -65 -80 -36 -39 -65
|
||||||
|
-76 -65 -83 0 -6 -18 -31 -40 -56 -22 -24 -40 -49 -40 -55 0 -6 -11 -21 -25
|
||||||
|
-34 -14 -13 -25 -29 -25 -36 0 -8 -34 -51 -76 -96 -41 -46 -82 -97 -90 -115
|
||||||
|
-9 -17 -22 -34 -30 -37 -8 -3 -14 -14 -14 -24 0 -10 -18 -35 -39 -56 -22 -21
|
||||||
|
-42 -49 -45 -62 -4 -15 -14 -24 -26 -24 -12 0 -22 -9 -26 -24 -3 -13 -21 -39
|
||||||
|
-40 -57 -19 -18 -34 -39 -34 -46 0 -7 -18 -33 -40 -57 -22 -24 -40 -48 -40
|
||||||
|
-55 0 -6 -17 -30 -39 -54 -21 -23 -40 -51 -42 -62 -3 -12 -14 -21 -27 -23 -13
|
||||||
|
-2 -22 -10 -22 -21 0 -9 -13 -30 -30 -46 -16 -16 -30 -36 -30 -45 0 -9 -18
|
||||||
|
-34 -40 -55 -22 -21 -40 -45 -40 -52 0 -7 -29 -44 -65 -82 -36 -37 -65 -75
|
||||||
|
-65 -83 0 -8 -11 -25 -25 -38 -14 -13 -25 -29 -25 -37 0 -7 -28 -43 -63 -80
|
||||||
|
-34 -38 -73 -89 -85 -115 -13 -26 -32 -50 -42 -53 -11 -4 -20 -12 -20 -20 0
|
||||||
|
-7 -16 -30 -35 -51 -20 -22 -44 -55 -54 -74 -11 -19 -31 -46 -45 -59 -14 -14
|
||||||
|
-26 -30 -26 -36 0 -7 -10 -20 -21 -31 -12 -10 -28 -34 -36 -52 -8 -18 -27 -41
|
||||||
|
-43 -50 -16 -9 -32 -27 -35 -39 -4 -16 -13 -23 -30 -23 -22 0 -25 -4 -25 -38
|
||||||
|
0 -31 6 -43 33 -63 l32 -24 1085 -7 c597 -4 1245 -10 1441 -13 l356 -5 -1
|
||||||
|
-2403 c-1 -2613 -4 -2453 55 -3117 83 -936 216 -1664 399 -2180 28 -80 82
|
||||||
|
-236 121 -348 207 -609 408 -1047 676 -1472 47 -74 117 -187 156 -250 1152
|
||||||
|
-1888 2912 -3351 4957 -4118 877 -329 1569 -488 2485 -569 286 -25 1076 -25
|
||||||
|
1355 0 866 79 1485 217 2300 515 1626 595 3051 1729 4039 3212 802 1204 1254
|
||||||
|
2515 1341 3885 13 204 13 675 0 870 -55 827 -250 1636 -575 2385 -582 1341
|
||||||
|
-1603 2508 -2829 3235 -922 546 -1749 822 -2791 932 -246 25 -919 26 -1160 0
|
||||||
|
-629 -67 -1147 -196 -1665 -415 -208 -88 -613 -292 -780 -392 -1427 -857
|
||||||
|
-2424 -2256 -2744 -3850 -110 -550 -129 -1106 -55 -1645 193 -1405 995 -2696
|
||||||
|
2142 -3448 321 -211 711 -407 1052 -529 986 -354 1948 -363 2886 -27 650 232
|
||||||
|
1227 618 1670 1115 564 631 911 1388 1011 2204 20 159 16 602 -5 770 -82 626
|
||||||
|
-297 1162 -669 1668 -52 70 -116 159 -143 197 -193 277 -489 560 -791 758
|
||||||
|
-661 433 -1510 573 -2283 377 -392 -99 -753 -277 -1081 -530 -127 -98 -352
|
||||||
|
-320 -457 -450 -729 -902 -857 -2126 -330 -3155 141 -275 323 -520 553 -746
|
||||||
|
373 -365 813 -612 1315 -739 916 -232 1887 0 2614 625 l70 60 -45 -64 c-175
|
||||||
|
-249 -482 -557 -736 -738 -678 -485 -1535 -697 -2332 -577 -643 96 -1331 420
|
||||||
|
-1853 872 -641 555 -1087 1365 -1224 2227 -79 493 -51 974 86 1495 304 1154
|
||||||
|
1152 2185 2234 2715 612 300 1198 439 1855 438 392 0 687 -37 1065 -133 994
|
||||||
|
-254 1938 -865 2581 -1673 597 -750 939 -1560 1066 -2522 19 -148 22 -215 22
|
||||||
|
-525 0 -441 -22 -659 -110 -1055 -38 -169 -42 -185 -103 -390 -149 -498 -415
|
||||||
|
-1053 -723 -1513 -200 -298 -427 -572 -703 -847 -586 -587 -1266 -1026 -2032
|
||||||
|
-1313 -468 -176 -920 -285 -1398 -339 -224 -25 -831 -25 -1055 0 -789 88
|
||||||
|
-1430 277 -2145 632 -666 331 -1189 703 -1724 1230 -339 334 -583 627 -828
|
||||||
|
995 -198 297 -274 432 -378 665 -257 573 -457 1258 -579 1975 -41 241 -51 334
|
||||||
|
-71 650 -42 654 -43 776 -47 3105 l-3 2260 505 3 c316 1 508 6 514 12 7 7 395
|
||||||
|
10 1103 10 1057 0 1095 1 1114 19 30 28 24 105 -8 109 -14 2 -23 10 -23 20 0
|
||||||
|
9 -25 44 -55 77 -30 33 -55 65 -55 71 0 5 -22 35 -50 66 -27 31 -50 60 -50 65
|
||||||
|
0 5 -18 29 -40 53 -22 24 -40 48 -40 53 0 5 -18 30 -40 56 -22 26 -40 52 -40
|
||||||
|
57 0 6 -13 23 -30 39 -16 16 -30 37 -30 47 0 10 -10 20 -24 24 -13 3 -30 18
|
||||||
|
-37 32 -7 15 -26 43 -41 63 -15 20 -28 41 -28 45 0 5 -30 41 -65 79 -36 39
|
||||||
|
-65 75 -65 80 0 6 -18 31 -40 55 -22 24 -40 49 -40 55 0 6 -18 29 -40 50 -22
|
||||||
|
21 -40 46 -40 55 0 9 -11 27 -25 40 -14 13 -25 31 -25 39 0 9 -29 45 -65 81
|
||||||
|
-35 36 -65 72 -65 80 0 8 -25 42 -55 74 -30 33 -55 64 -55 71 0 6 -11 22 -24
|
||||||
|
34 -14 13 -26 33 -28 45 -2 13 -12 22 -25 24 -14 2 -23 10 -23 20 0 9 -18 35
|
||||||
|
-40 57 -21 22 -39 47 -40 55 0 9 -18 34 -40 55 -22 21 -40 45 -40 52 0 7 -13
|
||||||
|
28 -30 46 -16 19 -30 42 -30 50 0 9 -10 17 -22 19 -14 2 -24 11 -26 24 -2 11
|
||||||
|
-21 38 -42 59 -22 22 -40 46 -40 55 0 9 -18 34 -40 55 -22 21 -40 47 -40 56 0
|
||||||
|
10 -11 20 -25 23 -15 4 -25 14 -25 24 0 10 -18 36 -40 57 -22 21 -40 46 -40
|
||||||
|
53 0 8 -18 34 -40 58 -22 24 -40 50 -40 57 0 7 -11 24 -24 36 -13 13 -27 33
|
||||||
|
-30 44 -3 12 -40 56 -81 97 -41 41 -75 82 -75 91 0 9 -9 24 -21 35 -11 10 -27
|
||||||
|
33 -34 50 -7 18 -23 37 -34 44 -12 6 -21 19 -21 29 0 19 -39 61 -58 61 -7 0
|
||||||
|
-12 7 -12 15 0 9 -18 35 -40 59 -22 24 -40 50 -40 58 0 8 -13 27 -30 43 -16
|
||||||
|
16 -30 35 -30 42 0 7 -28 42 -63 79 -35 36 -72 85 -83 109 -10 24 -29 48 -41
|
||||||
|
54 -15 7 -23 21 -25 43 -2 23 -9 34 -22 36 -21 4 -55 40 -56 58 0 6 -11 21
|
||||||
|
-25 34 -14 13 -25 31 -25 40 0 18 -35 53 -62 63 -10 4 -18 15 -18 25 0 10 -11
|
||||||
|
29 -25 42 -14 13 -25 29 -25 35 0 6 -18 29 -40 50 -22 21 -40 46 -40 55 0 9
|
||||||
|
-18 34 -40 55 -22 21 -40 47 -40 57 0 11 -11 23 -25 28 -14 5 -25 16 -25 23 0
|
||||||
|
8 -13 27 -30 43 -16 16 -30 35 -30 43 0 7 -22 38 -50 68 -27 30 -50 61 -50 69
|
||||||
|
0 7 -13 20 -30 29 -23 12 -30 23 -30 44 0 20 -7 31 -25 39 -14 6 -25 17 -25
|
||||||
|
23 0 7 -18 31 -40 55 -22 24 -40 49 -40 55 0 7 -18 31 -40 55 -22 24 -40 50
|
||||||
|
-40 57 0 7 -11 24 -25 37 -14 13 -25 31 -25 40 0 9 -18 34 -40 55 -22 21 -40
|
||||||
|
46 -40 55 0 8 -29 45 -65 80 -36 35 -65 71 -65 80 0 9 -29 45 -65 80 -36 35
|
||||||
|
-65 72 -65 81 0 9 -7 22 -15 29 -8 7 -15 21 -15 31 0 12 -10 21 -25 25 -14 3
|
||||||
|
-25 13 -25 23 0 9 -18 35 -40 56 -22 21 -40 46 -40 55 0 9 -13 29 -30 45 -16
|
||||||
|
16 -30 37 -30 46 0 11 -9 19 -22 21 -13 2 -24 11 -27 23 -2 11 -21 39 -42 62
|
||||||
|
-22 24 -39 48 -39 55 -1 7 -19 31 -40 53 -22 22 -40 47 -40 55 -1 8 -30 44
|
||||||
|
-65 80 -36 36 -65 72 -65 80 0 9 -18 34 -40 55 -22 21 -40 46 -40 55 0 9 -11
|
||||||
|
27 -25 40 -14 13 -25 28 -25 34 -1 6 -30 43 -65 81 -36 39 -65 75 -65 81 0 6
|
||||||
|
-18 30 -40 54 -22 24 -40 47 -40 52 0 4 -31 8 -70 8 -43 0 -70 -4 -70 -11z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 7.5 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" width="676" height="676" viewBox="0 0 676 676" xmlns:xlink="http://www.w3.org/1999/xlink"><title>male_avatar</title><path d="M938,450a336.852,336.852,0,0,1-27.22,133.1L909.66,585.68A338.559,338.559,0,0,1,541.35,782.93q-3.045-.54-6.08-1.12a334.98111,334.98111,0,0,1-61.14-18.03q-4.815-1.935-9.56-4.01c-2.16-.94-4.32-1.91-6.46-2.91A338.41424,338.41424,0,0,1,262,450c0-186.67,151.33-338,338-338S938,263.33,938,450Z" transform="translate(-262 -112)" fill="#99191a"/><path d="M541.35,782.93q-3.045-.54-6.08-1.12c-1.32-38.31-5.85-116.94-21.30005-199.29C505.52,537.45,493.79,491.25,477.52,449.95a412.60387,412.60387,0,0,0-19.07-41.84c-16.44-31.05-36.38-57.19-60.56-74.9l3.56-4.86q30.165,22.11,54.22,62.08,7.215,11.97,13.86005,25.54,7.125,14.52,13.59,30.83,4.125,10.38,7.97,21.48,16.74,48.195,28.46,109.98,2.59506,13.65,4.94,27.97C536.6,680.2,540.25,748.59,541.35,782.93Z" transform="translate(-262 -112)" opacity="0.2"/><path d="M464.57,759.77c-2.16-.94-4.32-1.91-6.46-2.91-2.09-22.7-5.93-50.86-12.95-77.59A254.55666,254.55666,0,0,0,433.35,644.07c-8.01-18.75-18.38-34.69-31.79-44.52l3.56-4.85c14.04,10.28,24.87,26.53,33.24,45.54,9.43,21.42,15.72,46.35,19.91,70.17C461.38,728.1,463.34,745.19,464.57,759.77Z" transform="translate(-262 -112)" opacity="0.2"/><circle cx="102.26174" cy="190.98167" r="30.08857" opacity="0.2"/><circle cx="111.9514" cy="449.99083" r="30.08857" opacity="0.2"/><path d="M483.71449,353.52139c-6.38046,35.99732,7.70456,68.59225,7.70456,68.59225s24.42979-25.76825,30.81025-61.76557-7.70457-68.59225-7.70457-68.59225S490.09494,317.52407,483.71449,353.52139Z" transform="translate(-262 -112)" opacity="0.2"/><path d="M383.71766,438.97122c34.33494,12.555,68.83676,4.498,68.83676,4.498s-21.16612-28.41279-55.50106-40.96784-68.83675-4.498-68.83675-4.498S349.38272,426.41617,383.71766,438.97122Z" transform="translate(-262 -112)" opacity="0.2"/><path d="M377.89534,668.333c24.066,8.80008,48.28314,3.0594,48.28314,3.0594S411.37687,651.384,387.31086,642.5839s-48.28314-3.0594-48.28314-3.0594S353.82933,659.53292,377.89534,668.333Z" transform="translate(-262 -112)" opacity="0.2"/><circle cx="337.30608" cy="281.0788" r="131.77014" fill="#d0cde1"/><path d="M547.83337,493.96531s16.47127,78.23852,16.47127,86.47415,78.23852,45.296,78.23852,45.296L712.546,613.382,737.253,539.26129s-41.17817-61.76725-41.17817-86.47415Z" transform="translate(-262 -112)" fill="#d0cde1"/><path d="M910.78,583.1,909.66,585.68A338.559,338.559,0,0,1,541.35,782.93q-3.045-.54-6.08-1.12a334.98111,334.98111,0,0,1-61.14-18.03q-4.815-1.935-9.56-4.01c-2.16-.94-4.32-1.91-6.46-2.91a337.59273,337.59273,0,0,1-55.25-32.28l-15.62-45.31,8.78-6.69995,18.06-13.79,19.27-14.71,5.01-3.83,75.61-57.72,5.58-4.26,39.3-30,.01-.01s42.5,69.25,104.27,48.66,60.42-79.63,60.42-79.63Z" transform="translate(-262 -112)" fill="#2f2e41"/><path d="M485.03538,286.916s41.83653-90.64581,122.02321-69.72755,125.50958,52.29566,128.996,83.67306-1.74319,78.44348-1.74319,78.44348-8.716-64.498-64.498-50.55247-142.94147,3.48638-142.94147,3.48638L512.9264,457.74849s-15.6887-22.66145-33.12058-8.71594S429.25335,314.807,485.03538,286.916Z" transform="translate(-262 -112)" fill="#2f2e41"/><path d="M474.13,763.78q-4.815-1.935-9.56-4.01c-2.16-.94-4.32-1.91-6.46-2.91a338.835,338.835,0,0,1-87.59-58.7c9.19-12.52,16.72-18.89,16.72-18.89h61.77l9.26,31.14Z" transform="translate(-262 -112)" fill="#2f2e41"/><path d="M856.67,576.32l52.99,9.36A337.94434,337.94434,0,0,1,852.9,674.25Z" transform="translate(-262 -112)" fill="#2f2e41"/></svg>
|
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 12 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 122.88 97.7" style="enable-background:new 0 0 122.88 97.7" xml:space="preserve"><style type="text/css">.st0{fill-rule:evenodd;clip-rule:evenodd;}</style><g><path class="st0" d="M23.7,47.26c2.89,5.22,6.22,10.22,10.56,14.8C38.61,66.66,44,70.84,51,74.41c0.52,0.26,1.01,0.26,1.45,0.08 c0.67-0.26,1.34-0.8,2.02-1.47c0.52-0.52,1.16-1.34,1.84-2.25c2.69-3.53,6.01-7.93,10.72-5.74c0.1,0.05,0.18,0.1,0.29,0.16 l15.67,9.01c0.05,0.02,0.1,0.08,0.16,0.1c2.07,1.42,2.92,3.61,2.95,6.09c0,2.53-0.93,5.37-2.3,7.77c-1.81,3.18-4.46,5.27-7.54,6.67 c-2.92,1.34-6.17,2.07-9.3,2.53c-4.91,0.72-9.5,0.26-14.21-1.19c-4.6-1.42-9.22-3.77-14.28-6.9l-0.36-0.23 c-2.33-1.45-4.83-3-7.29-4.83c-9-6.79-18.17-16.6-24.14-27.4c-5.01-9.07-7.75-18.85-6.25-28.17c0.83-5.12,3.02-9.76,6.84-12.84 c3.33-2.69,7.83-4.15,13.63-3.64c0.67,0.05,1.26,0.44,1.57,1.01l10.05,16.99c1.47,1.91,1.65,3.8,0.85,5.68 c-0.67,1.55-2.02,2.97-3.84,4.31c-0.54,0.46-1.19,0.93-1.86,1.42c-2.25,1.63-4.81,3.51-3.92,5.74L23.7,47.26L23.7,47.26L23.7,47.26 z M51.68,25.64l5.79-0.4c0.12,1.03,0.38,1.82,0.77,2.35c0.63,0.87,1.52,1.3,2.69,1.3c0.87,0,1.54-0.22,2.01-0.67 c0.47-0.45,0.7-0.96,0.7-1.55c0-0.56-0.22-1.06-0.67-1.5c-0.45-0.44-1.49-0.86-3.12-1.25c-2.67-0.66-4.57-1.53-5.71-2.61 c-1.15-1.09-1.72-2.47-1.72-4.16c0-1.11,0.29-2.15,0.88-3.14c0.59-0.98,1.47-1.76,2.65-2.32c1.18-0.56,2.79-0.84,4.84-0.84 c2.52,0,4.44,0.51,5.76,1.54c1.32,1.02,2.1,2.66,2.36,4.89l-5.74,0.37c-0.15-0.97-0.47-1.68-0.96-2.12 c-0.49-0.44-1.16-0.66-2.02-0.66c-0.71,0-1.24,0.17-1.6,0.49c-0.36,0.33-0.54,0.73-0.54,1.2c0,0.34,0.15,0.65,0.44,0.92 c0.29,0.29,0.97,0.55,2.04,0.79c2.66,0.63,4.56,1.26,5.71,1.91c1.15,0.64,1.99,1.44,2.51,2.39c0.52,0.95,0.78,2.01,0.78,3.19 c0,1.38-0.35,2.66-1.05,3.82c-0.7,1.17-1.68,2.05-2.93,2.65c-1.25,0.6-2.83,0.9-4.74,0.9c-3.35,0-5.67-0.71-6.96-2.12 C52.58,29.61,51.85,27.81,51.68,25.64L51.68,25.64z M71.84,22c0-3.52,0.89-6.25,2.69-8.22c1.79-1.96,4.29-2.94,7.48-2.94 c3.28,0,5.8,0.96,7.58,2.89c1.77,1.92,2.66,4.62,2.66,8.09c0,2.52-0.39,4.59-1.16,6.2c-0.78,1.61-1.89,2.87-3.36,3.76 c-1.46,0.9-3.29,1.35-5.47,1.35c-2.22,0-4.06-0.39-5.52-1.16c-1.45-0.78-2.64-2-3.54-3.68C72.29,26.62,71.84,24.52,71.84,22 L71.84,22z M77.93,22.03c0,2.18,0.37,3.74,1.11,4.69c0.74,0.95,1.75,1.43,3.02,1.43c1.31,0,2.32-0.47,3.04-1.4 c0.72-0.93,1.08-2.61,1.08-5.01c0-2.03-0.38-3.51-1.12-4.45c-0.75-0.94-1.77-1.41-3.04-1.41c-1.22,0-2.21,0.48-2.95,1.43 C78.3,18.26,77.93,19.84,77.93,22.03L77.93,22.03z M94.46,25.64l5.79-0.4c0.12,1.03,0.38,1.82,0.77,2.35 c0.63,0.87,1.52,1.3,2.69,1.3c0.87,0,1.54-0.22,2.01-0.67c0.47-0.45,0.7-0.96,0.7-1.55c0-0.56-0.22-1.06-0.67-1.5 c-0.45-0.44-1.49-0.86-3.12-1.25c-2.67-0.66-4.57-1.53-5.71-2.61c-1.15-1.09-1.72-2.47-1.72-4.16c0-1.11,0.29-2.15,0.88-3.14 c0.59-0.98,1.47-1.76,2.65-2.32c1.18-0.56,2.79-0.84,4.84-0.84c2.52,0,4.44,0.51,5.76,1.54c1.32,1.02,2.1,2.66,2.36,4.89 l-5.74,0.37c-0.15-0.97-0.47-1.68-0.96-2.12c-0.49-0.44-1.16-0.66-2.02-0.66c-0.71,0-1.24,0.17-1.6,0.49 c-0.36,0.33-0.54,0.73-0.54,1.2c0,0.34,0.15,0.65,0.44,0.92c0.29,0.29,0.97,0.55,2.04,0.79c2.66,0.63,4.56,1.26,5.71,1.91 c1.15,0.64,1.99,1.44,2.51,2.39c0.52,0.95,0.78,2.01,0.78,3.19c0,1.38-0.35,2.66-1.05,3.82c-0.7,1.17-1.68,2.05-2.93,2.65 c-1.25,0.6-2.83,0.9-4.74,0.9c-3.35,0-5.67-0.71-6.96-2.12C95.37,29.61,94.63,27.81,94.46,25.64L94.46,25.64z M51.19,0 c-2.8,0-5.19,0.98-7.18,2.95c-1.99,1.97-2.95,4.36-2.95,7.18v24.71c0,2.82,0.98,5.22,2.95,7.18s4.36,2.95,7.18,2.95h15.24 c-0.58,2.24-1.3,4.36-2.19,6.36c-0.88,2.02-2.37,3.94-4.43,5.77c3.96-1.03,7.48-2.57,10.59-4.61c3.09-2.02,5.77-4.54,7.99-7.53 h34.36c2.8,0,5.19-1.01,7.18-2.95c1.99-1.97,2.95-4.36,2.95-7.19v-24.7c0-2.8-0.98-5.19-2.95-7.18C117.96,0.96,115.56,0,112.74,0 C103.74,0,60.19,0,51.19,0L51.19,0L51.19,0z"/></g></svg>
|
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 7.0 KiB |
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 8.0 KiB |
|
@ -0,0 +1,34 @@
|
||||||
|
**/dgph
|
||||||
|
*.mode1v3
|
||||||
|
*.mode2v3
|
||||||
|
*.moved-aside
|
||||||
|
*.pbxuser
|
||||||
|
*.perspectivev3
|
||||||
|
**/*sync/
|
||||||
|
.sconsign.dblite
|
||||||
|
.tags*
|
||||||
|
**/.vagrant/
|
||||||
|
**/DerivedData/
|
||||||
|
Icon?
|
||||||
|
**/Pods/
|
||||||
|
**/.symlinks/
|
||||||
|
profile
|
||||||
|
xcuserdata
|
||||||
|
**/.generated/
|
||||||
|
Flutter/App.framework
|
||||||
|
Flutter/Flutter.framework
|
||||||
|
Flutter/Flutter.podspec
|
||||||
|
Flutter/Generated.xcconfig
|
||||||
|
Flutter/ephemeral/
|
||||||
|
Flutter/app.flx
|
||||||
|
Flutter/app.zip
|
||||||
|
Flutter/flutter_assets/
|
||||||
|
Flutter/flutter_export_environment.sh
|
||||||
|
ServiceDefinitions.json
|
||||||
|
Runner/GeneratedPluginRegistrant.*
|
||||||
|
|
||||||
|
# Exceptions to above rules.
|
||||||
|
!default.mode1v3
|
||||||
|
!default.mode2v3
|
||||||
|
!default.pbxuser
|
||||||
|
!default.perspectivev3
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>en</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>App</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>io.flutter.flutter.app</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>App</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>FMWK</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>1.0</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>1.0</string>
|
||||||
|
<key>MinimumOSVersion</key>
|
||||||
|
<string>11.0</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
|
@ -0,0 +1 @@
|
||||||
|
#include "Generated.xcconfig"
|
|
@ -0,0 +1 @@
|
||||||
|
#include "Generated.xcconfig"
|
|
@ -0,0 +1,481 @@
|
||||||
|
// !$*UTF8*$!
|
||||||
|
{
|
||||||
|
archiveVersion = 1;
|
||||||
|
classes = {
|
||||||
|
};
|
||||||
|
objectVersion = 50;
|
||||||
|
objects = {
|
||||||
|
|
||||||
|
/* Begin PBXBuildFile section */
|
||||||
|
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
|
||||||
|
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
|
||||||
|
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
|
||||||
|
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
|
||||||
|
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
|
||||||
|
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
|
||||||
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
|
/* Begin PBXCopyFilesBuildPhase section */
|
||||||
|
9705A1C41CF9048500538489 /* Embed Frameworks */ = {
|
||||||
|
isa = PBXCopyFilesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
dstPath = "";
|
||||||
|
dstSubfolderSpec = 10;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
name = "Embed Frameworks";
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXCopyFilesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXFileReference section */
|
||||||
|
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
|
||||||
|
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
|
||||||
|
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
|
||||||
|
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||||
|
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||||
|
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
|
||||||
|
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
|
||||||
|
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
|
||||||
|
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||||
|
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||||
|
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||||
|
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
97C146EB1CF9000F007C117D /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXGroup section */
|
||||||
|
9740EEB11CF90186004384FC /* Flutter */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
|
||||||
|
9740EEB21CF90195004384FC /* Debug.xcconfig */,
|
||||||
|
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
|
||||||
|
9740EEB31CF90195004384FC /* Generated.xcconfig */,
|
||||||
|
);
|
||||||
|
name = Flutter;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
97C146E51CF9000F007C117D = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
9740EEB11CF90186004384FC /* Flutter */,
|
||||||
|
97C146F01CF9000F007C117D /* Runner */,
|
||||||
|
97C146EF1CF9000F007C117D /* Products */,
|
||||||
|
);
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
97C146EF1CF9000F007C117D /* Products */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
97C146EE1CF9000F007C117D /* Runner.app */,
|
||||||
|
);
|
||||||
|
name = Products;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
97C146F01CF9000F007C117D /* Runner */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
97C146FA1CF9000F007C117D /* Main.storyboard */,
|
||||||
|
97C146FD1CF9000F007C117D /* Assets.xcassets */,
|
||||||
|
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
|
||||||
|
97C147021CF9000F007C117D /* Info.plist */,
|
||||||
|
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
|
||||||
|
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
|
||||||
|
74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
|
||||||
|
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
|
||||||
|
);
|
||||||
|
path = Runner;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
/* End PBXGroup section */
|
||||||
|
|
||||||
|
/* Begin PBXNativeTarget section */
|
||||||
|
97C146ED1CF9000F007C117D /* Runner */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
|
||||||
|
buildPhases = (
|
||||||
|
9740EEB61CF901F6004384FC /* Run Script */,
|
||||||
|
97C146EA1CF9000F007C117D /* Sources */,
|
||||||
|
97C146EB1CF9000F007C117D /* Frameworks */,
|
||||||
|
97C146EC1CF9000F007C117D /* Resources */,
|
||||||
|
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
||||||
|
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
);
|
||||||
|
name = Runner;
|
||||||
|
productName = Runner;
|
||||||
|
productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
|
||||||
|
productType = "com.apple.product-type.application";
|
||||||
|
};
|
||||||
|
/* End PBXNativeTarget section */
|
||||||
|
|
||||||
|
/* Begin PBXProject section */
|
||||||
|
97C146E61CF9000F007C117D /* Project object */ = {
|
||||||
|
isa = PBXProject;
|
||||||
|
attributes = {
|
||||||
|
LastUpgradeCheck = 1300;
|
||||||
|
ORGANIZATIONNAME = "";
|
||||||
|
TargetAttributes = {
|
||||||
|
97C146ED1CF9000F007C117D = {
|
||||||
|
CreatedOnToolsVersion = 7.3.1;
|
||||||
|
LastSwiftMigration = 1100;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
|
||||||
|
compatibilityVersion = "Xcode 9.3";
|
||||||
|
developmentRegion = en;
|
||||||
|
hasScannedForEncodings = 0;
|
||||||
|
knownRegions = (
|
||||||
|
en,
|
||||||
|
Base,
|
||||||
|
);
|
||||||
|
mainGroup = 97C146E51CF9000F007C117D;
|
||||||
|
productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
|
||||||
|
projectDirPath = "";
|
||||||
|
projectRoot = "";
|
||||||
|
targets = (
|
||||||
|
97C146ED1CF9000F007C117D /* Runner */,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
/* End PBXProject section */
|
||||||
|
|
||||||
|
/* Begin PBXResourcesBuildPhase section */
|
||||||
|
97C146EC1CF9000F007C117D /* Resources */ = {
|
||||||
|
isa = PBXResourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
|
||||||
|
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
|
||||||
|
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
|
||||||
|
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXShellScriptBuildPhase section */
|
||||||
|
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
);
|
||||||
|
name = "Thin Binary";
|
||||||
|
outputPaths = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
|
||||||
|
};
|
||||||
|
9740EEB61CF901F6004384FC /* Run Script */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
);
|
||||||
|
name = "Run Script";
|
||||||
|
outputPaths = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
|
||||||
|
};
|
||||||
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
97C146EA1CF9000F007C117D /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
|
||||||
|
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXVariantGroup section */
|
||||||
|
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
97C146FB1CF9000F007C117D /* Base */,
|
||||||
|
);
|
||||||
|
name = Main.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
97C147001CF9000F007C117D /* Base */,
|
||||||
|
);
|
||||||
|
name = LaunchScreen.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
/* End PBXVariantGroup section */
|
||||||
|
|
||||||
|
/* Begin XCBuildConfiguration section */
|
||||||
|
249021D3217E4FDB00AE95B9 /* Profile */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||||
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_COMMA = YES;
|
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
|
COPY_PHASE_STRIP = NO;
|
||||||
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
||||||
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
|
SDKROOT = iphoneos;
|
||||||
|
SUPPORTED_PLATFORMS = iphoneos;
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
VALIDATE_PRODUCT = YES;
|
||||||
|
};
|
||||||
|
name = Profile;
|
||||||
|
};
|
||||||
|
249021D4217E4FDB00AE95B9 /* Profile */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||||
|
ENABLE_BITCODE = NO;
|
||||||
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"@executable_path/Frameworks",
|
||||||
|
);
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = com.example.unit2;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
|
};
|
||||||
|
name = Profile;
|
||||||
|
};
|
||||||
|
97C147031CF9000F007C117D /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||||
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_COMMA = YES;
|
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
|
COPY_PHASE_STRIP = NO;
|
||||||
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
ENABLE_TESTABILITY = YES;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
|
"DEBUG=1",
|
||||||
|
"$(inherited)",
|
||||||
|
);
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
||||||
|
MTL_ENABLE_DEBUG_INFO = YES;
|
||||||
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
|
SDKROOT = iphoneos;
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
97C147041CF9000F007C117D /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||||
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_COMMA = YES;
|
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
|
COPY_PHASE_STRIP = NO;
|
||||||
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
||||||
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
|
SDKROOT = iphoneos;
|
||||||
|
SUPPORTED_PLATFORMS = iphoneos;
|
||||||
|
SWIFT_COMPILATION_MODE = wholemodule;
|
||||||
|
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
VALIDATE_PRODUCT = YES;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
97C147061CF9000F007C117D /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||||
|
ENABLE_BITCODE = NO;
|
||||||
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"@executable_path/Frameworks",
|
||||||
|
);
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = com.example.unit2;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
97C147071CF9000F007C117D /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||||
|
ENABLE_BITCODE = NO;
|
||||||
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"@executable_path/Frameworks",
|
||||||
|
);
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = com.example.unit2;
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
|
SWIFT_VERSION = 5.0;
|
||||||
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
|
/* Begin XCConfigurationList section */
|
||||||
|
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
97C147031CF9000F007C117D /* Debug */,
|
||||||
|
97C147041CF9000F007C117D /* Release */,
|
||||||
|
249021D3217E4FDB00AE95B9 /* Profile */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
97C147061CF9000F007C117D /* Debug */,
|
||||||
|
97C147071CF9000F007C117D /* Release */,
|
||||||
|
249021D4217E4FDB00AE95B9 /* Profile */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
/* End XCConfigurationList section */
|
||||||
|
};
|
||||||
|
rootObject = 97C146E61CF9000F007C117D /* Project object */;
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Workspace
|
||||||
|
version = "1.0">
|
||||||
|
<FileRef
|
||||||
|
location = "self:">
|
||||||
|
</FileRef>
|
||||||
|
</Workspace>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>IDEDidComputeMac32BitWarning</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>PreviewsEnabled</key>
|
||||||
|
<false/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
|
@ -0,0 +1,87 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Scheme
|
||||||
|
LastUpgradeVersion = "1300"
|
||||||
|
version = "1.3">
|
||||||
|
<BuildAction
|
||||||
|
parallelizeBuildables = "YES"
|
||||||
|
buildImplicitDependencies = "YES">
|
||||||
|
<BuildActionEntries>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||||
|
BuildableName = "Runner.app"
|
||||||
|
BlueprintName = "Runner"
|
||||||
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
|
</BuildActionEntries>
|
||||||
|
</BuildAction>
|
||||||
|
<TestAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||||
|
<MacroExpansion>
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||||
|
BuildableName = "Runner.app"
|
||||||
|
BlueprintName = "Runner"
|
||||||
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</MacroExpansion>
|
||||||
|
<Testables>
|
||||||
|
</Testables>
|
||||||
|
</TestAction>
|
||||||
|
<LaunchAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
launchStyle = "0"
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
|
debugDocumentVersioning = "YES"
|
||||||
|
debugServiceExtension = "internal"
|
||||||
|
allowLocationSimulation = "YES">
|
||||||
|
<BuildableProductRunnable
|
||||||
|
runnableDebuggingMode = "0">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||||
|
BuildableName = "Runner.app"
|
||||||
|
BlueprintName = "Runner"
|
||||||
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildableProductRunnable>
|
||||||
|
</LaunchAction>
|
||||||
|
<ProfileAction
|
||||||
|
buildConfiguration = "Profile"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
savedToolIdentifier = ""
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
debugDocumentVersioning = "YES">
|
||||||
|
<BuildableProductRunnable
|
||||||
|
runnableDebuggingMode = "0">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||||
|
BuildableName = "Runner.app"
|
||||||
|
BlueprintName = "Runner"
|
||||||
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildableProductRunnable>
|
||||||
|
</ProfileAction>
|
||||||
|
<AnalyzeAction
|
||||||
|
buildConfiguration = "Debug">
|
||||||
|
</AnalyzeAction>
|
||||||
|
<ArchiveAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
revealArchiveInOrganizer = "YES">
|
||||||
|
</ArchiveAction>
|
||||||
|
</Scheme>
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Workspace
|
||||||
|
version = "1.0">
|
||||||
|
<FileRef
|
||||||
|
location = "group:Runner.xcodeproj">
|
||||||
|
</FileRef>
|
||||||
|
</Workspace>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>IDEDidComputeMac32BitWarning</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>PreviewsEnabled</key>
|
||||||
|
<false/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
|
@ -0,0 +1,13 @@
|
||||||
|
import UIKit
|
||||||
|
import Flutter
|
||||||
|
|
||||||
|
@UIApplicationMain
|
||||||
|
@objc class AppDelegate: FlutterAppDelegate {
|
||||||
|
override func application(
|
||||||
|
_ application: UIApplication,
|
||||||
|
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
|
||||||
|
) -> Bool {
|
||||||
|
GeneratedPluginRegistrant.register(with: self)
|
||||||
|
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,122 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"size" : "20x20",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"filename" : "Icon-App-20x20@2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "20x20",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"filename" : "Icon-App-20x20@3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "29x29",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"filename" : "Icon-App-29x29@1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "29x29",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"filename" : "Icon-App-29x29@2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "29x29",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"filename" : "Icon-App-29x29@3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "40x40",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"filename" : "Icon-App-40x40@2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "40x40",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"filename" : "Icon-App-40x40@3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "60x60",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"filename" : "Icon-App-60x60@2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "60x60",
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"filename" : "Icon-App-60x60@3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "20x20",
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"filename" : "Icon-App-20x20@1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "20x20",
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"filename" : "Icon-App-20x20@2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "29x29",
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"filename" : "Icon-App-29x29@1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "29x29",
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"filename" : "Icon-App-29x29@2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "40x40",
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"filename" : "Icon-App-40x40@1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "40x40",
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"filename" : "Icon-App-40x40@2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "76x76",
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"filename" : "Icon-App-76x76@1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "76x76",
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"filename" : "Icon-App-76x76@2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "83.5x83.5",
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"filename" : "Icon-App-83.5x83.5@2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size" : "1024x1024",
|
||||||
|
"idiom" : "ios-marketing",
|
||||||
|
"filename" : "Icon-App-1024x1024@1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 564 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 3.5 KiB |
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "LaunchImage.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "LaunchImage@2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "LaunchImage@3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 68 B |
After Width: | Height: | Size: 68 B |
After Width: | Height: | Size: 68 B |
|
@ -0,0 +1,5 @@
|
||||||
|
# Launch Screen Assets
|
||||||
|
|
||||||
|
You can customize the launch screen with your own desired assets by replacing the image files in this directory.
|
||||||
|
|
||||||
|
You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
|
|
@ -0,0 +1,37 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||||
|
<dependencies>
|
||||||
|
<deployment identifier="iOS"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
|
||||||
|
</dependencies>
|
||||||
|
<scenes>
|
||||||
|
<!--View Controller-->
|
||||||
|
<scene sceneID="EHf-IW-A2E">
|
||||||
|
<objects>
|
||||||
|
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
||||||
|
<layoutGuides>
|
||||||
|
<viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
|
||||||
|
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
|
||||||
|
</layoutGuides>
|
||||||
|
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
|
||||||
|
</imageView>
|
||||||
|
</subviews>
|
||||||
|
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
|
||||||
|
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
|
||||||
|
</constraints>
|
||||||
|
</view>
|
||||||
|
</viewController>
|
||||||
|
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
|
</objects>
|
||||||
|
<point key="canvasLocation" x="53" y="375"/>
|
||||||
|
</scene>
|
||||||
|
</scenes>
|
||||||
|
<resources>
|
||||||
|
<image name="LaunchImage" width="168" height="185"/>
|
||||||
|
</resources>
|
||||||
|
</document>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
|
||||||
|
<dependencies>
|
||||||
|
<deployment identifier="iOS"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
|
||||||
|
</dependencies>
|
||||||
|
<scenes>
|
||||||
|
<!--Flutter View Controller-->
|
||||||
|
<scene sceneID="tne-QT-ifu">
|
||||||
|
<objects>
|
||||||
|
<viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
|
||||||
|
<layoutGuides>
|
||||||
|
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
|
||||||
|
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
|
||||||
|
</layoutGuides>
|
||||||
|
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||||
|
</view>
|
||||||
|
</viewController>
|
||||||
|
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
|
||||||
|
</objects>
|
||||||
|
</scene>
|
||||||
|
</scenes>
|
||||||
|
</document>
|
|
@ -0,0 +1,51 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||||
|
<key>CFBundleDisplayName</key>
|
||||||
|
<string>Unit2</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>unit2</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>$(FLUTTER_BUILD_NAME)</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>$(FLUTTER_BUILD_NUMBER)</string>
|
||||||
|
<key>LSRequiresIPhoneOS</key>
|
||||||
|
<true/>
|
||||||
|
<key>UILaunchStoryboardName</key>
|
||||||
|
<string>LaunchScreen</string>
|
||||||
|
<key>UIMainStoryboardFile</key>
|
||||||
|
<string>Main</string>
|
||||||
|
<key>UISupportedInterfaceOrientations</key>
|
||||||
|
<array>
|
||||||
|
<string>UIInterfaceOrientationPortrait</string>
|
||||||
|
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||||
|
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||||
|
</array>
|
||||||
|
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||||
|
<array>
|
||||||
|
<string>UIInterfaceOrientationPortrait</string>
|
||||||
|
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||||
|
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||||
|
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||||
|
</array>
|
||||||
|
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||||
|
<false/>
|
||||||
|
<key>CADisableMinimumFrameDurationOnPhone</key>
|
||||||
|
<true/>
|
||||||
|
<key>UIApplicationSupportsIndirectInputEvents</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
|
@ -0,0 +1 @@
|
||||||
|
#import "GeneratedPluginRegistrant.h"
|
|
@ -0,0 +1,64 @@
|
||||||
|
import 'package:barcode_scan2/barcode_scan2.dart';
|
||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:unit2/model/login_data/user_info/user_data.dart';
|
||||||
|
import 'package:unit2/model/login_data/version_info.dart';
|
||||||
|
import 'package:unit2/sevices/login_service/auth_service.dart';
|
||||||
|
|
||||||
|
import '../../utils/scanner.dart';
|
||||||
|
|
||||||
|
part 'user_event.dart';
|
||||||
|
part 'user_state.dart';
|
||||||
|
|
||||||
|
class UserBloc extends Bloc<UserEvent, UserState> {
|
||||||
|
UserData? _userData;
|
||||||
|
VersionInfo? _versionInfo;
|
||||||
|
UserBloc() : super(UserInitial()) {
|
||||||
|
// this event is called when opening the app to check if
|
||||||
|
// there is new app version
|
||||||
|
on<GetApkVersion>((event, emit) async {
|
||||||
|
try {
|
||||||
|
emit(SplashScreen());
|
||||||
|
VersionInfo versionInfo = await AuthService.instance.getVersionInfo();
|
||||||
|
_versionInfo = versionInfo;
|
||||||
|
emit(VersionLoaded(versionInfo: _versionInfo));
|
||||||
|
} catch (e) {
|
||||||
|
emit(UserError(
|
||||||
|
message: e.toString(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
on<LoadVersion>((event, emit) {
|
||||||
|
emit(VersionLoaded(versionInfo: _versionInfo));
|
||||||
|
});
|
||||||
|
on<UserLogin>((event, emit) async {
|
||||||
|
try {
|
||||||
|
UserData? userData = await AuthService.instance
|
||||||
|
.webLogin(username: event.username, password: event.password);
|
||||||
|
_userData = userData;
|
||||||
|
emit(UserLoggedIn(userData: _userData));
|
||||||
|
} catch (e) {
|
||||||
|
emit(UserError(message: e.toString()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
on<UuidLogin>((event, emit) async {
|
||||||
|
try {
|
||||||
|
UserData? userData = await AuthService.instance
|
||||||
|
.qrLogin(uuid: event.uuid, password: event.password);
|
||||||
|
_userData = userData;
|
||||||
|
emit(UserLoggedIn(userData: _userData));
|
||||||
|
} catch (e) {
|
||||||
|
emit(UserError(message: e.toString()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
on<LoadLoggedInUser>((event, emit) {
|
||||||
|
emit(UserLoggedIn(userData: _userData));
|
||||||
|
});
|
||||||
|
on<GetUuid>((event, emit) async {
|
||||||
|
ScanResult result = await QRCodeBarCodeScanner.instance.scanner();
|
||||||
|
if (result.rawContent.toString().isNotEmpty) {
|
||||||
|
emit(UuidLoaded(uuid: result.rawContent.toString()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
part of 'user_bloc.dart';
|
||||||
|
|
||||||
|
abstract class UserEvent extends Equatable {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class GetApkVersion extends UserEvent {
|
||||||
|
GetApkVersion();
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UserLogin extends UserEvent {
|
||||||
|
final String? username;
|
||||||
|
final String? password;
|
||||||
|
UserLogin({this.username, this.password});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [username!, password!];
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadLoggedInUser extends UserEvent {
|
||||||
|
LoadLoggedInUser();
|
||||||
|
}
|
||||||
|
|
||||||
|
class GetUuid extends UserEvent {
|
||||||
|
GetUuid();
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadVersion extends UserEvent {}
|
||||||
|
|
||||||
|
class UuidLogin extends UserEvent {
|
||||||
|
final String? uuid;
|
||||||
|
final String? password;
|
||||||
|
UuidLogin({this.uuid, this.password});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [uuid!, password!];
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
part of 'user_bloc.dart';
|
||||||
|
|
||||||
|
abstract class UserState extends Equatable {
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UserInitial extends UserState {
|
||||||
|
UserInitial();
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UserLoading extends UserState {
|
||||||
|
final String? message;
|
||||||
|
UserLoading({this.message});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [message!];
|
||||||
|
}
|
||||||
|
|
||||||
|
class SplashScreen extends UserState {
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UserError extends UserState {
|
||||||
|
final String? message;
|
||||||
|
UserError({this.message});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
class UserLoggedIn extends UserState{
|
||||||
|
final UserData? userData;
|
||||||
|
UserLoggedIn({this.userData});
|
||||||
|
}
|
||||||
|
|
||||||
|
class VersionLoaded extends UserState {
|
||||||
|
final VersionInfo? versionInfo;
|
||||||
|
VersionLoaded({this.versionInfo});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [versionInfo!];
|
||||||
|
}
|
||||||
|
class UuidLoaded extends UserState{
|
||||||
|
final String uuid;
|
||||||
|
UuidLoaded({required this.uuid});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [uuid];
|
||||||
|
}
|
|
@ -0,0 +1,72 @@
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:device_preview/device_preview.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
import 'package:unit2/bloc/bloc/user_bloc.dart';
|
||||||
|
import 'package:unit2/utils/app_router.dart';
|
||||||
|
import 'package:unit2/utils/global_context.dart';
|
||||||
|
import 'package:unit2/utils/global_context.dart';
|
||||||
|
import './utils/router.dart';
|
||||||
|
import './utils/global.dart';
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
runApp(MyApp());
|
||||||
|
}
|
||||||
|
|
||||||
|
// void main() => runApp(
|
||||||
|
// DevicePreview(
|
||||||
|
// enabled: !kReleaseMode,
|
||||||
|
// builder: (context) => const MyApp(), // Wrap your app
|
||||||
|
// ),
|
||||||
|
// );
|
||||||
|
|
||||||
|
class MyApp extends StatelessWidget {
|
||||||
|
AppRouter? _appRouter;
|
||||||
|
|
||||||
|
// This widget is the root of your application.
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
_appRouter = AppRouter();
|
||||||
|
final mediaQueryData =
|
||||||
|
MediaQueryData.fromWindow(WidgetsBinding.instance.window);
|
||||||
|
screenWidth = mediaQueryData.size.width;
|
||||||
|
screenHeight = mediaQueryData.size.height;
|
||||||
|
blockSizeHorizontal = screenWidth / 100;
|
||||||
|
blockSizeVertical = screenHeight / 100;
|
||||||
|
safeAreaHorizontal =
|
||||||
|
mediaQueryData.padding.left + mediaQueryData.padding.right;
|
||||||
|
safeAreaVertical =
|
||||||
|
mediaQueryData.padding.top + mediaQueryData.padding.bottom;
|
||||||
|
safeBlockHorizontal = (screenWidth - safeAreaHorizontal) / 100;
|
||||||
|
safeBlockVertical = (screenHeight - safeAreaVertical) / 100;
|
||||||
|
|
||||||
|
return MultiBlocProvider(
|
||||||
|
providers: [
|
||||||
|
BlocProvider(
|
||||||
|
create: (_) => UserBloc(),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
child: MaterialApp(
|
||||||
|
navigatorKey: NavigationService.navigatorKey,
|
||||||
|
// useInheritedMediaQuery: true,
|
||||||
|
// locale: DevicePreview.locale(context),
|
||||||
|
// builder: DevicePreview.appBuilder,
|
||||||
|
// routeInformationParser: goRouter.routeInformationParser,
|
||||||
|
// routerDelegate: goRouter.routerDelegate,
|
||||||
|
// routeInformationProvider: goRouter.routeInformationProvider,
|
||||||
|
title: 'uniT2 - Universal Tracker and Tracer',
|
||||||
|
theme: ThemeData(
|
||||||
|
appBarTheme: const AppBarTheme(
|
||||||
|
systemOverlayStyle: SystemUiOverlayStyle(
|
||||||
|
statusBarBrightness: Brightness.dark,
|
||||||
|
statusBarColor: Colors.black),
|
||||||
|
),
|
||||||
|
fontFamily: 'LexendDeca',
|
||||||
|
),
|
||||||
|
debugShowCheckedModeBanner: false,
|
||||||
|
onGenerateRoute: _appRouter!.onGenerateRoute,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
import 'package:unit2/model/login_data/employee_info/head.dart';
|
||||||
|
|
||||||
|
class Department {
|
||||||
|
Department({
|
||||||
|
this.id,
|
||||||
|
this.code,
|
||||||
|
this.head,
|
||||||
|
this.name,
|
||||||
|
this.acronym,
|
||||||
|
this.parentStationId,
|
||||||
|
this.fullCode,
|
||||||
|
});
|
||||||
|
|
||||||
|
int? id;
|
||||||
|
String? code;
|
||||||
|
Head? head;
|
||||||
|
String? name;
|
||||||
|
int? acronym;
|
||||||
|
int? parentStationId;
|
||||||
|
String? fullCode;
|
||||||
|
|
||||||
|
factory Department.fromJson(Map<String, dynamic> json) => Department(
|
||||||
|
id: json["id"],
|
||||||
|
code: json["code"],
|
||||||
|
head:json["head"]==null?null:Head.fromJson(json["head"]),
|
||||||
|
name: json["name"],
|
||||||
|
acronym: json["acronym"],
|
||||||
|
parentStationId: json["parent_station_id"],
|
||||||
|
fullCode: json["full_code"],
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"id": id,
|
||||||
|
"code": code,
|
||||||
|
"head": head,
|
||||||
|
"name": name,
|
||||||
|
"acronym": acronym,
|
||||||
|
"parent_station_id": parentStationId,
|
||||||
|
"full_code": fullCode,
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,137 @@
|
||||||
|
import 'package:unit2/model/login_data/employee_info/office.dart';
|
||||||
|
|
||||||
|
class EmployeeInfo {
|
||||||
|
EmployeeInfo({
|
||||||
|
this.employeeId,
|
||||||
|
this.empid,
|
||||||
|
this.classid,
|
||||||
|
this.uuid,
|
||||||
|
this.office,
|
||||||
|
this.profile,
|
||||||
|
});
|
||||||
|
|
||||||
|
String? employeeId;
|
||||||
|
int? empid;
|
||||||
|
String? classid;
|
||||||
|
String? uuid;
|
||||||
|
Office? office;
|
||||||
|
Profile? profile;
|
||||||
|
|
||||||
|
factory EmployeeInfo.fromJson(Map<String, dynamic> json) => EmployeeInfo(
|
||||||
|
employeeId: json["employee_id"],
|
||||||
|
empid: json["empid"],
|
||||||
|
classid: json["classid"],
|
||||||
|
uuid: json["uuid"],
|
||||||
|
office: json["office"]==null?null:Office.fromJson(json["office"]),
|
||||||
|
profile: json["profile"]==null?null:Profile.fromJson(json["profile"]),
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"employee_id": employeeId,
|
||||||
|
"empid": empid,
|
||||||
|
"classid": classid,
|
||||||
|
"uuid": uuid,
|
||||||
|
"office": office!.toJson(),
|
||||||
|
"profile": profile!.toJson(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
class Profile {
|
||||||
|
Profile({
|
||||||
|
this.id,
|
||||||
|
this.sex,
|
||||||
|
this.gender,
|
||||||
|
this.deceased,
|
||||||
|
this.heightM,
|
||||||
|
this.birthdate,
|
||||||
|
this.esigPath,
|
||||||
|
this.fullName,
|
||||||
|
this.lastName,
|
||||||
|
this.weightKg,
|
||||||
|
this.bloodType,
|
||||||
|
this.firstName,
|
||||||
|
this.photoPath,
|
||||||
|
this.maidenName,
|
||||||
|
this.middleName,
|
||||||
|
this.uuidQrcode,
|
||||||
|
this.civilStatus,
|
||||||
|
this.titlePrefix,
|
||||||
|
this.titleSuffix,
|
||||||
|
this.showTitleId,
|
||||||
|
this.lastFullName,
|
||||||
|
this.nameExtension,
|
||||||
|
});
|
||||||
|
|
||||||
|
int? id;
|
||||||
|
String? sex;
|
||||||
|
String? gender;
|
||||||
|
bool? deceased;
|
||||||
|
double? heightM;
|
||||||
|
DateTime? birthdate;
|
||||||
|
String? esigPath;
|
||||||
|
String? fullName;
|
||||||
|
String? lastName;
|
||||||
|
int? weightKg;
|
||||||
|
String? bloodType;
|
||||||
|
String? firstName;
|
||||||
|
String? photoPath;
|
||||||
|
String? maidenName;
|
||||||
|
String? middleName;
|
||||||
|
String? uuidQrcode;
|
||||||
|
String? civilStatus;
|
||||||
|
String? titlePrefix;
|
||||||
|
String? titleSuffix;
|
||||||
|
bool? showTitleId;
|
||||||
|
String? lastFullName;
|
||||||
|
String? nameExtension;
|
||||||
|
|
||||||
|
factory Profile.fromJson(Map<String, dynamic> json) => Profile(
|
||||||
|
id: json["id"],
|
||||||
|
sex: json["sex"],
|
||||||
|
gender: json["gender"],
|
||||||
|
deceased: json["deceased"],
|
||||||
|
heightM: json["height_m"].toDouble(),
|
||||||
|
birthdate: DateTime.parse(json["birthdate"]),
|
||||||
|
esigPath: json["esig_path"],
|
||||||
|
fullName: json["full_name"],
|
||||||
|
lastName: json["last_name"],
|
||||||
|
weightKg: json["weight_kg"],
|
||||||
|
bloodType: json["blood_type"],
|
||||||
|
firstName: json["first_name"],
|
||||||
|
photoPath: json["photo_path"],
|
||||||
|
maidenName: json["maiden_name"],
|
||||||
|
middleName: json["middle_name"],
|
||||||
|
uuidQrcode: json["uuid_qrcode"],
|
||||||
|
civilStatus: json["civil_status"],
|
||||||
|
titlePrefix: json["title_prefix"],
|
||||||
|
titleSuffix: json["title_suffix"],
|
||||||
|
showTitleId: json["show_title_id"],
|
||||||
|
lastFullName: json["last_full_name"],
|
||||||
|
nameExtension: json["name_extension"],
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"id": id,
|
||||||
|
"sex": sex,
|
||||||
|
"gender": gender,
|
||||||
|
"deceased": deceased,
|
||||||
|
"height_m": heightM,
|
||||||
|
"birthdate":
|
||||||
|
"${birthdate!.year.toString().padLeft(4, '0')}-${birthdate!.month.toString().padLeft(2, '0')}-${birthdate!.day.toString().padLeft(2, '0')}",
|
||||||
|
"esig_path": esigPath,
|
||||||
|
"full_name": fullName,
|
||||||
|
"last_name": lastName,
|
||||||
|
"weight_kg": weightKg,
|
||||||
|
"blood_type": bloodType,
|
||||||
|
"first_name": firstName,
|
||||||
|
"photo_path": photoPath,
|
||||||
|
"maiden_name": maidenName,
|
||||||
|
"middle_name": middleName,
|
||||||
|
"uuid_qrcode": uuidQrcode,
|
||||||
|
"civil_status": civilStatus,
|
||||||
|
"title_prefix": titlePrefix,
|
||||||
|
"title_suffix": titleSuffix,
|
||||||
|
"show_title_id": showTitleId,
|
||||||
|
"last_full_name": lastFullName,
|
||||||
|
"name_extension": nameExtension,
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
|
||||||
|
class Head {
|
||||||
|
Head({
|
||||||
|
this.id,
|
||||||
|
this.title,
|
||||||
|
this.classid,
|
||||||
|
this.fullName,
|
||||||
|
this.personId,
|
||||||
|
this.employeeid,
|
||||||
|
this.officeposid,
|
||||||
|
this.lastFullName,
|
||||||
|
});
|
||||||
|
|
||||||
|
int? id;
|
||||||
|
String? title;
|
||||||
|
String? classid;
|
||||||
|
String? fullName;
|
||||||
|
int? personId;
|
||||||
|
String? employeeid;
|
||||||
|
int? officeposid;
|
||||||
|
String? lastFullName;
|
||||||
|
|
||||||
|
factory Head.fromJson(Map<String, dynamic> json) => Head(
|
||||||
|
id: json["id"],
|
||||||
|
title: json["title"],
|
||||||
|
classid: json["classid"],
|
||||||
|
fullName: json["full_name"],
|
||||||
|
personId: json["person_id"],
|
||||||
|
employeeid: json["employeeid"],
|
||||||
|
officeposid: json["officeposid"],
|
||||||
|
lastFullName: json["last_full_name"],
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"id": id,
|
||||||
|
"title": title,
|
||||||
|
"classid": classid,
|
||||||
|
"full_name": fullName,
|
||||||
|
"person_id": personId,
|
||||||
|
"employeeid": employeeid,
|
||||||
|
"officeposid": officeposid,
|
||||||
|
"last_full_name": lastFullName,
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
import 'department.dart';
|
||||||
|
import 'position_class.dart';
|
||||||
|
|
||||||
|
class Office {
|
||||||
|
Office({
|
||||||
|
this.unit,
|
||||||
|
this.section,
|
||||||
|
this.division,
|
||||||
|
this.posstatid,
|
||||||
|
this.department,
|
||||||
|
this.stationId,
|
||||||
|
this.positionClass,
|
||||||
|
this.positionSpecificrole,
|
||||||
|
});
|
||||||
|
|
||||||
|
Department? unit;
|
||||||
|
Department? section;
|
||||||
|
Department? division;
|
||||||
|
int? posstatid;
|
||||||
|
Department? department;
|
||||||
|
int? stationId;
|
||||||
|
PositionClass? positionClass;
|
||||||
|
PositionSpecificrole? positionSpecificrole;
|
||||||
|
|
||||||
|
factory Office.fromJson(Map<String, dynamic> json) => Office(
|
||||||
|
unit: json["unit"]==null?null:Department.fromJson(json["unit"]),
|
||||||
|
section: json["section"]==null?null:Department.fromJson(json["section"]),
|
||||||
|
division: json["division"] ==null? null:Department.fromJson(json["division"]),
|
||||||
|
posstatid: json["posstatid"],
|
||||||
|
department: json["department"]==null?null:Department.fromJson(json["department"]),
|
||||||
|
stationId: json["station_id"],
|
||||||
|
positionClass: json["position_class"]==null?null:PositionClass.fromJson(json["position_class"]),
|
||||||
|
positionSpecificrole:json["position_specificrole"]==null?null:
|
||||||
|
PositionSpecificrole.fromJson(json["position_specificrole"]),
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"unit": unit!.toJson(),
|
||||||
|
"section": section!.toJson(),
|
||||||
|
"division": division!.toJson(),
|
||||||
|
"posstatid": posstatid,
|
||||||
|
"department": department!.toJson(),
|
||||||
|
"station_id": stationId,
|
||||||
|
"position_class": positionClass!.toJson(),
|
||||||
|
"position_specificrole": positionSpecificrole!.toJson(),
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,65 @@
|
||||||
|
class PositionClass {
|
||||||
|
PositionClass({
|
||||||
|
this.level,
|
||||||
|
this.classid,
|
||||||
|
this.groupcode,
|
||||||
|
this.salarygrade,
|
||||||
|
this.classSuffix,
|
||||||
|
this.classTitleid,
|
||||||
|
this.qualificationid,
|
||||||
|
this.competencyModelId,
|
||||||
|
});
|
||||||
|
|
||||||
|
int? level;
|
||||||
|
String? classid;
|
||||||
|
String? groupcode;
|
||||||
|
int? salarygrade;
|
||||||
|
String? classSuffix;
|
||||||
|
PositionSpecificrole? classTitleid;
|
||||||
|
int? qualificationid;
|
||||||
|
int? competencyModelId;
|
||||||
|
|
||||||
|
factory PositionClass.fromJson(Map<String, dynamic> json) => PositionClass(
|
||||||
|
level: json["level"],
|
||||||
|
classid: json["classid"],
|
||||||
|
groupcode: json["groupcode"],
|
||||||
|
salarygrade: json["salarygrade"],
|
||||||
|
classSuffix: json["class_suffix"],
|
||||||
|
classTitleid:json["class_titleid"]==null?null: PositionSpecificrole.fromJson(json["class_titleid"]),
|
||||||
|
qualificationid: json["qualificationid"],
|
||||||
|
competencyModelId: json["competency_model_id"],
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"level": level,
|
||||||
|
"classid": classid,
|
||||||
|
"groupcode": groupcode,
|
||||||
|
"salarygrade": salarygrade,
|
||||||
|
"class_suffix": classSuffix,
|
||||||
|
"class_titleid": classTitleid!.toJson(),
|
||||||
|
"qualificationid": qualificationid,
|
||||||
|
"competency_model_id": competencyModelId,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class PositionSpecificrole {
|
||||||
|
PositionSpecificrole({
|
||||||
|
this.title,
|
||||||
|
this.titleid,
|
||||||
|
});
|
||||||
|
|
||||||
|
String? title;
|
||||||
|
int? titleid;
|
||||||
|
|
||||||
|
factory PositionSpecificrole.fromJson(Map<String, dynamic> json) =>
|
||||||
|
PositionSpecificrole(
|
||||||
|
title: json["title"],
|
||||||
|
titleid: json["titleid"],
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"title": title,
|
||||||
|
"titleid": titleid,
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
class AssignedArea {
|
||||||
|
AssignedArea({
|
||||||
|
this.id,
|
||||||
|
this.areaid,
|
||||||
|
this.isactive,
|
||||||
|
this.areaName,
|
||||||
|
this.areaTypeName,
|
||||||
|
});
|
||||||
|
|
||||||
|
int? id;
|
||||||
|
String? areaid;
|
||||||
|
bool? isactive;
|
||||||
|
String? areaName;
|
||||||
|
String? areaTypeName;
|
||||||
|
|
||||||
|
factory AssignedArea.fromJson(Map<String, dynamic> json) => AssignedArea(
|
||||||
|
id: json["id"],
|
||||||
|
areaid: json["areaid"],
|
||||||
|
isactive: json["isactive"],
|
||||||
|
areaName: json["area_name"],
|
||||||
|
areaTypeName: json["area_type_name"],
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"id": id,
|
||||||
|
"areaid": areaid,
|
||||||
|
"isactive": isactive,
|
||||||
|
"area_name": areaName,
|
||||||
|
"area_type_name": areaTypeName,
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
import 'role.dart';
|
||||||
|
class LoginUser {
|
||||||
|
LoginUser({
|
||||||
|
this.id,
|
||||||
|
this.profileId,
|
||||||
|
this.firstName,
|
||||||
|
this.lastName,
|
||||||
|
this.username,
|
||||||
|
this.email,
|
||||||
|
this.staff,
|
||||||
|
this.roles,
|
||||||
|
});
|
||||||
|
|
||||||
|
int? id;
|
||||||
|
int? profileId;
|
||||||
|
String? firstName;
|
||||||
|
String? lastName;
|
||||||
|
String? username;
|
||||||
|
String? email;
|
||||||
|
bool? staff;
|
||||||
|
List<Role?>? roles;
|
||||||
|
|
||||||
|
factory LoginUser.fromJson(Map<String, dynamic> json) => LoginUser(
|
||||||
|
id: json["id"],
|
||||||
|
profileId: json["profile_id"],
|
||||||
|
firstName: json["first_name"],
|
||||||
|
lastName: json["last_name"],
|
||||||
|
username: json["username"],
|
||||||
|
email: json["email"],
|
||||||
|
staff: json["staff"],
|
||||||
|
roles: json["roles"] == null
|
||||||
|
? []
|
||||||
|
: List<Role?>.from(json["roles"]!.map((x) => Role.fromJson(x))),
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"id": id,
|
||||||
|
"profile_id": profileId,
|
||||||
|
"first_name": firstName,
|
||||||
|
"last_name": lastName,
|
||||||
|
"username": username,
|
||||||
|
"email": email,
|
||||||
|
"staff": staff,
|
||||||
|
"roles": roles == null
|
||||||
|
? []
|
||||||
|
: List<dynamic>.from(roles!.map((x) => x!.toJson())),
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,68 @@
|
||||||
|
class Module {
|
||||||
|
Module({
|
||||||
|
this.id,
|
||||||
|
this.icon,
|
||||||
|
this.name,
|
||||||
|
this.slug,
|
||||||
|
this.objects,
|
||||||
|
});
|
||||||
|
|
||||||
|
int? id;
|
||||||
|
String? icon;
|
||||||
|
String? name;
|
||||||
|
String? slug;
|
||||||
|
List<Object?>? objects;
|
||||||
|
|
||||||
|
factory Module.fromJson(Map<String, dynamic> json) => Module(
|
||||||
|
id: json["id"],
|
||||||
|
icon: json["icon"],
|
||||||
|
name: json["name"],
|
||||||
|
slug: json["slug"],
|
||||||
|
objects: json["objects"] == null
|
||||||
|
? []
|
||||||
|
: List<Object?>.from(
|
||||||
|
json["objects"]!.map((x) => Object.fromJson(x))),
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"id": id,
|
||||||
|
"icon": icon,
|
||||||
|
"name": name,
|
||||||
|
"slug": slug,
|
||||||
|
"objects": objects == null
|
||||||
|
? []
|
||||||
|
: List<dynamic>.from(objects!.map((x) => x!.toJson())),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
class Object {
|
||||||
|
Object({
|
||||||
|
this.id,
|
||||||
|
this.name,
|
||||||
|
this.slug,
|
||||||
|
this.operations,
|
||||||
|
});
|
||||||
|
|
||||||
|
int? id;
|
||||||
|
String? name;
|
||||||
|
String? slug;
|
||||||
|
List<String?>? operations;
|
||||||
|
|
||||||
|
factory Object.fromJson(Map<String, dynamic> json) => Object(
|
||||||
|
id: json["id"],
|
||||||
|
name: json["name"],
|
||||||
|
slug: json["slug"],
|
||||||
|
operations: json["operations"] == null
|
||||||
|
? []
|
||||||
|
: List<String?>.from(json["operations"]!.map((x) => x)),
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"id": id,
|
||||||
|
"name": name,
|
||||||
|
"slug": slug,
|
||||||
|
"operations": operations == null
|
||||||
|
? []
|
||||||
|
: List<dynamic>.from(operations!.map((x) => x)),
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,74 @@
|
||||||
|
import 'assigned_area.dart';
|
||||||
|
import 'module.dart';
|
||||||
|
|
||||||
|
class Role {
|
||||||
|
Role({
|
||||||
|
this.id,
|
||||||
|
this.name,
|
||||||
|
this.modules,
|
||||||
|
this.assignedArea,
|
||||||
|
});
|
||||||
|
|
||||||
|
int? id;
|
||||||
|
String? name;
|
||||||
|
List<Module?>? modules;
|
||||||
|
List<AssignedArea?>? assignedArea;
|
||||||
|
|
||||||
|
factory Role.fromJson(Map<String, dynamic> json) => Role(
|
||||||
|
id: json["id"],
|
||||||
|
name: json["name"],
|
||||||
|
modules: json["modules"] == null
|
||||||
|
? []
|
||||||
|
: List<Module?>.from(
|
||||||
|
json["modules"]!.map((x) => Module.fromJson(x))),
|
||||||
|
assignedArea: json["assigned_area"] == null
|
||||||
|
? []
|
||||||
|
: json["assigned_area"] == null
|
||||||
|
? []
|
||||||
|
: List<AssignedArea?>.from(json["assigned_area"]!
|
||||||
|
.map((x) => AssignedArea.fromJson(x))),
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"id": id,
|
||||||
|
"name": name,
|
||||||
|
"modules": modules == null
|
||||||
|
? []
|
||||||
|
: List<dynamic>.from(modules!.map((x) => x!.toJson())),
|
||||||
|
"assigned_area": assignedArea == null
|
||||||
|
? []
|
||||||
|
: assignedArea == null
|
||||||
|
? []
|
||||||
|
: List<dynamic>.from(assignedArea!.map((x) => x!.toJson())),
|
||||||
|
};
|
||||||
|
}class Object {
|
||||||
|
Object({
|
||||||
|
this.id,
|
||||||
|
this.name,
|
||||||
|
this.slug,
|
||||||
|
this.operations,
|
||||||
|
});
|
||||||
|
|
||||||
|
int? id;
|
||||||
|
String? name;
|
||||||
|
String? slug;
|
||||||
|
List<String?>? operations;
|
||||||
|
|
||||||
|
factory Object.fromJson(Map<String, dynamic> json) => Object(
|
||||||
|
id: json["id"],
|
||||||
|
name: json["name"],
|
||||||
|
slug: json["slug"],
|
||||||
|
operations: json["operations"] == null
|
||||||
|
? []
|
||||||
|
: List<String?>.from(json["operations"]!.map((x) => x)),
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"id": id,
|
||||||
|
"name": name,
|
||||||
|
"slug": slug,
|
||||||
|
"operations": operations == null
|
||||||
|
? []
|
||||||
|
: List<dynamic>.from(operations!.map((x) => x)),
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,71 @@
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:unit2/model/login_data/employee_info/employee_info.dart';
|
||||||
|
|
||||||
|
import 'login_user.dart';
|
||||||
|
|
||||||
|
UserData? userDataFromJson(String str) => UserData.fromJson(json.decode(str));
|
||||||
|
|
||||||
|
String userDataToJson(UserData? data) => json.encode(data!.toJson());
|
||||||
|
|
||||||
|
class UserData {
|
||||||
|
UserData({
|
||||||
|
this.user,
|
||||||
|
this.employeeInfo,
|
||||||
|
});
|
||||||
|
|
||||||
|
UserDataUser? user;
|
||||||
|
EmployeeInfo? employeeInfo;
|
||||||
|
|
||||||
|
factory UserData.fromJson(Map<String, dynamic> json) => UserData(
|
||||||
|
user: UserDataUser.fromJson(json["user"]),
|
||||||
|
employeeInfo: EmployeeInfo.fromJson(json["employee_info"]),
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"user": user!.toJson(),
|
||||||
|
"employee_info": employeeInfo!.toJson(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
class UserDataUser {
|
||||||
|
UserDataUser({
|
||||||
|
this.login,
|
||||||
|
});
|
||||||
|
|
||||||
|
Login? login;
|
||||||
|
|
||||||
|
factory UserDataUser.fromJson(Map<String, dynamic> json) => UserDataUser(
|
||||||
|
login: Login.fromJson(json["login"]),
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"login": login!.toJson(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
class Login {
|
||||||
|
Login({
|
||||||
|
this.dateTime,
|
||||||
|
this.token,
|
||||||
|
this.user,
|
||||||
|
});
|
||||||
|
|
||||||
|
DateTime? dateTime;
|
||||||
|
String? token;
|
||||||
|
LoginUser? user;
|
||||||
|
|
||||||
|
factory Login.fromJson(Map<String, dynamic> json) => Login(
|
||||||
|
dateTime: DateTime.parse(json["date_time"]),
|
||||||
|
token: json["token"],
|
||||||
|
user: LoginUser.fromJson(json["user"]),
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"date_time": dateTime?.toIso8601String(),
|
||||||
|
"token": token,
|
||||||
|
"user": user!.toJson(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|