Suplier module commit

dev
suresh 2 years ago
commit bd918c3c59

44
.gitignore vendored

@ -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: 135454af32477f815a7525073027a3ff9eff1bfd
channel: stable
project_type: app
# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
- platform: android
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
- platform: ios
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
- platform: linux
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
- platform: macos
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
- platform: web
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
- platform: windows
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
# 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 @@
# watermanagement_supplier
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

13
android/.gitignore vendored

@ -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,72 @@
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 33
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.arminta.supplier.watermanagement_supplier"
// 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 28
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.arminta.supplier.watermanagement_supplier">
<!-- 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,55 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.arminta.supplier.watermanagement_supplier">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!-- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />-->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<queries>
<intent>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
</intent>
</queries>
<application
android:label="supplier"
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" />
<meta-data android:name="com.google.android.geo.API_KEY"
android:value="AIzaSyDJpK9RVhlBejtJu9xSGfneuTN6HOfJgSM"/>
</application>
</manifest>

@ -0,0 +1,6 @@
package com.arminta.supplier.watermanagement_supplier
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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 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.arminta.supplier.watermanagement_supplier">
<!-- 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"

@ -0,0 +1,6 @@
<svg width="108" height="108" viewBox="0 0 100 93" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M92.8265 34.6514H88.3393H71.6894H28.3997H11.7498H7.34427L6.79316 39.022L0.70762 87.3066L0 92.926H5.66429H93.5241H99.0835L98.4891 87.3982L93.3043 39.1135L92.8265 34.6514Z" fill="#0D4E84"/>
<path d="M22.7838 81.271C22.3559 81.271 21.9297 81.2443 21.5035 81.1927C21.1405 81.1494 20.7742 81.0812 20.4162 80.9863C19.5255 80.7565 18.991 79.8474 19.2208 78.9583C19.4505 78.0675 20.358 77.5264 21.2487 77.7628C21.4685 77.8178 21.6883 77.8611 21.9081 77.8877C22.579 77.971 23.2584 77.9493 23.931 77.8627C24.8501 77.7545 25.6776 78.3939 25.7908 79.3063C25.9057 80.2187 25.2597 81.0512 24.3473 81.1661C23.8261 81.2343 23.3017 81.271 22.7838 81.271ZM30.526 79.3429C29.8584 79.3429 29.229 78.9383 28.9726 78.2773C28.6413 77.4182 29.0692 76.4542 29.925 76.1245C30.9107 75.7432 31.903 75.3203 32.8787 74.8608C33.7162 74.4695 34.7035 74.8291 35.0931 75.66C35.4827 76.4925 35.1264 77.4848 34.2939 77.8744C33.2483 78.3656 32.181 78.8201 31.1254 79.228C30.929 79.308 30.7258 79.3429 30.526 79.3429ZM16.6284 76.4592C15.7842 76.4592 15.0616 75.8198 14.9734 74.964C14.9401 74.636 14.9268 74.3063 14.9268 73.9783C14.9268 73.7852 14.9318 73.5921 14.9417 73.4006C14.98 72.6197 15.1066 71.8322 15.3164 71.0596C15.5561 70.1688 16.4769 69.6394 17.3576 69.8875C18.2451 70.1272 18.7712 71.0396 18.5298 71.9287C18.3833 72.4715 18.295 73.0226 18.2701 73.5654C18.2634 73.7019 18.2584 73.8401 18.2584 73.9783C18.2584 74.1931 18.2667 74.4112 18.29 74.626C18.3833 75.5418 17.7156 76.3576 16.8015 76.4525C16.7416 76.4558 16.685 76.4592 16.6284 76.4592ZM39.4038 74.7958C38.8593 74.7958 38.3249 74.5294 38.0052 74.0383C37.504 73.2657 37.7238 72.2351 38.4947 71.7339C39.3855 71.1562 40.2696 70.5351 41.1254 69.8908C41.8646 69.338 42.9036 69.4895 43.458 70.2171C44.0108 70.9514 43.8643 71.9953 43.1317 72.5498C42.2126 73.2407 41.2636 73.9067 40.3095 74.5278C40.0281 74.7093 39.7151 74.7958 39.4038 74.7958ZM47.3274 68.7186C46.813 68.7186 46.3068 68.4805 45.9788 68.0343C45.4377 67.2917 45.6009 66.2494 46.3451 65.7083C46.6931 65.4569 47.0477 65.2088 47.4124 64.9741C48.0401 64.5661 48.7127 64.1799 49.4104 63.8286C50.2362 63.4173 51.2335 63.7486 51.6464 64.5678C52.0593 65.3887 51.728 66.391 50.9072 66.8039C50.3178 67.1003 49.7533 67.4233 49.2255 67.7646C48.9125 67.9694 48.6062 68.1808 48.3065 68.4006C48.0101 68.6154 47.6671 68.7186 47.3274 68.7186ZM20.7609 67.9311C20.1698 67.9311 19.5971 67.6164 19.2957 67.0603C18.8561 66.2528 19.1575 65.2421 19.965 64.8042C20.8275 64.3364 21.7482 64.045 22.7023 63.9384C23.1851 63.8835 23.6896 63.8852 24.1858 63.9518C25.0965 64.0716 25.7392 64.9075 25.6177 65.8199C25.4978 66.729 24.6836 67.37 23.7495 67.2518C23.5281 67.2218 23.2983 67.2218 23.0735 67.2484C22.5474 67.3051 22.0363 67.4682 21.5534 67.7296C21.3003 67.8662 21.0289 67.9311 20.7609 67.9311ZM56.4483 64.8475C55.679 64.8475 54.9881 64.3131 54.8216 63.5305C54.6301 62.6298 55.2028 61.7457 56.1019 61.5542C57.1725 61.3244 58.3247 61.1346 59.5285 60.9848C60.4492 60.8499 61.2717 61.5175 61.3849 62.4316C61.4982 63.344 60.8505 64.1765 59.9381 64.2881C58.8309 64.4263 57.7736 64.6011 56.7979 64.8092C56.6797 64.8359 56.5631 64.8475 56.4483 64.8475ZM66.3716 63.8202C65.4842 63.8202 64.7449 63.1193 64.7099 62.2235C64.6733 61.3044 65.3859 60.5285 66.305 60.4919L69.6233 60.3554C70.5391 60.2721 71.3216 61.023 71.3632 61.9438C71.4049 62.8612 70.6939 63.6404 69.7748 63.682L66.4415 63.8186C66.4199 63.8202 66.3949 63.8202 66.3716 63.8202ZM76.3266 63.0826C75.5523 63.0826 74.8597 62.5415 74.6965 61.754C74.5117 60.8532 75.0895 59.9724 75.9902 59.786C76.9526 59.5878 77.6652 59.3098 78.233 58.9118C78.9606 58.3441 80.0678 58.4373 80.6272 59.1599C81.1917 59.8875 81.1201 60.8899 80.3941 61.4543C80.3026 61.5242 80.211 61.5925 80.1127 61.6574C79.207 62.2968 78.0665 62.758 76.6629 63.0477C76.5513 63.071 76.4365 63.0826 76.3266 63.0826ZM83.1014 56.3727C82.9382 56.3727 82.7734 56.3478 82.6086 56.2978C81.7311 56.0264 81.2383 55.0924 81.5113 54.2149C81.5996 53.9302 81.6545 53.6471 81.6729 53.3724L81.6795 53.1793C81.6795 52.798 81.6062 52.4101 81.4631 52.0238C81.1434 51.1613 81.5813 50.2039 82.4454 49.8843C83.3012 49.5663 84.2669 50.0025 84.5849 50.8666C84.8663 51.6242 85.0095 52.4034 85.0095 53.1809C85.0095 53.3208 85.0045 53.459 84.9962 53.5972C84.9595 54.1367 84.8563 54.6728 84.6915 55.2022C84.4717 55.9149 83.8124 56.3727 83.1014 56.3727ZM74.6766 49.5346C73.9506 49.5346 73.283 49.0568 73.0765 48.3208C72.8268 47.4367 73.3396 46.516 74.2253 46.2679C75.5224 45.9016 76.8843 45.7917 78.198 45.9682C79.1088 46.0914 79.7481 46.9289 79.6249 47.8413C79.5034 48.7521 78.6825 49.3914 77.7518 49.2682C76.8843 49.1533 75.9902 49.2299 75.1294 49.4697C74.9779 49.5146 74.8281 49.5346 74.6766 49.5346Z" fill="#EAF6FF"/>
<path d="M30.4805 18.0914L30.4804 18.0915C29.9764 21.9414 30.2627 25.8227 31.0494 29.5547L31.0495 29.5549C35.3041 49.7221 45.8194 61.8307 48.3707 64.535L48.3716 64.536C49.2498 65.4653 50.7227 65.4653 51.6009 64.536L51.6018 64.535C54.1531 61.8307 64.6683 49.7222 68.9229 29.5553C69.7115 25.8231 69.9978 21.9416 69.4921 18.0914C69.0371 14.6193 67.884 10.4531 64.9087 7.14346C61.8868 3.78203 57.1638 1.5 49.9862 1.5C42.8095 1.5 38.0865 3.78207 35.0645 7.14341C32.089 10.453 30.9354 14.6192 30.4805 18.0914ZM49.9862 29.6749C44.9789 29.6749 40.9202 25.6163 40.9202 20.6089C40.9202 15.6019 44.9786 11.5446 49.9862 11.5446C54.9938 11.5446 59.0523 15.6034 59.0523 20.6089C59.0523 25.6163 54.9936 29.6749 49.9862 29.6749Z" fill="#0D4E84" stroke="white" stroke-width="3"/>
<path d="M49.9878 8.37952C43.243 8.37952 37.7568 13.8657 37.7568 20.6089C37.7568 27.3537 43.243 32.8399 49.9878 32.8399C56.7327 32.8399 62.2189 27.3537 62.2189 20.6089C62.2172 13.8657 56.7311 8.37952 49.9878 8.37952ZM49.9878 29.5099C45.0811 29.5099 41.0868 25.5172 41.0868 20.6089C41.0868 15.7005 45.0795 11.7095 49.9878 11.7095C54.8962 11.7095 58.8889 15.7005 58.8889 20.6089C58.8889 25.5172 54.8946 29.5099 49.9878 29.5099Z" fill="#0D4E84"/>
</svg>

After

Width:  |  Height:  |  Size: 5.8 KiB

@ -0,0 +1,20 @@
<svg width="60" height="80" viewBox="0 0 108 108" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M48.5349 69.1646C48.5518 68.813 48.7023 68.5426 49.0319 68.3229C49.4293 68.0581 49.9343 68.0801 50.3024 68.3399C50.4566 68.4489 50.6888 68.7257 50.8128 68.8822C51.0081 69.1289 51.2588 69.4606 51.5198 69.8298C52.9642 71.8738 55.409 75.908 55.0992 78.668C54.8503 80.886 53.2862 82.2469 51.4463 82.7189C50.6499 82.9233 49.8048 82.9578 49.0024 82.8196C48.1812 82.6781 47.3888 82.3544 46.7169 81.8448C45.2756 80.7514 44.4317 78.8736 45.1007 76.2107C45.3572 75.1895 46.0091 74.3621 46.7177 73.4629C47.5645 72.3883 48.5148 71.1822 48.5419 69.6316C48.5437 69.5285 48.5368 69.4304 48.533 69.328C48.5297 69.2727 48.5304 69.2181 48.5349 69.1646L48.5349 69.1646ZM52.8715 78.4224C53.0669 76.6814 51.5397 73.9115 50.3006 72.0212C49.8459 73.1156 49.1387 74.0133 48.4806 74.8487C47.9254 75.5532 47.4146 76.2014 47.2757 76.7545C46.8646 78.3912 47.2958 79.4789 48.0675 80.0644C48.4364 80.3442 48.8924 80.5256 49.3795 80.6094C49.8852 80.6965 50.4089 80.6771 50.8937 80.5527C51.8939 80.2961 52.7418 79.5784 52.8715 78.4224H52.8715Z" fill="#0D4E84"/>
<path d="M45.3703 50.9261C51.8517 58.3335 53.493 48.8636 55.5554 50.9261C58.3332 51.852 99.074 48.705 99.074 51.852C99.074 54.999 96.2962 82.4076 69.4443 94.4446C67.3819 96.5069 49.4432 99.0742 46.2962 99.0742C43.1492 99.0742 23.3585 91.8773 21.2961 89.815C19.2338 87.7526 6.48123 73.5175 6.48123 70.3705C3.70359 66.3682 -0.21074 52.9884 1.85159 50.9261C3.91408 48.8636 42.2233 50.9261 45.3703 50.9261ZM56.4708 69.0486C54.8148 67.3926 52.5268 66.3682 49.9996 66.3682C47.4724 66.3682 45.1844 67.3926 43.5284 69.0486C41.8725 70.7045 40.8481 72.9926 40.8481 75.5198C40.8481 78.047 41.8725 80.335 43.5284 81.991C45.1844 83.647 47.4724 84.6713 49.9996 84.6713C52.5268 84.6713 54.8148 83.647 56.4708 81.991C58.1268 80.335 59.1511 78.047 59.1511 75.5198C59.1511 72.9926 58.1268 70.7045 56.4708 69.0486Z" fill="#0D4E84"/>
<path d="M50 0C63.8069 0 76.307 5.59651 85.3552 14.6448C94.4035 23.693 100 36.193 100 50C100 63.8069 94.4035 76.3071 85.3552 85.3553C76.307 94.4035 63.807 100 50 100C36.1931 100 23.693 94.4035 14.6448 85.3553C5.59651 76.307 0 63.807 0 50C0 36.1931 5.59651 23.693 14.6448 14.6448C23.693 5.59651 36.193 0 50 0ZM83.7677 16.2322C75.126 7.59046 63.1871 2.24529 50 2.24529C36.8129 2.24529 24.874 7.59046 16.2323 16.2322C7.59052 24.874 2.24536 36.8128 2.24536 49.9999C2.24536 63.1871 7.59052 75.1259 16.2323 83.7677C24.874 92.4094 36.8129 97.7546 50 97.7546C63.1871 97.7546 75.126 92.4094 83.7677 83.7677C92.4095 75.1259 97.7546 63.187 97.7546 49.9999C97.7546 36.8128 92.4095 24.874 83.7677 16.2322Z" fill="#0D4E84"/>
<path d="M52.4173 49.801C52.3584 48.7922 51.8183 48.0232 50.8149 47.721C50.5615 47.6447 50.3033 47.6043 50.0511 47.6001C49.5249 47.5913 49.0018 47.7237 48.5733 47.9973C48.1736 48.2524 47.8532 48.642 47.6953 49.1662C47.5527 49.6397 47.5406 50.1845 47.6804 50.6606C47.7959 51.0535 48.0086 51.4052 48.2906 51.6872C48.728 52.1246 49.3327 52.3953 50.0005 52.3953C50.6683 52.3953 51.273 52.1246 51.7104 51.6872C52.1227 51.2748 52.3869 50.7139 52.4159 50.0916C52.4206 49.9887 52.4232 49.9044 52.4173 49.801V49.801ZM54.6632 50.056C54.6424 51.3123 54.1245 52.448 53.2979 53.2746C52.4541 54.1185 51.2881 54.6406 50.0005 54.6406C48.7129 54.6406 47.5469 54.1185 46.7032 53.2746C46.0558 52.6273 45.5978 51.7904 45.4197 50.8546C45.3187 50.3235 45.3179 49.8019 45.3881 49.2699C45.4227 49.0072 45.4762 48.7592 45.5466 48.5259C45.8708 47.4496 46.5372 46.6444 47.3718 46.1116C48.1778 45.5972 49.1376 45.3477 50.0862 45.3636C50.5566 45.3715 51.0196 45.4411 51.4551 45.5723C53.4159 46.1628 54.5871 47.7951 54.6564 49.8074C54.6591 49.8945 54.6646 49.9669 54.6631 50.056H54.6632Z" fill="#0D4E84"/>
<path d="M45.8982 51.1003C46.5181 51.1003 47.0208 50.5976 47.0208 49.9776C47.0208 49.3577 46.5181 48.855 45.8982 48.855H1.68417C1.06422 48.855 0.561523 49.3577 0.561523 49.9776C0.561523 50.5976 1.06422 51.1003 1.68417 51.1003H45.8982Z" fill="#0D4E84"/>
<path d="M98.3156 51.1003C98.9355 51.1003 99.4382 50.5976 99.4382 49.9776C99.4382 49.3577 98.9355 48.855 98.3156 48.855H54.1018C53.4818 48.855 52.9791 49.3577 52.9791 49.9776C52.9791 50.5976 53.4818 51.1003 54.1018 51.1003H98.3156Z" fill="#0D4E84"/>
<path d="M51.4012 46.1516C51.0452 46.6577 51.167 47.3567 51.673 47.7127C52.1791 48.0687 52.8782 47.947 53.2342 47.4409L67.1755 27.6474C67.5315 27.1413 67.4098 26.4423 66.9037 26.0863C66.3976 25.7303 65.6986 25.852 65.3426 26.3581L51.4012 46.1516V46.1516Z" fill="#0D4E84"/>
<path d="M51.1226 1.48373C51.1226 0.863776 50.6199 0.361084 50 0.361084C49.38 0.361084 48.8773 0.863778 48.8773 1.48373V5.1854C48.8773 5.80536 49.38 6.30805 50 6.30805C50.6199 6.30805 51.1226 5.80535 51.1226 5.1854V1.48373V1.48373Z" fill="#0D4E84"/>
<path d="M63.6401 3.42614C63.7999 2.82798 63.4445 2.21341 62.8464 2.05363C62.2482 1.89386 61.6336 2.24921 61.4739 2.84737L60.5158 6.42282C60.356 7.02098 60.7114 7.63556 61.3095 7.79533C61.9077 7.95511 62.5223 7.59975 62.682 7.00159L63.6401 3.42614V3.42614Z" fill="#0D4E84"/>
<path d="M75.2268 8.54511C75.5368 8.00993 75.3542 7.32467 74.819 7.01473C74.2839 6.7048 73.5986 6.88736 73.2887 7.42254L71.4378 10.6282C71.1279 11.1634 71.3105 11.8487 71.8456 12.1586C72.3808 12.4685 73.0661 12.286 73.376 11.7508L75.2268 8.54511Z" fill="#0D4E84"/>
<path d="M85.0998 16.4875C85.5381 16.0492 85.5381 15.3383 85.0998 14.9C84.6615 14.4617 83.9507 14.4617 83.5124 14.9L80.8949 17.5175C80.4566 17.9558 80.4566 18.6666 80.8949 19.105C81.3332 19.5433 82.0441 19.5433 82.4824 19.105L85.0998 16.4875Z" fill="#0D4E84"/>
<path d="M92.573 26.7107C93.1082 26.4032 93.2928 25.7199 92.9852 25.1848C92.6777 24.6496 91.9944 24.465 91.4593 24.7726L88.2535 26.6234C87.7183 26.9309 87.5338 27.6142 87.8413 28.1494C88.1488 28.6846 88.8321 28.8691 89.3673 28.5616L92.573 26.7107Z" fill="#0D4E84"/>
<path d="M97.1524 38.5259C97.7506 38.3661 98.1059 37.7516 97.9462 37.1534C97.7864 36.5552 97.1718 36.1999 96.5737 36.3597L92.9981 37.3177C92.4 37.4775 92.0446 38.0921 92.2044 38.6902C92.3642 39.2884 92.9787 39.6437 93.5769 39.484L97.1524 38.5259Z" fill="#0D4E84"/>
<path d="M6.42291 39.4842C7.02107 39.644 7.63564 39.2886 7.79541 38.6905C7.95519 38.0923 7.59984 37.4777 7.00168 37.318L3.42614 36.3599C2.82798 36.2001 2.21341 36.5555 2.05363 37.1536C1.89386 37.7518 2.24921 38.3664 2.84737 38.5261L6.42291 39.4842Z" fill="#0D4E84"/>
<path d="M10.6324 28.5616C11.1675 28.8691 11.8508 28.6846 12.1583 28.1494C12.4659 27.6142 12.2813 26.9309 11.7461 26.6234L8.54037 24.7726C8.00519 24.465 7.32192 24.6496 7.01438 25.1848C6.70685 25.7199 6.8914 26.4032 7.42658 26.7107L10.6324 28.5616Z" fill="#0D4E84"/>
<path d="M17.5175 19.105C17.9558 19.5433 18.6666 19.5433 19.105 19.105C19.5433 18.6666 19.5433 17.9558 19.105 17.5175L16.4875 14.9C16.0492 14.4617 15.3383 14.4617 14.9 14.9C14.4617 15.3383 14.4617 16.0492 14.9 16.4875L17.5175 19.105Z" fill="#0D4E84"/>
<path d="M26.6236 11.7507C26.9336 12.2858 27.6188 12.4684 28.154 12.1585C28.6892 11.8485 28.8717 11.1633 28.5618 10.6281L26.711 7.42242C26.401 6.88724 25.7158 6.70468 25.1806 7.01461C24.6454 7.32455 24.4629 8.00981 24.7728 8.54498L26.6236 11.7507Z" fill="#0D4E84"/>
<path d="M37.318 7.00159C37.4777 7.59975 38.0923 7.9551 38.6905 7.79533C39.2886 7.63555 39.644 7.02098 39.4842 6.42282L38.5261 2.84737C38.3664 2.24921 37.7518 1.89386 37.1536 2.05363C36.5555 2.21341 36.2001 2.82798 36.3599 3.42614L37.318 7.00159V7.00159Z" fill="#0D4E84"/>
</svg>

After

Width:  |  Height:  |  Size: 7.3 KiB

@ -0,0 +1,25 @@
<svg width="108" height="108" viewBox="0 0 108 108" fill="none" xmlns="http://www.w3.org/2000/svg">
<g filter="url(#filter0_d_1_112)">
<circle cx="54" cy="50" r="49.5" fill="white" stroke="#0D4E84"/>
<g clip-path="url(#clip0_1_112)">
<path d="M63.7251 70.0001H68.1668V74.4418C68.1482 74.7448 68.1919 75.0485 68.2951 75.3341C68.3983 75.6197 68.5589 75.8811 68.7669 76.1023C68.9749 76.3235 69.2261 76.4997 69.5048 76.6202C69.7835 76.7407 70.084 76.8029 70.3876 76.8029C70.6913 76.8029 70.9917 76.7407 71.2704 76.6202C71.5492 76.4997 71.8003 76.3235 72.0083 76.1023C72.2164 75.8811 72.377 75.6197 72.4802 75.3341C72.5834 75.0485 72.627 74.7448 72.6085 74.4418V70.0001H77.0585C77.6239 69.9654 78.1549 69.7164 78.5431 69.3037C78.9312 68.891 79.1473 68.3458 79.1473 67.7793C79.1473 67.2127 78.9312 66.6675 78.5431 66.2548C78.1549 65.8421 77.6239 65.5931 77.0585 65.5584H72.6085V61.1084C72.5738 60.5429 72.3247 60.012 71.9121 59.6238C71.4994 59.2356 70.9542 59.0195 70.3876 59.0195C69.8211 59.0195 69.2759 59.2356 68.8632 59.6238C68.4505 60.012 68.2014 60.5429 68.1668 61.1084V65.5584H63.7251C63.422 65.5398 63.1184 65.5835 62.8328 65.6867C62.5472 65.7899 62.2858 65.9505 62.0646 66.1585C61.8434 66.3666 61.6671 66.6177 61.5467 66.8964C61.4262 67.1752 61.364 67.4756 61.364 67.7793C61.364 68.0829 61.4262 68.3834 61.5467 68.6621C61.6671 68.9408 61.8434 69.1919 62.0646 69.4C62.2858 69.608 62.5472 69.7686 62.8328 69.8718C63.1184 69.975 63.422 70.0187 63.7251 70.0001Z" fill="#0D4E84"/>
<path d="M52.6086 45.5584C50.4099 45.5584 48.2607 44.9064 46.4325 43.6849C44.6044 42.4634 43.1795 40.7272 42.3382 38.6959C41.4968 36.6646 41.2766 34.4294 41.7056 32.273C42.1345 30.1166 43.1933 28.1358 44.7479 26.5811C46.3026 25.0264 48.2834 23.9676 50.4399 23.5387C52.5963 23.1097 54.8315 23.3299 56.8628 24.1713C58.8941 25.0127 60.6303 26.4375 61.8518 28.2657C63.0733 30.0938 63.7253 32.2431 63.7253 34.4417C63.7231 37.3894 62.5511 40.2157 60.4668 42.3C58.3825 44.3843 55.5563 45.5562 52.6086 45.5584ZM52.6086 27.7751C51.2901 27.7751 50.0011 28.1661 48.9048 28.8986C47.8085 29.6312 46.954 30.6723 46.4494 31.8905C45.9448 33.1087 45.8128 34.4491 46.07 35.7423C46.3273 37.0356 46.9622 38.2234 47.8946 39.1558C48.8269 40.0881 50.0148 40.7231 51.308 40.9803C52.6012 41.2375 53.9417 41.1055 55.1598 40.6009C56.378 40.0964 57.4192 39.2419 58.1517 38.1455C58.8843 37.0492 59.2753 35.7603 59.2753 34.4417C59.2753 32.6736 58.5729 30.9779 57.3227 29.7277C56.0724 28.4775 54.3767 27.7751 52.6086 27.7751Z" fill="#0D4E84"/>
<path d="M54.8335 72.2251H32.6085C32.6112 68.5165 33.645 64.8817 35.5944 61.7268C37.5438 58.5719 40.332 56.0211 43.6475 54.3595C46.963 52.6978 50.6752 51.9907 54.3694 52.3173C58.0635 52.6438 61.5942 53.991 64.5668 56.2084C64.9473 56.5005 65.4122 56.6614 65.8918 56.6668C66.3616 56.6627 66.8183 56.5112 67.1973 56.2336C67.5763 55.9559 67.8585 55.5662 68.004 55.1195C68.1495 54.6728 68.151 54.1917 68.0083 53.7441C67.8655 53.2965 67.5858 52.9051 67.2085 52.6251C62.4587 49.0749 56.5779 47.3774 50.6668 47.8501C37.8168 48.8501 28.1668 60.1084 28.1668 73.0001V74.1668C28.137 74.4795 28.1719 74.795 28.2696 75.0935C28.3672 75.3921 28.5253 75.6673 28.7342 75.902C28.943 76.1366 29.198 76.3256 29.4833 76.4572C29.7685 76.5888 30.0778 76.6602 30.3918 76.6668H54.8335C55.4236 76.6668 55.9896 76.4323 56.4068 76.0151C56.8241 75.5978 57.0585 75.0319 57.0585 74.4418C57.0563 73.8531 56.8209 73.2893 56.4039 72.8738C55.9869 72.4584 55.4222 72.2251 54.8335 72.2251Z" fill="#0D4E84"/>
</g>
</g>
<defs>
<filter id="filter0_d_1_112" x="0" y="0" width="108" height="108" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_1_112"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_1_112" result="shape"/>
</filter>
<clipPath id="clip0_1_112">
<rect width="51.1083" height="53.3333" fill="white" transform="translate(28.1667 23.3334)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 27 KiB

@ -0,0 +1,3 @@
<svg width="108" height="108" viewBox="0 0 108 108" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M86 80.9524V85.7143H0V80.9524L9.55556 71.4286V42.8571C9.55556 28.0952 19.2544 15.0952 33.4444 10.9048V9.52381C33.4444 6.99794 34.4512 4.57552 36.2432 2.78946C38.0352 1.0034 40.4657 0 43 0C45.5343 0 47.9648 1.0034 49.7568 2.78946C51.5488 4.57552 52.5556 6.99794 52.5556 9.52381V10.9048C66.7456 15.0952 76.4444 28.0952 76.4444 42.8571V71.4286L86 80.9524ZM52.5556 90.4762C52.5556 93.0021 51.5488 95.4245 49.7568 97.2105C47.9648 98.9966 45.5343 100 43 100C40.4657 100 38.0352 98.9966 36.2432 97.2105C34.4512 95.4245 33.4444 93.0021 33.4444 90.4762" fill="#0D4E84"/>
</svg>

After

Width:  |  Height:  |  Size: 678 B

@ -0,0 +1,9 @@
<svg width="108" height="108" viewBox="0 0 108 108" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M86 80.9524V85.7143H0V80.9524L9.55556 71.4286V42.8571C9.55556 28.0952 19.2544 15.0952 33.4444 10.9048V9.52381C33.4444 6.99794 34.4512 4.57552 36.2432 2.78946C38.0352 1.0034 40.4657 0 43 0C45.5343 0 47.9648 1.0034 49.7568 2.78946C51.5488 4.57552 52.5556 6.99794 52.5556 9.52381V10.9048C66.7456 15.0952 76.4444 28.0952 76.4444 42.8571V71.4286L86 80.9524ZM52.5556 90.4762C52.5556 93.0021 51.5488 95.4245 49.7568 97.2105C47.9648 98.9966 45.5343 100 43 100C40.4657 100 38.0352 98.9966 36.2432 97.2105C34.4512 95.4245 33.4444 93.0021 33.4444 90.4762" fill="url(#paint0_linear_75_44)"/>
<defs>
<linearGradient id="paint0_linear_75_44" x1="43" y1="-22.5" x2="43" y2="112" gradientUnits="userSpaceOnUse">
<stop offset="0.458333" stop-color="#00C2FF"/>
<stop offset="0.782318" stop-color="#0E4F85"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 932 B

@ -0,0 +1,4 @@
<svg width="108" height="108" viewBox="0 0 108 108" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 12.8829C0 9.58559 1.27705 6.42335 3.55022 4.09181C5.82339 1.76028 8.90647 0.450439 12.1212 0.450439H67.8788C69.4706 0.450439 71.0468 0.772014 72.5174 1.3968C73.988 2.02159 75.3242 2.93736 76.4498 4.09181C77.5753 5.24627 78.4682 6.61681 79.0773 8.12519C79.6865 9.63356 80 11.2502 80 12.8829V83.7477C80 84.7369 79.6169 85.6856 78.9349 86.385C78.253 87.0845 77.3281 87.4775 76.3636 87.4775H7.27273C7.27273 88.7964 7.78355 90.0613 8.69282 90.9939C9.60208 91.9265 10.8353 92.4504 12.1212 92.4504H76.3636C77.3281 92.4504 78.253 92.8434 78.9349 93.5428C79.6169 94.2423 80 95.191 80 96.1802C80 97.1693 79.6169 98.118 78.9349 98.8175C78.253 99.5169 77.3281 99.9099 76.3636 99.9099H12.1212C8.90647 99.9099 5.82339 98.6001 3.55022 96.2685C1.27705 93.937 0 90.7747 0 87.4775V12.8829Z" fill="#0D4E84"/>
<path d="M55.7576 51.4234C55.7576 50.4342 55.3745 49.4856 54.6925 48.7861C54.0106 48.0866 53.0856 47.6937 52.1212 47.6937H27.8788C26.9144 47.6937 25.9894 48.0866 25.3075 48.7861C24.6255 49.4856 24.2424 50.4342 24.2424 51.4234V53.9099C24.2424 58.8829 30.9479 62.6126 40 62.6126C49.0521 62.6126 55.7576 58.8829 55.7576 53.9099V51.4234ZM48.4848 33.9931C48.4848 29.1942 44.6885 25.3153 40 25.3153C35.3115 25.3153 31.5152 29.1892 31.5152 33.9931C31.5152 36.3012 32.4091 38.5148 34.0003 40.1469C35.5915 41.779 37.7497 42.6958 40 42.6958C42.2503 42.6958 44.4085 41.779 45.9997 40.1469C47.5909 38.5148 48.4848 36.3012 48.4848 33.9931Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -0,0 +1,38 @@
<svg width="108" height="108" viewBox="0 0 108 108" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M56.6666 25.8258H76.6666V36.7804H56.6666V25.8258Z" fill="#0D4E84"/>
<path d="M1.66671 45.9091V75.1213C1.66671 78.0266 2.72027 80.8129 4.59564 82.8673C6.471 84.9217 9.01454 86.0758 11.6667 86.0758H23.3334V34.9546H11.6667C9.01454 34.9546 6.471 36.1087 4.59564 38.1631C2.72027 40.2175 1.66671 43.0038 1.66671 45.9091Z" fill="#0D4E84"/>
<path d="M91.6667 56.8636H98.3334V64.1667H91.6667V56.8636Z" fill="#0D4E84"/>
<path d="M85 51.3864H91.6666V69.6439H85V51.3864Z" fill="#0D4E84"/>
<path d="M26.6666 95.2045H76.6666L75 84.25H28.3333L26.6666 95.2045Z" fill="#0D4E84"/>
<path d="M23.3334 67.8182H78.3334V75.1213H23.3334V67.8182Z" fill="#0D4E84"/>
<path d="M78.3334 36.7804V60.5152H23.3334V36.7804H78.3334ZM30 55.038H60V44.0834H30V55.038Z" fill="#0D4E84"/>
<path d="M11.6667 33.1288H23.3333C23.7754 33.1288 24.1993 33.3211 24.5118 33.6635C24.8244 34.0059 25 34.4703 25 34.9545H55V25.8258C55 25.3415 55.1756 24.8771 55.4882 24.5348C55.8007 24.1924 56.2246 24 56.6667 24H76.6667C77.1087 24 77.5326 24.1924 77.8452 24.5348C78.1577 24.8771 78.3333 25.3415 78.3333 25.8258V34.9545H83.3333C84.2166 34.9574 85.0629 35.3431 85.6874 36.0272C86.312 36.7114 86.664 37.6385 86.6667 38.6061V49.5606H91.6667C92.1087 49.5606 92.5326 49.753 92.8452 50.0954C93.1577 50.4378 93.3333 50.9021 93.3333 51.3864V55.0379H98.3333C98.7754 55.0379 99.1993 55.2302 99.5118 55.5726C99.8244 55.915 100 56.3794 100 56.8636V64.1667C100 64.6509 99.8244 65.1153 99.5118 65.4577C99.1993 65.8001 98.7754 65.9924 98.3333 65.9924H93.3333V69.6439C93.3333 70.1282 93.1577 70.5926 92.8452 70.9349C92.5326 71.2773 92.1087 71.4697 91.6667 71.4697H86.6667V82.4242C86.664 83.3918 86.312 84.3189 85.6874 85.0031C85.0629 85.6872 84.2166 86.0729 83.3333 86.0758H76.9667L78.0833 93.3788H81.6667C82.1087 93.3788 82.5326 93.5711 82.8452 93.9135C83.1577 94.2559 83.3333 94.7203 83.3333 95.2045V102.508C83.3333 102.992 83.1577 103.456 82.8452 103.799C82.5326 104.141 82.1087 104.333 81.6667 104.333H21.6667C21.2246 104.333 20.8007 104.141 20.4882 103.799C20.1756 103.456 20 102.992 20 102.508V95.2045C20 94.7203 20.1756 94.2559 20.4882 93.9135C20.8007 93.5711 21.2246 93.3788 21.6667 93.3788H25.25L26.3667 86.0758H25C25 86.56 24.8244 87.0244 24.5118 87.3668C24.1993 87.7092 23.7754 87.9015 23.3333 87.9015H11.6667C8.57356 87.8977 5.60814 86.5499 3.42098 84.154C1.23382 81.7581 0.00353132 78.5096 2.38419e-06 75.1212V45.9091C0.00353132 42.5207 1.23382 39.2723 3.42098 36.8763C5.60814 34.4804 8.57356 33.1327 11.6667 33.1288ZM93.3333 62.3409H96.6667V58.6894H93.3333V62.3409ZM86.6667 67.8182H90V53.2121H86.6667V67.8182ZM80 82.4242H83.3333V38.6061H80V82.4242ZM75 27.6515H58.3333V34.9545H75V27.6515ZM23.3333 97.0303V100.682H80V97.0303H23.3333ZM74.7 93.3788L73.5833 86.0758H29.75L28.6333 93.3788H74.7ZM25 82.4242H76.6667V76.947H25V82.4242ZM25 73.2955H76.6667V69.6439H25V73.2955ZM25 65.9924H76.6667V62.3409H25V65.9924ZM25 58.6894H76.6667V38.6061H25V58.6894ZM3.33334 75.1212C3.33334 77.5423 4.21131 79.8643 5.77411 81.5762C7.33692 83.2882 9.45653 84.25 11.6667 84.25H21.6667V36.7803H11.6667C9.45653 36.7803 7.33692 37.7421 5.77411 39.4541C4.21131 41.166 3.33334 43.488 3.33334 45.9091V75.1212Z" fill="#0D4E84"/>
<path d="M18.3217 40.4318H18.345C19.259 40.4318 20 41.2435 20 42.2447V42.2703C20 43.2716 19.259 44.0833 18.345 44.0833H18.3217C17.4076 44.0833 16.6667 43.2716 16.6667 42.2703V42.2447C16.6667 41.2435 17.4076 40.4318 18.3217 40.4318Z" fill="white"/>
<path d="M61.655 29.4773H61.6784C62.5924 29.4773 63.3334 30.289 63.3334 31.2903V31.3158C63.3334 32.3171 62.5924 33.1288 61.6784 33.1288H61.655C60.741 33.1288 60 32.3171 60 31.3158V31.2903C60 30.289 60.741 29.4773 61.655 29.4773Z" fill="white"/>
<path d="M18.3217 58.6895H18.345C19.259 58.6895 20 59.5012 20 60.5024V60.528C20 61.5293 19.259 62.341 18.345 62.341H18.3217C17.4076 62.341 16.6667 61.5293 16.6667 60.528V60.5024C16.6667 59.5012 17.4076 58.6895 18.3217 58.6895Z" fill="white"/>
<path d="M18.3217 76.947H18.345C19.259 76.947 20 77.7587 20 78.76V78.7856C20 79.7868 19.259 80.5985 18.345 80.5985H18.3217C17.4076 80.5985 16.6667 79.7868 16.6667 78.7856V78.76C16.6667 77.7587 17.4076 76.947 18.3217 76.947Z" fill="white"/>
<path d="M61.6666 44.0834V55.038C61.6666 55.5222 61.491 55.9866 61.1785 56.329C60.8659 56.6714 60.442 56.8638 60 56.8638H30C29.5579 56.8638 29.134 56.6714 28.8214 56.329C28.5089 55.9866 28.3333 55.5222 28.3333 55.038V44.0834C28.3333 43.5992 28.5089 43.1348 28.8214 42.7924C29.134 42.45 29.5579 42.2577 30 42.2577H60C60.442 42.2577 60.8659 42.45 61.1785 42.7924C61.491 43.1348 61.6666 43.5992 61.6666 44.0834ZM58.3333 45.9092H31.6666V53.2122H58.3333V45.9092Z" fill="#0D4E84"/>
<g clip-path="url(#clip0_75_45)">
<path d="M40 5H26.6667C19.3148 5 13.3334 10.9814 13.3334 18.3333C13.3334 25.6852 19.3148 31.6667 26.6667 31.6667H40C47.3519 31.6667 53.3334 25.6852 53.3334 18.3333C53.3334 10.9814 47.3519 5 40 5Z" fill="#0D4E84"/>
<path d="M40 30H26.6667C20.2336 30 15 24.7664 15 18.3333C15 11.9002 20.2336 6.66663 26.6667 6.66663H40C46.4331 6.66663 51.6667 11.9002 51.6667 18.3333C51.6667 24.7664 46.4331 30 40 30Z" fill="#E6E6E6"/>
<path opacity="0.1" d="M26.6667 9.16663H40C46.4331 9.16663 51.6667 13.2787 51.6667 18.3333C51.6667 11.9002 46.4331 6.66663 40 6.66663H26.6667C20.2336 6.66663 15 11.9002 15 18.3333C15 13.2787 20.2336 9.16663 26.6667 9.16663Z" fill="black"/>
<path d="M40 28.3334C45.5228 28.3334 50 23.8562 50 18.3334C50 12.8105 45.5228 8.33337 40 8.33337C34.4772 8.33337 30 12.8105 30 18.3334C30 23.8562 34.4772 28.3334 40 28.3334Z" fill="#0D4E84"/>
<path d="M51.6668 18.3333C51.6668 17.4432 51.5575 16.5797 51.3678 15.7461L48.0831 12.4614L48.0793 12.4645C49.2816 14.115 50.0001 16.1394 50.0001 18.3333C50.0001 23.8476 45.5144 28.3333 40.0001 28.3333C37.3998 28.3333 35.0359 27.3276 33.2556 25.6952L37.2089 29.6484C38.1051 29.8697 39.0366 30 40.0001 30C46.4332 30 51.6668 24.7664 51.6668 18.3333Z" fill="url(#paint0_linear_75_45)"/>
<path d="M40.0001 26.6667C44.6025 26.6667 48.3334 22.9357 48.3334 18.3333C48.3334 13.731 44.6025 10 40.0001 10C35.3977 10 31.6667 13.731 31.6667 18.3333C31.6667 22.9357 35.3977 26.6667 40.0001 26.6667Z" fill="#24C765"/>
<path opacity="0.1" d="M45.2177 11.8889C45.6075 12.8521 45.8334 13.8988 45.8334 15C45.8334 19.5947 42.0948 23.3333 37.5 23.3333C35.5155 23.3333 33.7153 22.607 32.2823 21.4444C33.5189 24.5001 36.5065 26.6666 40 26.6666C44.5948 26.6666 48.3334 22.928 48.3334 18.3333C48.3334 15.7231 47.1023 13.4182 45.2177 11.8889Z" fill="#0D4E84"/>
<path d="M40 5H26.6667C19.3148 5 13.3334 10.9814 13.3334 18.3333C13.3334 25.6852 19.3148 31.6667 26.6667 31.6667H40C47.3519 31.6667 53.3334 25.6852 53.3334 18.3333C53.3334 10.9814 47.3519 5 40 5Z" fill="url(#paint1_linear_75_45)"/>
</g>
<defs>
<linearGradient id="paint0_linear_75_45" x1="40.2709" y1="18.6799" x2="48.208" y2="26.6169" gradientUnits="userSpaceOnUse">
<stop stop-opacity="0.1"/>
<stop offset="1" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint1_linear_75_45" x1="15.774" y1="10.1453" x2="50.8928" y2="26.5214" gradientUnits="userSpaceOnUse">
<stop stop-color="white" stop-opacity="0.2"/>
<stop offset="1" stop-color="white" stop-opacity="0"/>
</linearGradient>
<clipPath id="clip0_75_45">
<rect width="40" height="40" fill="white" transform="translate(13.3334)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

@ -0,0 +1,38 @@
<svg width="108" height="108" viewBox="0 0 108 108" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M56.6666 25.8258H76.6666V36.7804H56.6666V25.8258Z" fill="#0D4E84"/>
<path d="M1.66671 45.9091V75.1213C1.66671 78.0266 2.72027 80.8129 4.59564 82.8673C6.471 84.9217 9.01454 86.0758 11.6667 86.0758H23.3334V34.9546H11.6667C9.01454 34.9546 6.471 36.1087 4.59564 38.1631C2.72027 40.2175 1.66671 43.0038 1.66671 45.9091Z" fill="#0D4E84"/>
<path d="M91.6667 56.8636H98.3334V64.1667H91.6667V56.8636Z" fill="#0D4E84"/>
<path d="M85 51.3864H91.6666V69.6439H85V51.3864Z" fill="#0D4E84"/>
<path d="M26.6666 95.2045H76.6666L75 84.25H28.3333L26.6666 95.2045Z" fill="#0D4E84"/>
<path d="M23.3334 67.8182H78.3334V75.1213H23.3334V67.8182Z" fill="#0D4E84"/>
<path d="M78.3334 36.7804V60.5152H23.3334V36.7804H78.3334ZM30 55.038H60V44.0834H30V55.038Z" fill="#0D4E84"/>
<path d="M11.6667 33.1288H23.3333C23.7754 33.1288 24.1993 33.3211 24.5118 33.6635C24.8244 34.0059 25 34.4703 25 34.9545H55V25.8258C55 25.3415 55.1756 24.8771 55.4882 24.5348C55.8007 24.1924 56.2246 24 56.6667 24H76.6667C77.1087 24 77.5326 24.1924 77.8452 24.5348C78.1577 24.8771 78.3333 25.3415 78.3333 25.8258V34.9545H83.3333C84.2166 34.9574 85.0629 35.3431 85.6874 36.0272C86.312 36.7114 86.664 37.6385 86.6667 38.6061V49.5606H91.6667C92.1087 49.5606 92.5326 49.753 92.8452 50.0954C93.1577 50.4378 93.3333 50.9021 93.3333 51.3864V55.0379H98.3333C98.7754 55.0379 99.1993 55.2302 99.5118 55.5726C99.8244 55.915 100 56.3794 100 56.8636V64.1667C100 64.6509 99.8244 65.1153 99.5118 65.4577C99.1993 65.8001 98.7754 65.9924 98.3333 65.9924H93.3333V69.6439C93.3333 70.1282 93.1577 70.5926 92.8452 70.9349C92.5326 71.2773 92.1087 71.4697 91.6667 71.4697H86.6667V82.4242C86.664 83.3918 86.312 84.3189 85.6874 85.0031C85.0629 85.6872 84.2166 86.0729 83.3333 86.0758H76.9667L78.0833 93.3788H81.6667C82.1087 93.3788 82.5326 93.5711 82.8452 93.9135C83.1577 94.2559 83.3333 94.7203 83.3333 95.2045V102.508C83.3333 102.992 83.1577 103.456 82.8452 103.799C82.5326 104.141 82.1087 104.333 81.6667 104.333H21.6667C21.2246 104.333 20.8007 104.141 20.4882 103.799C20.1756 103.456 20 102.992 20 102.508V95.2045C20 94.7203 20.1756 94.2559 20.4882 93.9135C20.8007 93.5711 21.2246 93.3788 21.6667 93.3788H25.25L26.3667 86.0758H25C25 86.56 24.8244 87.0244 24.5118 87.3668C24.1993 87.7092 23.7754 87.9015 23.3333 87.9015H11.6667C8.57356 87.8977 5.60814 86.5499 3.42098 84.154C1.23382 81.7581 0.00353132 78.5096 2.38419e-06 75.1212V45.9091C0.00353132 42.5207 1.23382 39.2723 3.42098 36.8763C5.60814 34.4804 8.57356 33.1327 11.6667 33.1288ZM93.3333 62.3409H96.6667V58.6894H93.3333V62.3409ZM86.6667 67.8182H90V53.2121H86.6667V67.8182ZM80 82.4242H83.3333V38.6061H80V82.4242ZM75 27.6515H58.3333V34.9545H75V27.6515ZM23.3333 97.0303V100.682H80V97.0303H23.3333ZM74.7 93.3788L73.5833 86.0758H29.75L28.6333 93.3788H74.7ZM25 82.4242H76.6667V76.947H25V82.4242ZM25 73.2955H76.6667V69.6439H25V73.2955ZM25 65.9924H76.6667V62.3409H25V65.9924ZM25 58.6894H76.6667V38.6061H25V58.6894ZM3.33334 75.1212C3.33334 77.5423 4.21131 79.8643 5.77411 81.5762C7.33692 83.2882 9.45653 84.25 11.6667 84.25H21.6667V36.7803H11.6667C9.45653 36.7803 7.33692 37.7421 5.77411 39.4541C4.21131 41.166 3.33334 43.488 3.33334 45.9091V75.1212Z" fill="#0D4E84"/>
<path d="M18.3217 40.4318H18.345C19.259 40.4318 20 41.2435 20 42.2447V42.2703C20 43.2716 19.259 44.0833 18.345 44.0833H18.3217C17.4076 44.0833 16.6667 43.2716 16.6667 42.2703V42.2447C16.6667 41.2435 17.4076 40.4318 18.3217 40.4318Z" fill="white"/>
<path d="M61.655 29.4773H61.6784C62.5924 29.4773 63.3334 30.289 63.3334 31.2903V31.3158C63.3334 32.3171 62.5924 33.1288 61.6784 33.1288H61.655C60.741 33.1288 60 32.3171 60 31.3158V31.2903C60 30.289 60.741 29.4773 61.655 29.4773Z" fill="white"/>
<path d="M18.3217 58.6895H18.345C19.259 58.6895 20 59.5012 20 60.5024V60.528C20 61.5293 19.259 62.341 18.345 62.341H18.3217C17.4076 62.341 16.6667 61.5293 16.6667 60.528V60.5024C16.6667 59.5012 17.4076 58.6895 18.3217 58.6895Z" fill="white"/>
<path d="M18.3217 76.947H18.345C19.259 76.947 20 77.7587 20 78.76V78.7856C20 79.7868 19.259 80.5985 18.345 80.5985H18.3217C17.4076 80.5985 16.6667 79.7868 16.6667 78.7856V78.76C16.6667 77.7587 17.4076 76.947 18.3217 76.947Z" fill="white"/>
<path d="M61.6666 44.0834V55.038C61.6666 55.5222 61.491 55.9866 61.1785 56.329C60.8659 56.6714 60.442 56.8638 60 56.8638H30C29.5579 56.8638 29.134 56.6714 28.8214 56.329C28.5089 55.9866 28.3333 55.5222 28.3333 55.038V44.0834C28.3333 43.5992 28.5089 43.1348 28.8214 42.7924C29.134 42.45 29.5579 42.2577 30 42.2577H60C60.442 42.2577 60.8659 42.45 61.1785 42.7924C61.491 43.1348 61.6666 43.5992 61.6666 44.0834ZM58.3333 45.9092H31.6666V53.2122H58.3333V45.9092Z" fill="#0D4E84"/>
<g clip-path="url(#clip0_75_45)">
<path d="M40 5H26.6667C19.3148 5 13.3334 10.9814 13.3334 18.3333C13.3334 25.6852 19.3148 31.6667 26.6667 31.6667H40C47.3519 31.6667 53.3334 25.6852 53.3334 18.3333C53.3334 10.9814 47.3519 5 40 5Z" fill="#0D4E84"/>
<path d="M40 30H26.6667C20.2336 30 15 24.7664 15 18.3333C15 11.9002 20.2336 6.66663 26.6667 6.66663H40C46.4331 6.66663 51.6667 11.9002 51.6667 18.3333C51.6667 24.7664 46.4331 30 40 30Z" fill="#E6E6E6"/>
<path opacity="0.1" d="M26.6667 9.16663H40C46.4331 9.16663 51.6667 13.2787 51.6667 18.3333C51.6667 11.9002 46.4331 6.66663 40 6.66663H26.6667C20.2336 6.66663 15 11.9002 15 18.3333C15 13.2787 20.2336 9.16663 26.6667 9.16663Z" fill="black"/>
<path d="M40 28.3334C45.5228 28.3334 50 23.8562 50 18.3334C50 12.8105 45.5228 8.33337 40 8.33337C34.4772 8.33337 30 12.8105 30 18.3334C30 23.8562 34.4772 28.3334 40 28.3334Z" fill="#0D4E84"/>
<path d="M51.6668 18.3333C51.6668 17.4432 51.5575 16.5797 51.3678 15.7461L48.0831 12.4614L48.0793 12.4645C49.2816 14.115 50.0001 16.1394 50.0001 18.3333C50.0001 23.8476 45.5144 28.3333 40.0001 28.3333C37.3998 28.3333 35.0359 27.3276 33.2556 25.6952L37.2089 29.6484C38.1051 29.8697 39.0366 30 40.0001 30C46.4332 30 51.6668 24.7664 51.6668 18.3333Z" fill="url(#paint0_linear_75_45)"/>
<path d="M40.0001 26.6667C44.6025 26.6667 48.3334 22.9357 48.3334 18.3333C48.3334 13.731 44.6025 10 40.0001 10C35.3977 10 31.6667 13.731 31.6667 18.3333C31.6667 22.9357 35.3977 26.6667 40.0001 26.6667Z" fill="#24C765"/>
<path opacity="0.1" d="M45.2177 11.8889C45.6075 12.8521 45.8334 13.8988 45.8334 15C45.8334 19.5947 42.0948 23.3333 37.5 23.3333C35.5155 23.3333 33.7153 22.607 32.2823 21.4444C33.5189 24.5001 36.5065 26.6666 40 26.6666C44.5948 26.6666 48.3334 22.928 48.3334 18.3333C48.3334 15.7231 47.1023 13.4182 45.2177 11.8889Z" fill="#0D4E84"/>
<path d="M40 5H26.6667C19.3148 5 13.3334 10.9814 13.3334 18.3333C13.3334 25.6852 19.3148 31.6667 26.6667 31.6667H40C47.3519 31.6667 53.3334 25.6852 53.3334 18.3333C53.3334 10.9814 47.3519 5 40 5Z" fill="url(#paint1_linear_75_45)"/>
</g>
<defs>
<linearGradient id="paint0_linear_75_45" x1="40.2709" y1="18.6799" x2="48.208" y2="26.6169" gradientUnits="userSpaceOnUse">
<stop stop-opacity="0.1"/>
<stop offset="1" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint1_linear_75_45" x1="15.774" y1="10.1453" x2="50.8928" y2="26.5214" gradientUnits="userSpaceOnUse">
<stop stop-color="white" stop-opacity="0.2"/>
<stop offset="1" stop-color="white" stop-opacity="0"/>
</linearGradient>
<clipPath id="clip0_75_45">
<rect width="40" height="40" fill="white" transform="translate(13.3334)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

@ -0,0 +1,16 @@
<svg width="60" height="80" viewBox="0 0 100 96" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M56.6666 16.8258H76.6666V27.7804H56.6666V16.8258Z" fill="#0D4E84"/>
<path d="M1.66671 36.9091V66.1213C1.66671 69.0266 2.72027 71.8129 4.59564 73.8673C6.471 75.9217 9.01454 77.0758 11.6667 77.0758H23.3334V25.9546H11.6667C9.01454 25.9546 6.471 27.1087 4.59564 29.1631C2.72027 31.2175 1.66671 34.0038 1.66671 36.9091Z" fill="#0D4E84"/>
<path d="M91.6667 47.8636H98.3334V55.1667H91.6667V47.8636Z" fill="#0D4E84"/>
<path d="M85 42.3864H91.6666V60.6439H85V42.3864Z" fill="#0D4E84"/>
<path d="M26.6666 86.2045H76.6666L75 75.25H28.3333L26.6666 86.2045Z" fill="#0D4E84"/>
<path d="M23.3334 58.8182H78.3334V66.1213H23.3334V58.8182Z" fill="#0D4E84"/>
<path d="M78.3334 27.7804V51.5152H23.3334V27.7804H78.3334ZM30 46.038H60V35.0834H30V46.038Z" fill="#0D4E84"/>
<path d="M11.6667 24.1288H23.3333C23.7754 24.1288 24.1993 24.3211 24.5118 24.6635C24.8244 25.0059 25 25.4703 25 25.9545H55V16.8258C55 16.3415 55.1756 15.8771 55.4882 15.5348C55.8007 15.1924 56.2246 15 56.6667 15H76.6667C77.1087 15 77.5326 15.1924 77.8452 15.5348C78.1577 15.8771 78.3333 16.3415 78.3333 16.8258V25.9545H83.3333C84.2166 25.9574 85.0629 26.3431 85.6874 27.0272C86.312 27.7114 86.664 28.6385 86.6667 29.6061V40.5606H91.6667C92.1087 40.5606 92.5326 40.753 92.8452 41.0954C93.1577 41.4378 93.3333 41.9021 93.3333 42.3864V46.0379H98.3333C98.7754 46.0379 99.1993 46.2302 99.5118 46.5726C99.8244 46.915 100 47.3794 100 47.8636V55.1667C100 55.6509 99.8244 56.1153 99.5118 56.4577C99.1993 56.8001 98.7754 56.9924 98.3333 56.9924H93.3333V60.6439C93.3333 61.1282 93.1577 61.5926 92.8452 61.9349C92.5326 62.2773 92.1087 62.4697 91.6667 62.4697H86.6667V73.4242C86.664 74.3918 86.312 75.3189 85.6874 76.0031C85.0629 76.6872 84.2166 77.0729 83.3333 77.0758H76.9667L78.0833 84.3788H81.6667C82.1087 84.3788 82.5326 84.5711 82.8452 84.9135C83.1577 85.2559 83.3333 85.7203 83.3333 86.2045V93.5076C83.3333 93.9918 83.1577 94.4562 82.8452 94.7986C82.5326 95.141 82.1087 95.3333 81.6667 95.3333H21.6667C21.2246 95.3333 20.8007 95.141 20.4882 94.7986C20.1756 94.4562 20 93.9918 20 93.5076V86.2045C20 85.7203 20.1756 85.2559 20.4882 84.9135C20.8007 84.5711 21.2246 84.3788 21.6667 84.3788H25.25L26.3667 77.0758H25C25 77.56 24.8244 78.0244 24.5118 78.3668C24.1993 78.7092 23.7754 78.9015 23.3333 78.9015H11.6667C8.57356 78.8977 5.60814 77.5499 3.42098 75.154C1.23382 72.7581 0.00353132 69.5096 2.38419e-06 66.1212V36.9091C0.00353132 33.5207 1.23382 30.2723 3.42098 27.8763C5.60814 25.4804 8.57356 24.1327 11.6667 24.1288ZM93.3333 53.3409H96.6667V49.6894H93.3333V53.3409ZM86.6667 58.8182H90V44.2121H86.6667V58.8182ZM80 73.4242H83.3333V29.6061H80V73.4242ZM75 18.6515H58.3333V25.9545H75V18.6515ZM23.3333 88.0303V91.6818H80V88.0303H23.3333ZM74.7 84.3788L73.5833 77.0758H29.75L28.6333 84.3788H74.7ZM25 73.4242H76.6667V67.947H25V73.4242ZM25 64.2955H76.6667V60.6439H25V64.2955ZM25 56.9924H76.6667V53.3409H25V56.9924ZM25 49.6894H76.6667V29.6061H25V49.6894ZM3.33334 66.1212C3.33334 68.5423 4.21131 70.8643 5.77411 72.5762C7.33692 74.2882 9.45653 75.25 11.6667 75.25H21.6667V27.7803H11.6667C9.45653 27.7803 7.33692 28.7421 5.77411 30.4541C4.21131 32.166 3.33334 34.488 3.33334 36.9091V66.1212Z" fill="#0D4E84"/>
<path d="M18.3217 31.4318H18.345C19.259 31.4318 20 32.2435 20 33.2447V33.2703C20 34.2716 19.259 35.0833 18.345 35.0833H18.3217C17.4076 35.0833 16.6667 34.2716 16.6667 33.2703V33.2447C16.6667 32.2435 17.4076 31.4318 18.3217 31.4318Z" fill="white"/>
<path d="M61.655 20.4773H61.6784C62.5924 20.4773 63.3334 21.289 63.3334 22.2903V22.3158C63.3334 23.3171 62.5924 24.1288 61.6784 24.1288H61.655C60.741 24.1288 60 23.3171 60 22.3158V22.2903C60 21.289 60.741 20.4773 61.655 20.4773Z" fill="white"/>
<path d="M18.3217 49.6895H18.345C19.259 49.6895 20 50.5012 20 51.5024V51.528C20 52.5293 19.259 53.341 18.345 53.341H18.3217C17.4076 53.341 16.6667 52.5293 16.6667 51.528V51.5024C16.6667 50.5012 17.4076 49.6895 18.3217 49.6895Z" fill="white"/>
<path d="M18.3217 67.947H18.345C19.259 67.947 20 68.7587 20 69.76V69.7856C20 70.7868 19.259 71.5985 18.345 71.5985H18.3217C17.4076 71.5985 16.6667 70.7868 16.6667 69.7856V69.76C16.6667 68.7587 17.4076 67.947 18.3217 67.947Z" fill="white"/>
<path d="M61.6666 35.0834V46.038C61.6666 46.5222 61.491 46.9866 61.1785 47.329C60.8659 47.6714 60.442 47.8638 60 47.8638H30C29.5579 47.8638 29.134 47.6714 28.8214 47.329C28.5089 46.9866 28.3333 46.5222 28.3333 46.038V35.0834C28.3333 34.5992 28.5089 34.1348 28.8214 33.7924C29.134 33.45 29.5579 33.2577 30 33.2577H60C60.442 33.2577 60.8659 33.45 61.1785 33.7924C61.491 34.1348 61.6666 34.5992 61.6666 35.0834ZM58.3333 36.9092H31.6666V44.2122H58.3333V36.9092Z" fill="#0D4E84"/>
<path d="M42.1333 0H24.8667C19.44 0 15 4.5 15 10C15 15.5 19.44 20 24.8667 20H42.1333C47.56 20 52 15.5 52 10C52 4.5 47.56 0 42.1333 0ZM24.8667 16.25C21.4133 16.25 18.7 13.5 18.7 10C18.7 6.5 21.4133 3.75 24.8667 3.75C28.32 3.75 31.0333 6.5 31.0333 10C31.0333 13.5 28.32 16.25 24.8667 16.25Z" fill="#0D4E84"/>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

@ -0,0 +1,4 @@
<svg width="108" height="108" viewBox="0 0 108 108" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M37.8142 51.5456C33.0874 48.0742 25.9972 49.2313 18.9071 52.7028C14.1765 55.0189 6.92539 53.74 2.36339 52.3566C2.75728 61.7291 3.30874 82.3256 2.36339 89.7314C1.41803 97.1371 6.13661 98.8857 8.5 98.5C21.7281 99.1686 53.5 99.5 74 99.5C83.9002 99.5 85.0819 94.7457 83.9002 93.2028V52.7028C83.9002 53.8599 81.5368 56.1741 74.4467 52.7028C67.3565 49.2315 57.903 50.3884 55.5396 51.5456C53.1762 52.7029 42.5409 55.0171 37.8142 51.5456Z" fill="#0D4E84"/>
<path d="M2.21582 38.4382V93.4944C2.21582 97.8989 5.9089 99 7.75544 99H77.5547C82.8727 99 84.2022 95.5537 84.2022 93.8305V38.4382C84.2022 25.2247 67.9527 20.4532 59.8279 19.7191C71.3503 17.9573 72.015 14.2135 65.3675 14.2135H56.5041V1H29.9139V13.1124H22.1585C14.403 15.3146 21.7891 18.2509 26.5902 19.7191C6.20435 17.0764 2.21582 31.4644 2.21582 38.4382Z" stroke="#0D4E84" stroke-width="2"/>
</svg>

After

Width:  |  Height:  |  Size: 957 B

@ -0,0 +1,9 @@
<svg width="108" height="108" viewBox="0 0 108 108" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<rect width="135" height="135" transform="matrix(-1 0 0 1 135.667 0.333374)" fill="url(#pattern0)"/>
<defs>
<pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1">
<use xlink:href="#image0_74_26" transform="scale(0.00833333)"/>
</pattern>
<image id="image0_74_26" width="120" height="120" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDkuMC1jMDAwIDc5LmRhNGE3ZTVlZiwgMjAyMi8xMS8yMi0xMzo1MDowNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2YmM4YTlmYS04ZDZmLTQwNGYtYjhlMS1jZWZmOTFlOTg2M2MiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QjkxQURFMDBCMUNDMTFFREEyREI5NzlBNzJBNzc0QzAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjkxQURERkZCMUNDMTFFREEyREI5NzlBNzJBNzc0QzAiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI0LjEgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ODk4OTljNTItY2NjMS1jMTQ3LTkzZjItNTAyNDI1ZWY0NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZiYzhhOWZhLThkNmYtNDA0Zi1iOGUxLWNlZmY5MWU5ODYzYyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnN45xIAAAVOSURBVHja7J15aBxVHMdfYhqLkkKNB9G0ooiBKnjVVoUWKiLUo/qHtYhVISJVS1UUxVoU8QAREdSWKij1joIKhQoWBLHmj2o8Yj1okdp6pKKgsdWIsWr8/pgXXN7udI/s7uzMfD7wJczsZI73mTfzZvbNbNvExISD7NJOESAYEAwIBgQDggHBgGAEA4IBwYBgQDBMhY5GzHTGJQ/mulD3bVxDDa4ji5U9ykSds8fPm0N0wjyj9DRgvj1+3ghOmJ6UzhvB0KKNrIRpm+L/Z6oPEzWY62BAMCAYEAwIhqwJ7lQeU3528bcUCxmswzIHS1w2xeUXv36dCK6Nh5WblMNqlFMPwQdipl+/+xBcG1dVMe17yuo6LHO1n1c1XIfgxmE17iFlYR3nudDPczDthdPqgl+IGd/voluSlgV1qrmlavKCguX0H2DapxFcG3cojyujwfgbEliXUssc9et3d6sWYEeL7nRnKouUucqJvsU6rhzsp7HPpyt/NmmdpvtlTmLrMqaMKMcotyrvKEPKv61UmG2NeAC8xi47vcpK5UplVplprSDnNbmsPggkl+I75SVl3b6Na77nEB3RbQWi7FTurECusT6B9axkmbP8NuzUTr5O6c674MuV7cqNFd4sGPKNnQ0JrOsGv+yhCqbt9Nu0XZKX5fEQbef+J5TrYz7/RnlN2arscFEHuLEmnnMrOScfqhyt9ClnKZcpx8ZM/6SySoftv/Mg+BDlVeWimPPc8/6QnUasDXF1TPtgk7JMkv/I8iHaau5AjNzblfkpluv8us/32xJi2zygnb8jy4LXKkuCcXZb8HTlEZcRVEttW05zxbc8l/gyyKRga2ysCMZtVi5WPnEZQ5KH/bZtDj5aoVp8RdYEd5fYc7cotqF7XUaR5L1+G7eERzJJPiJLgh9QDg/G3eyKb0FmUbJt46pgtH39eX9WBM9Wri3RoBp2OUGSt+nPbcHoftXi2VkQbDfppxUMv5+lBlUVkh/12z7JNNeEL03amzD/5cG451x+Cbd9uWpxe5oF28353oLh3S6Z+8itUovX+zKYpNeV/wKjpQWfGwy/7iAsg0VpFnxGMLwVv0VlMDfNgvuC4R34LSqDvjQLDh+g/gG/RWXQk2bBXcHwb/gtKoOuNAsOv8Qfz7tdtaTHy5RRqgRDwiA443RQBPWnlV4ERw3mEA0copu3M9pDYdZ78RzlOBd14PtJ+Up5V3lD+ayOyzxSOcFfysxQfrWGsPJtWq7pO1IidqlyjzKnxOe9PnZP917lI+VZ5WUXPaBdLWcr1yjn+50oDuutYV2NrN/Vm64FH1sxGt1tNpx5NS8psy4tl7roAeuTa1iN/crbLuoTZV1mvoy5Dj9IOVU5z0XPI59U42b/qLzooq5Ju8tMOxFcG7dlpQZ/4bPLRc/xWB/hyTs7XQWHROtlecoU2wj2hfpi9/8bY/9xUYf6UX+otY7rM30trcfNhqNc1GvjFn+qWOtrd6Jvzmu24Dkxh9lmYDX1+CYtZ6nP18orylsu+hZpP63obGE71F3+FGGNM3sOazjLNTjP2PNMfdRgQDAgGBCMYEAwIBgQDAgGBAOCEQwIBgQDggHBgGBAMIIBwYBgQDAgGBAMCAYEIxgQDAgGBAOCAcGAYAQ3hL8o4rL8nmbBH+OvLJ+nWfAA/pIto0YLfkr5FIexbPNllFrB9ma5C12OfsauCmzHv6DEG+BT14oecdGPJtsb4D500U+155UxXwZWFvMkd6TRC0ziJ94zj8S1zLo0RDDk5zoYEAwIBgQDghEMCAYEA4IBwYBgQDAgGMGQZv4TYADeyihsERESvwAAAABJRU5ErkJggg=="/>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

@ -0,0 +1,10 @@
<svg width="108" height="108" viewBox="0 0 108 108" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M98.827 74.2947H93.7364C94.4231 67.1966 88.8379 61.0536 81.7252 61.0536C74.6125 61.0536 69.0267 67.1978 69.714 74.2947H63.8904C63.2435 74.2947 62.7185 73.7691 62.7185 73.1228V29.8494C62.7185 29.2025 63.2441 28.6775 63.8904 28.6775H91.9241C96.1634 28.6775 96.5952 34.2205 97.1987 37.6535L78.7141 37.6541C78.0373 37.6541 77.4971 38.233 77.5445 38.908L78.1815 47.884C78.2254 48.5157 81.0338 52.4625 81.5699 53.2747C81.7867 53.6034 82.1547 53.8002 82.5467 53.8002H99.9995L99.9983 73.1222C99.9989 73.7697 99.4745 74.2952 98.827 74.2952V74.2947ZM97.61 39.9973L99.6245 51.4571H83.176L80.4971 47.4123L79.9715 39.9967H97.6106L97.61 39.9973Z" fill="#0D4E84"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.98754 74.2947C3.74417 74.2947 1.95823 74.6005 1.95354 73.1263C1.94885 71.7306 1.9342 62.6339 1.9342 58.578C1.9342 57.9311 2.45921 57.4061 3.10608 57.4061H63.8897C65.3962 57.4061 65.4307 59.6409 63.9952 59.7458V71.9556C65.4307 72.0605 65.3962 74.2953 63.8897 74.2953H53.6053C54.292 67.1978 48.7068 61.0542 41.5947 61.0542C34.482 61.0542 28.8974 67.1989 29.5841 74.2953H29.0093C29.696 67.1989 24.1126 61.0542 16.9987 61.0542C9.88599 61.0542 4.30023 67.1978 4.98754 74.2953V74.2947Z" fill="#0D4E84"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M81.7252 83.2373C76.147 83.2373 71.6095 78.6998 71.6095 73.1216C71.6095 67.5441 76.147 63.006 81.7252 63.006C87.3027 63.006 91.8408 67.5435 91.8408 73.1216C91.8408 78.6998 87.3033 83.2373 81.7252 83.2373ZM81.7252 78.8521C78.5658 78.8521 75.9953 76.2816 75.9953 73.1222C75.9953 69.9623 78.5658 67.3917 81.7252 67.3917C84.8851 67.3917 87.4557 69.9623 87.4557 73.1222C87.4557 76.281 84.8851 78.8521 81.7252 78.8521ZM81.7252 69.7361C77.2691 69.7361 77.2691 76.5078 81.7252 76.5078C86.1818 76.5078 86.1824 69.7361 81.7252 69.7361Z" fill="#0D4E84"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M41.5953 83.2373C36.0172 83.2373 31.4808 78.6998 31.4808 73.1216C31.4808 67.5441 36.0184 63.006 41.5953 63.006C47.1723 63.006 51.7098 67.5435 51.7098 73.1216C51.7098 78.6998 47.1723 83.2373 41.5953 83.2373ZM41.5953 78.8521C38.4359 78.8521 35.8654 76.2816 35.8654 73.1222C35.8654 69.9623 38.4359 67.3917 41.5953 67.3917C44.7541 67.3917 47.3252 69.9623 47.3252 73.1222C47.3252 76.281 44.7553 78.8521 41.5953 78.8521ZM41.5953 69.7361C37.1387 69.7361 37.1387 76.5078 41.5953 76.5078C46.052 76.5078 46.0526 69.7361 41.5953 69.7361Z" fill="#0D4E84"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.9987 83.2373C11.4212 83.2373 6.88306 78.6998 6.88306 73.1216C6.88306 67.5441 11.4206 63.006 16.9987 63.006C22.5769 63.006 27.1132 67.5435 27.1132 73.1216C27.1132 78.6998 22.5763 83.2373 16.9987 83.2373ZM16.9987 78.8521C13.8399 78.8521 11.2688 76.2816 11.2688 73.1222C11.2688 69.9623 13.8393 67.3917 16.9987 67.3917C20.1581 67.3917 22.7286 69.9623 22.7286 73.1222C22.7286 76.281 20.1587 78.8521 16.9987 78.8521ZM16.9987 69.7361C12.5421 69.7361 12.5421 76.5078 16.9987 76.5078C21.4554 76.5078 21.4554 69.7361 16.9987 69.7361Z" fill="#0D4E84"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M45.2194 60.7273C44.034 60.7273 43.0707 59.7646 43.0707 58.5786L43.0719 52.5815H47.3663L47.3674 58.5786C47.3674 59.7646 46.4047 60.7273 45.2188 60.7273H45.2194ZM14.2683 60.7273C13.0829 60.7273 12.1196 59.7646 12.1196 58.5786L12.1208 52.5815H16.4152L16.4163 58.5786C16.4163 59.7646 15.4542 60.7273 14.2683 60.7273V60.7273Z" fill="#0D4E84"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M45.0061 53.8184H15.0927C14.9087 53.8184 14.7259 53.8143 14.5437 53.8073C15.2187 53.8178 15.7454 53.2337 15.7454 52.5118V23.6355H45.0067C53.3276 23.6355 60.0976 30.4054 60.0976 38.7264C60.0976 47.0473 53.3276 53.8184 45.0067 53.8184H45.0061ZM30.0494 44.5032C27.582 44.5032 25.5746 42.4957 25.5746 40.0283C25.5746 38.1621 27.7677 35.5951 29.0509 33.5092C29.4775 32.816 30.6207 32.816 31.0472 33.5092C32.3322 35.5975 34.5236 38.1633 34.5236 40.0283C34.5236 42.4957 32.5168 44.5032 30.0494 44.5032ZM30.0494 36.2273C29.3006 37.316 27.9183 39.3533 27.9183 40.0278C27.9183 42.8326 32.1804 42.8326 32.1804 40.0278C32.1804 39.3533 30.7982 37.3172 30.0494 36.2273ZM30.0494 48.5825C24.6148 48.5825 20.1945 44.161 20.1945 38.7276C20.1945 33.2935 24.616 28.8726 30.0494 28.8726C35.4828 28.8726 39.9043 33.2941 39.9043 38.7276C39.9043 44.161 35.484 48.5825 30.0494 48.5825V48.5825ZM30.0494 31.2158C25.9074 31.2158 22.5382 34.5855 22.5382 38.727C22.5382 42.8684 25.908 46.2381 30.0494 46.2381C34.1908 46.2381 37.5605 42.8684 37.5605 38.727C37.5605 34.5855 34.1914 31.2158 30.0494 31.2158V31.2158ZM45.1045 53.8079C44.4576 53.8079 43.9326 53.2823 43.9326 52.636V24.8162C43.9326 23.2734 46.2764 23.2734 46.2764 24.8162V52.6348C46.2764 53.2817 45.7526 53.8079 45.1045 53.8079ZM14.5132 53.8061C6.45886 53.5009 0.0012207 46.8545 0.0012207 38.727C0.0012207 30.9767 5.87351 24.5748 13.4011 23.731V52.513C13.4011 53.2044 13.8939 53.771 14.5126 53.8061H14.5132Z" fill="#0D4E84"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M46.2108 25.9793C45.3899 25.9793 37.219 25.9793 36.1403 25.9793C35.4934 25.9793 34.9684 25.4543 34.9684 24.8074V19.8386C34.9684 19.1918 35.4934 18.6667 36.1403 18.6667H46.2108C46.8577 18.6667 47.3827 19.1918 47.3827 19.8386V24.8074C47.3827 25.4543 46.8589 25.9793 46.2108 25.9793Z" fill="#0D4E84"/>
</svg>

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 924 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

34
ios/.gitignore vendored

@ -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.arminta.supplier.watermanagementSupplier;
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.arminta.supplier.watermanagementSupplier;
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.arminta.supplier.watermanagementSupplier;
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"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 531 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 979 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 745 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 979 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 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"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

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>Watermanagement Supplier</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>watermanagement_supplier</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,404 @@
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:watermanagement/dashboard.dart';
import 'package:watermanagement/google_maps_place_picker_mb/google_maps_place_picker.dart';
import 'package:watermanagement/keys.dart';
import 'package:watermanagement/settings.dart';
import 'login.dart';
import 'package:geolocator/geolocator.dart';
import 'package:geocoding/geocoding.dart';
import 'package:image_picker/image_picker.dart';
import 'package:flutter/services.dart';
import 'dart:io' show File, Platform;
import 'package:google_maps_flutter_android/google_maps_flutter_android.dart';
import 'package:google_maps_flutter_platform_interface/google_maps_flutter_platform_interface.dart';
import 'package:location/location.dart' as locationmap;
import 'google_maps_place_picker_mb/src/models/pick_result.dart';
import 'google_maps_place_picker_mb/src/place_picker.dart';
class Deliverboy extends StatefulWidget {
const Deliverboy({Key? key}) : super(key: key);
@override
State<Deliverboy> createState() => _deliverboyState();
}
class _deliverboyState extends State<Deliverboy> {
TextEditingController deliverNameController = TextEditingController();
TextEditingController deliveryPhoneNumberController = TextEditingController();
TextEditingController deliveryAlternativePhoneNumberController = TextEditingController();
TextEditingController deliveryAddressCapturingController = TextEditingController();
String _currentAddress ='';
String address1 = '';
String address2 = '';
String city = '';
String state = '';
String zip = '';
String status = '';
PickResult? selectedPlace;
bool _mapsInitialized = false;
final String _mapsRenderer = "latest";
var kInitialPosition = const LatLng(15.462477, 78.717401);
locationmap.Location location = locationmap.Location();
final GoogleMapsFlutterPlatform mapsImplementation =
GoogleMapsFlutterPlatform.instance;
void initRenderer() {
if (_mapsInitialized) return;
if (mapsImplementation is GoogleMapsFlutterAndroid) {
switch (_mapsRenderer) {
case "legacy":
(mapsImplementation as GoogleMapsFlutterAndroid)
.initializeWithRenderer(AndroidMapRenderer.legacy);
break;
case "latest":
(mapsImplementation as GoogleMapsFlutterAndroid)
.initializeWithRenderer(AndroidMapRenderer.latest);
break;
}
}
setState(() {
_mapsInitialized = true;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: SingleChildScrollView(
child: Column(
children: <Widget>[
const SizedBox(
height: 15,
),
Container(
height: MediaQuery.of(context).size.height * .15,
width: double.infinity,
child: Image(
image: const AssetImage('images/logo.png'),
height: MediaQuery.of(context).size.height * .25,
)),
const SizedBox(
height: 15,
),
Container(
//padding: const EdgeInsets.fromLTRB(10, 10, 10, 0),
padding: const EdgeInsets.all(10),
child: TextFormField(
cursorColor: greyColor,
controller: deliverNameController,
textCapitalization: TextCapitalization.characters,
decoration: const InputDecoration(
prefixIcon: Icon(
Icons.propane_tank,
color: greyColor,
),
border: OutlineInputBorder(
borderSide: BorderSide(color: greyColor)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
labelText: 'Enter deliveryboy name',
labelStyle: TextStyle(
color: greyColor, //<-- SEE HERE
),
),
), //tanker name
),
const SizedBox(
height: 5,
),
Container(
padding: const EdgeInsets.all(10),
child: TextFormField(
cursorColor: greyColor,
controller: deliveryPhoneNumberController,
keyboardType: TextInputType.number,
maxLength: 10,
decoration: const InputDecoration(
prefixIcon: Icon(
Icons.phone_android,
color: greyColor,
),
border: OutlineInputBorder(
borderSide: BorderSide(color: greyColor)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
labelText: 'Enter phone number',
labelStyle: TextStyle(
color: greyColor, //<-- SEE HERE
),
),
),
), //phone number
const SizedBox(
height: 5,
),
Container(
padding: const EdgeInsets.all(10),
child: TextFormField(
cursorColor: greyColor,
controller: deliveryAlternativePhoneNumberController,
keyboardType: TextInputType.number,
maxLength: 10,
decoration: const InputDecoration(
prefixIcon: Icon(
Icons.phone_android,
color: greyColor,
),
border: OutlineInputBorder(
borderSide: BorderSide(color: greyColor)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
labelText: 'Enter alternative phone number',
labelStyle: TextStyle(
color: greyColor, //<-- SEE HERE
),
),
),
), //alternative phone number
const SizedBox(
height: 5,
),
GestureDetector(
child:Container(
padding: const EdgeInsets.all(10),
child: TextFormField(
cursorColor: greyColor,
controller: deliveryAddressCapturingController,
onTap:()
{
//=============================================================================================
location.serviceEnabled().then((value) {
if (value) {
initRenderer();
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return PlacePicker(
resizeToAvoidBottomInset: false,
hintText: "Find a place ...",
searchingText: "Please wait ...",
selectText: "Select place",
outsideOfPickAreaText: "Place not in area",
initialPosition: kInitialPosition,
useCurrentLocation: true,
selectInitialPosition: true,
usePinPointingSearch: true,
usePlaceDetailSearch: true,
zoomGesturesEnabled: true,
zoomControlsEnabled: true,
onMapCreated: (GoogleMapController controller) {},
onPlacePicked: (PickResult result) {
setState(() {
selectedPlace = result;
if(selectedPlace!.types!.length==1){
deliveryAddressCapturingController.text =
selectedPlace!.formattedAddress!;
}
else{
deliveryAddressCapturingController.text =selectedPlace!.name!+', '+selectedPlace!.formattedAddress!;
}
Navigator.of(context).pop();
});
},
onMapTypeChanged: (MapType mapType) {},
apiKey: Platform.isAndroid
? APIKeys.androidApiKey
: APIKeys.iosApiKey,
forceAndroidLocationManager: true,
);
},
),
);
} else {
showGeneralDialog(
context: context,
pageBuilder: (context, x, y) {
return Scaffold(
backgroundColor: Colors.grey.withOpacity(.5),
body: Center(
child: Container(
width: double.infinity,
height: 150,
padding:
const EdgeInsets.symmetric(horizontal: 20),
child: Card(
child: Padding(
padding: const EdgeInsets.all(10.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text(
"Please enable the location",
style: TextStyle(
fontSize:18,
fontWeight: FontWeight.w500,
),
),
const SizedBox(
height: 20,
),
ElevatedButton(
onPressed: () {
Navigator.pop(context);
},
child: const Text("Cancel"),
),
],
),
),
),
),
),
);
},
);
}
});
//=====================================================================================
// _getCurrentPosition();
},
keyboardType: TextInputType.streetAddress,
readOnly: false,
decoration: const InputDecoration(
prefixIcon: Icon(
Icons.location_on_rounded,
color: greyColor,
),
border: OutlineInputBorder(
borderSide: BorderSide(color: greyColor)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
labelText: 'Pic Your office Address',
labelStyle: TextStyle(
color: greyColor, //<-- SEE HERE
),
),
),
),
/* onTap: ()
{
},*///address
),
const SizedBox(
height: 5,
),
Container(
width: MediaQuery.of(context).size.width * .99,
height: 50,
padding: const EdgeInsets.fromLTRB(10, 0, 10, 0),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: primaryColor, // background
onPrimary: Colors.white, // foreground
),
onPressed: () async {
if (deliverNameController.text != '' &&
deliveryPhoneNumberController.text != ''
) {
AppSettings.preLoaderDialog(context);
var payload = new Map<String, dynamic>();
payload["Name"] = deliverNameController.text.toString();
payload["phone"] = deliveryPhoneNumberController.text.toString();
payload["alternativeContactNumber"] = deliveryAlternativePhoneNumberController.text.toString();
payload["address"] = deliveryAddressCapturingController.text;
payload["city"] = city;
payload["state"] = state;
payload["zip"] = zip;
payload["status"] = status;
bool deliveryboyStatus = await AppSettings.addDeliverboy(payload);
try {
if (deliveryboyStatus) {
Navigator.of(context,rootNavigator: true).pop();
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const Dashboard()),
);
AppSettings.longSuccessToast(
"Deliverboy Created Successfully");
deliverNameController.text = '';
deliveryPhoneNumberController.text = '';
deliveryAlternativePhoneNumberController.text = '';
/* Navigator.pop(context);
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => TanksView()),
);*/
//Navigator.of(context).pushNamed('/tanksview');
} else {
Navigator.of(context,rootNavigator: true).pop();
AppSettings.longFailedToast("Deliverboy not Created Successfully");
}
} catch (exception) {
print(exception);
}
}
else {
AppSettings.longFailedToast("Please enter valid details");
}
},
child: const Text(
'Add Deliverboy',
style: TextStyle(
fontSize: 25,
),
),
)),
],
),
)),
);
}
}

@ -0,0 +1,504 @@
import 'package:flutter/material.dart';
import 'package:watermanagement/settings.dart';
import 'dashboard.dart';
class AddTankers extends StatefulWidget {
const AddTankers({Key? key}) : super(key: key);
@override
State<AddTankers> createState() => _AddTankersState();
}
class _AddTankersState extends State<AddTankers> {
TextEditingController tankerNameController = TextEditingController();
TextEditingController tankerPhoneNumberController = TextEditingController();
TextEditingController tankerAlternativePhoneNumberController = TextEditingController();
TextEditingController tankerDrinkingPriceController = TextEditingController();
TextEditingController tankerBorePriceController = TextEditingController();
TextEditingController tankerCapacityController = TextEditingController();
bool isCapacityText = false;
bool isLoading = false;
bool isTankerDataLoading = false;
bool isBoreDataLoading = false;
bool isGovtPipelineDataLoading = false;
bool isDrinkingChecked = false;
bool isBoreChecked = false;
bool isFiveChecked = false;
bool isTenChecked = false;
bool isFifteenChecked = false;
bool isTwentyChecked = false;
bool isUpdateDrinkingChecked = false;
bool isUpdateBoreChecked = false;
bool isUpdateFiveChecked = false;
bool isUpdateTenChecked = false;
bool isUpdateFifteenChecked = false;
bool isUpdateTwentyChecked = false;
/*
bool isPriceDrinking = false;
bool isPriceBore = false;*/
List waterTypes = [];
List waterPrice = [];
List updateWaterTypes = [];
late TabController _controller;
String dropdownTypeOfWater = 'Bore water';
String dropdownTypeOfWaterForUpadetBore = 'Bore water';
String dropdownTypeOfWaterForTanker = 'Drinking';
var typeOfWaterItems = [
'Bore water',
'Drinking Water',
];
var typeOfWaterForUpadetBore = [
'Bore water',
'Drinking Water',
];
var typeOfWaterItemsForTanker = [
'Drinking',
'Bore',
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: SingleChildScrollView(
child: Column(
children: <Widget>[
const SizedBox(
height: 15,
),
Container(
height: MediaQuery.of(context).size.height * .15,
width: double.infinity,
child: Image(
image: const AssetImage('images/logo.png'),
height: MediaQuery.of(context).size.height * .25,
)),
const SizedBox(
height: 15,
),
Container(
//padding: const EdgeInsets.fromLTRB(10, 10, 10, 0),
padding: const EdgeInsets.all(10),
child: TextFormField(
cursorColor: greyColor,
controller: tankerNameController,
textCapitalization: TextCapitalization.characters,
decoration: const InputDecoration(
prefixIcon: Icon(
Icons.propane_tank,
color: greyColor,
),
border: OutlineInputBorder(
borderSide: BorderSide(color: greyColor)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
labelText: 'Enter tanker name',
labelStyle: TextStyle(
color: greyColor, //<-- SEE HERE
),
),
), //tanker name
),
const SizedBox(
height: 5,
),
Container(
padding: const EdgeInsets.all(10),
child: TextFormField(
cursorColor: greyColor,
controller: tankerPhoneNumberController,
keyboardType: TextInputType.number,
maxLength: 10,
decoration: const InputDecoration(
prefixIcon: Icon(
Icons.phone_android,
color: greyColor,
),
border: OutlineInputBorder(
borderSide: BorderSide(color: greyColor)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
labelText: 'Enter phone number',
labelStyle: TextStyle(
color: greyColor, //<-- SEE HERE
),
),
),
), //phone number
const SizedBox(
height: 5,
),
Container(
padding: const EdgeInsets.all(10),
child: TextFormField(
cursorColor: greyColor,
controller: tankerAlternativePhoneNumberController,
keyboardType: TextInputType.number,
maxLength: 10,
decoration: const InputDecoration(
prefixIcon: Icon(
Icons.phone_android,
color: greyColor,
),
border: OutlineInputBorder(
borderSide: BorderSide(color: greyColor)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
labelText: 'Enter alternative phone number',
labelStyle: TextStyle(
color: greyColor, //<-- SEE HERE
),
),
),
), //alternative phone number
const SizedBox(
height: 5,
),
Visibility(
visible: true,
child: Container(
padding: const EdgeInsets.all(10),
child: TextFormField(
onChanged: (value) {
if (tankerCapacityController.text != '') {
setState(() {
isCapacityText = true;
});
} else {
setState(() {
isCapacityText = false;
});
}
value = '${AppSettings.formNum(
value.replaceAll(',', ''),
)}';
tankerCapacityController.value = TextEditingValue(
text: value,
selection: TextSelection.collapsed(
offset: value.length,
),
);
},
cursorColor: greyColor,
controller: tankerCapacityController,
keyboardType: TextInputType.number,
decoration: InputDecoration(
prefixIcon: Icon(
Icons.ac_unit_outlined,
color: greyColor,
),
suffix: capacitySuffixText(),
border: OutlineInputBorder(
borderSide: BorderSide(color: greyColor)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
labelText: 'Enter Capacity',
labelStyle: TextStyle(
color: greyColor, //<-- SEE HERE
),
),
),
),
), //capacity
SizedBox(
height: 5,
),
Visibility(
visible: false, //isCapacityText
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
TextButton(
child: const Text(
'Add Capacity',
style: TextStyle(
fontSize: 15,
decoration: TextDecoration.underline,
color: primaryColor),
),
onPressed: () {
// showCapacityDialog();
},
),
/* Text('Add Capacity'),
IconButton(
iconSize: 20,
icon: const Icon(
Icons.add,
color: primaryColor,
),
onPressed: () {
showCapacityDialog();
},
),*/
],
),
),
SizedBox(
height: 5,
),
Container(
padding: EdgeInsets.fromLTRB(20, 0, 20, 0),
child: Visibility(
visible: true,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Choose type of water',
style: TextStyle(color: primaryColor,fontSize: 20),
),
SizedBox(height:10),
Row(
children: [
Text(
'Drinking',
style: TextStyle(color: Colors.black,fontSize: 20),
),
Checkbox(
checkColor: Colors.white,
activeColor: primaryColor,
value: isDrinkingChecked,
onChanged: (bool? value) {
setState(() {
isDrinkingChecked = value!;
});
if (isDrinkingChecked) {
waterTypes
.add({'typeofwater': 'Drinking Water'});
// waterPrice.add({'price': tankerDrinkingPriceController.text.toString()});
} else {
waterTypes.removeWhere((e) => e['typeofwater'].toString().toUpperCase() == 'DRINKING WATER');
// waterPrice.removeWhere((e) => e['price'].toString().toUpperCase() == tankerDrinkingPriceController.text.toString());
}
},
),
Visibility(
visible: isDrinkingChecked,
child: Container(
height: 40,
width:200,
child:TextFormField(
cursorColor: greyColor,
controller: tankerDrinkingPriceController,
keyboardType: TextInputType.number,
/*onSaved: (v){
waterPrice.add({'price': v.toString()});
},*/
decoration: const InputDecoration(
prefixIcon: Icon(
Icons.currency_rupee,
color: greyColor,
),
border: OutlineInputBorder(
borderSide: BorderSide(color: greyColor)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
labelText: 'Enter Price',
labelStyle: TextStyle(
color: greyColor, //<-- SEE HERE
),
contentPadding: EdgeInsets.all(5),
),
),
),
)
],
),
SizedBox(height:10),
Row(
children: [
Text(
'Bore',
style: TextStyle(color: Colors.black,fontSize: 20),
),
SizedBox(width: 35),
Checkbox(
checkColor: Colors.white,
activeColor: primaryColor,
value: isBoreChecked,
onChanged: (bool? value) {
setState(() {
isBoreChecked = value!;
});
if (isBoreChecked) {
waterTypes
.add({'typeofwater': 'Bore Water'});
} else {
waterTypes.removeWhere((e) => e['typeofwater'].toString().toUpperCase() == 'BORE WATER');
}
},
),
Visibility(
visible: isBoreChecked,
child: Container(
height: 40,
width:200,
child:TextFormField(
cursorColor: greyColor,
controller: tankerBorePriceController,
keyboardType: TextInputType.number,
decoration: const InputDecoration(
prefixIcon: Icon(
Icons.currency_rupee,
color: greyColor,
),
border: OutlineInputBorder(
borderSide: BorderSide(color: greyColor)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
labelText: 'Enter Price',
labelStyle: TextStyle(
color: greyColor, //<-- SEE HERE
),
contentPadding: EdgeInsets.all(5),
),
),
),)
],
)
],
))
),
SizedBox(
height: 20,
),
Container(
width: MediaQuery.of(context).size.width * .99,
height: 50,
padding: const EdgeInsets.fromLTRB(10, 0, 10, 0),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: primaryColor, // background
onPrimary: Colors.white, // foreground
),
onPressed: () async{
if (tankerNameController.text != '' &&
tankerPhoneNumberController.text != '' &&
tankerAlternativePhoneNumberController.text != '' &&
tankerDrinkingPriceController.text != '' &&
waterTypes.isNotEmpty) {
waterPrice=[];
if(isDrinkingChecked){
waterPrice.add({'price': tankerDrinkingPriceController.text.toString()});
}
/*else{
waterTypes.removeWhere((e) => e['price'].toString() == tankerDrinkingPriceController.text.toString());
}*/
if(isBoreChecked){
waterPrice.add({'price': tankerBorePriceController.text.toString()});
}
/*else{
waterTypes.removeWhere((e) => e['price'].toString() == tankerBorePriceController.text.toString());
}*/
var payload = new Map<String, dynamic>();
payload["tankerName"] = tankerNameController.text.toString();
payload["phoneNumber"] = tankerPhoneNumberController.text.toString();
payload["alternative_phoneNumber"] = tankerAlternativePhoneNumberController.text.toString();
payload["capacity"] = tankerCapacityController.text.toString();
payload["typeofwater"] = waterTypes;
payload["price"] = waterPrice;
payload["supplier_address"] = '';
payload["supplier_name"] = AppSettings.suppliername;
bool tankStatus = await AppSettings.addTankers(payload);
try {
if (tankStatus) {
AppSettings.longSuccessToast(
"Tanker Created Successfully");
tankerNameController.text = '';
tankerPhoneNumberController.text = '';
tankerCapacityController.text = '';
waterPrice=[];
waterTypes=[];
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const Dashboard()),
);
}
else {
AppSettings.longFailedToast("Tanker Creation failed");
}
} catch (exception) {
print(exception);
}
} else {
AppSettings.longFailedToast("Please enter valid details");
}
},
child: const Text(
'Create Tanker',
style: TextStyle(
fontSize: 25,
),
),
)),
],
),
)),
);
}
}

@ -0,0 +1,458 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:watermanagement/adddeliveryboy.dart';
import 'package:watermanagement/addtankers.dart';
import 'package:watermanagement/login.dart';
import 'package:watermanagement/place_picker.dart';
import 'package:watermanagement/settings.dart';
import 'package:image_picker/image_picker.dart';
import 'package:watermanagement/tanksview.dart';
import 'dart:io';
class Dashboard extends StatefulWidget {
const Dashboard({super.key});
@override
State<Dashboard> createState() => _DashboardState();
}
class _DashboardState extends State<Dashboard> {
int _selectedIndex = 0;
TextEditingController tankNameController = TextEditingController();
TextEditingController blockNameController = TextEditingController();
TextEditingController capacityController = TextEditingController();
static const TextStyle optionStyle =
TextStyle(fontSize: 30, fontWeight: FontWeight.bold);
final ImagePicker _picker = ImagePicker();
/*Future<void> uploadProfileApi(image) async {
var payload = new Map<String, dynamic>();
payload["picture"] = image.toString();
var response1= await AppSettings.updateProfilePicture(payload);
print(response1);
}*/
Future pickImageFromGallery() async {
try {
final image = await _picker.pickImage(source: ImageSource.gallery);
if (image == null) return;
final imageTemp = File(image.path);
setState(() {
AppSettings.updatedImage = imageTemp;
});
// uploadProfileApi(AppSettings.updatedImage);
AppSettings.saveProfile(image.path);
} on PlatformException catch (e) {
print('Failed to pick image: $e');
}
}
Future takeImageFromCamera() async {
try {
final image = await _picker.pickImage(source: ImageSource.camera);
if (image == null) return;
final imageTemp = File(image.path);
setState(() {
AppSettings.updatedImage = imageTemp;
});
//uploadProfileApi(AppSettings.updatedImage);
AppSettings.saveProfile(image.path);
} on PlatformException catch (e) {
print('Failed to pick image: $e');
}
}
Widget _dashBoard() {
return Container(
color: screenBackgroundColor,
child: Column(
children: <Widget>[
Container(
height: MediaQuery.of(context).size.height * .330,
width: double.infinity,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(0),
),
//color: Colors.red,
child: FittedBox(
child:Image(
image: const AssetImage('images/appbg.png'),
),
fit: BoxFit.fill,
)
),
SizedBox(
height: 5
),
],
),
);
}
showLogoutAlertDialog(context){
return showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context) {
return StatefulBuilder(
builder: (BuildContext context, StateSetter setState) {
return AlertDialog(
title: const Text('Do you really want to logout?'),
actions: <Widget>[
TextButton(
child: Text('No',style:textButtonStyle()),
onPressed: () {
Navigator.of(context).pop();
},
),
TextButton(
child: Text('Yes',style:textButtonStyle()),
onPressed: () async{
await AppSettings.clearSharedPreferences();
await Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context) => Login()),(Route<dynamic> route) => false,);
},
),
]
);
});
}
);
}
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async {
if(_selectedIndex==0){
final shouldPop = await showDialog<bool>(context: context, builder: (context) {
return AlertDialog(
title: const Text('Do you want to exit app?',
style: TextStyle(
color: primaryColor,
fontSize: 20,
)),
actionsAlignment: MainAxisAlignment.spaceBetween,
actions: [
TextButton(
onPressed: () {
SystemNavigator.pop();
},
child: const Text('Yes',
style: TextStyle(
color: primaryColor,
fontSize: 20,
)),
),
TextButton(
onPressed: () {
Navigator.of(context).pop(false);
},
child: const Text('No',
style: TextStyle(
color: primaryColor,
fontSize: 20,
)),
),
],
);
},
);
return shouldPop!;
}
else{
setState(() {
_selectedIndex=0;
});
return false;
}
},
child: Scaffold(
resizeToAvoidBottomInset: false,
appBar:AppSettings.appBar('Arminta Water Management'),
drawer: Drawer(
// Add a ListView to the drawer. This ensures the user can scroll
// through the options in the drawer if there isn't enough vertical
// space to fit everything.
//backgroundColor: screenBackgroundColor,
child: ListView(
// Important: Remove any padding from the ListView.
padding: EdgeInsets.zero,
children: [
DrawerHeader(
decoration: const BoxDecoration(
color: primaryColor,
),
child: Row(
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(child: GestureDetector(
child: Container(
width: MediaQuery.of(context).size.width * .20,
height: MediaQuery.of(context).size.height * .15,
decoration: BoxDecoration(
shape: BoxShape.circle,
image: DecorationImage(
image: (AppSettings.updatedImage != null) ? FileImage(AppSettings.updatedImage!) as ImageProvider : AssetImage("images/profile_pic.png"), // picked file
fit: BoxFit.cover)),
),
onTap: () {
showModalBottomSheet<void>(
context: context,
builder: (BuildContext context) {
return SizedBox(
height: 200,
child: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
GestureDetector(
child: Icon(
Icons.camera_alt_outlined,
size: 100,
color: greyColor,
),
onTap: () async {
await takeImageFromCamera();
Navigator.pop(context);
},
),
SizedBox(
width:
MediaQuery.of(context).size.width * .20,
),
GestureDetector(
child: Icon(
Icons.photo,
size: 100,
color: greyColor,
),
onTap: () async {
await pickImageFromGallery();
Navigator.pop(context);
},
),
],
),
),
);
});
},
),),
Text(
AppSettings.suppliername,
style: TextStyle(color: Colors.white, fontSize: 15),
),
Text(
AppSettings.phoneNumber,
style: TextStyle(color: Colors.white, fontSize: 15),
),
Text(
AppSettings.email,
style: TextStyle(color: Colors.white, fontSize: 15),
),
],
),
Container()
],
)),
ListTile(
title: Row(
children: const [
Image(image: const AssetImage('images/ic_launcher.png'),height: 25,width: 25,fit: BoxFit.fill),
const SizedBox(
width: 10,
),
const SizedBox(
width: 10,
),
Text('Edit Profile',style: TextStyle(color:primaryColor)),
],
),
onTap: () {
/* Navigator.push(
context,
MaterialPageRoute(builder: (context) => UpdateProfile()),
);*/
},
),
Divider(
color: Colors.grey,
),
// Add Tanks
ListTile(
title: Row(
children: const [
Image(image: const AssetImage('images/ic_launcher.png'),height: 25,width: 25,fit: BoxFit.fill),
const SizedBox(
width: 10,
),
Text('Add Tankers',style: TextStyle(color:primaryColor)),
],
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => AddTankers()),
);
},
),
Divider(
color: Colors.grey,
),
// Add Tanks
ListTile(
title: Row(
children: const [
Image(image: const AssetImage('images/ic_launcher.png'),height: 25,width: 25,fit: BoxFit.fill),
const SizedBox(
width: 10,
),
Text('Add Deliveryboy',style: TextStyle(color:primaryColor)),
],
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => Deliverboy()),
);
},
),
Divider(
color: Colors.grey,
),
// Add Tanks
ListTile(
title: Row(
children: const [
Image(image: const AssetImage('images/ic_launcher.png'),height: 25,width: 25,fit: BoxFit.fill),
const SizedBox(
width: 10,
),
Text('Get All Tanks',style: TextStyle(color:primaryColor)),
],
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => TanksView()),
);
},
),
Divider(
color: Colors.grey,
),
ListTile(
title: Row(
children: const [
Image(image: const AssetImage('images/ic_launcher.png'),height: 25,width: 25,fit: BoxFit.fill),
const SizedBox(
width: 10,
),
Text('Customer Support', style: TextStyle(color:primaryColor)),
],
),
onTap: () {},
),
Divider(
color: Colors.grey,
),
ListTile(
title: Row(
children: const [
Image(image: const AssetImage('images/ic_launcher.png'),height: 25,width: 25,fit: BoxFit.fill),
const SizedBox(
width: 10,
),
Text('Logout', style: TextStyle(color:primaryColor)),
],
),
onTap: () async{
showLogoutAlertDialog(context);
},
),
],
),
),
body: _dashBoard(),
/*body: IndexedStack(
index: _selectedIndex,
children: screens,
),*/
/* bottomNavigationBar: Container(
//height: MediaQuery.of(context).size.height,
child: BottomNavigationBar(
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(
Icons.home,
),
label: 'Home',
),
BottomNavigationBarItem(
icon: Icon(Icons.propane_tank),
label: 'Add Tanks',
),
*//*BottomNavigationBarItem(
icon: Icon(Icons.private_connectivity_outlined),
label: 'CreateConnections',
),*//*
BottomNavigationBarItem(
icon: Icon(Icons.list_alt),
label: 'Add Tanker',
),
],
currentIndex: _selectedIndex,
selectedItemColor: primaryColor,
unselectedItemColor: greyColor,
showUnselectedLabels: true,
onTap: _onItemTapped,
),
),*/
),
);
}
}

@ -0,0 +1,97 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
import 'package:geocoding/geocoding.dart';
class LocationPage extends StatefulWidget {
const LocationPage({Key? key}) : super(key: key);
@override
State<LocationPage> createState() => _LocationPageState();
}
class _LocationPageState extends State<LocationPage> {
String? _currentAddress;
Position? _currentPosition;
Future<bool> _handleLocationPermission() async {
bool serviceEnabled;
LocationPermission permission;
serviceEnabled = await Geolocator.isLocationServiceEnabled();
if (!serviceEnabled) {
ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
content: Text(
'Location services are disabled. Please enable the services')));
return false;
}
permission = await Geolocator.checkPermission();
if (permission == LocationPermission.denied) {
permission = await Geolocator.requestPermission();
if (permission == LocationPermission.denied) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('Location permissions are denied')));
return false;
}
}
if (permission == LocationPermission.deniedForever) {
ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
content: Text(
'Location permissions are permanently denied, we cannot request permissions.')));
return false;
}
return true;
}
Future<void> _getCurrentPosition() async {
final hasPermission = await _handleLocationPermission();
if (!hasPermission) return;
await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high)
.then((Position position) {
setState(() => _currentPosition = position);
_getAddressFromLatLng(_currentPosition!);
}).catchError((e) {
debugPrint(e);
});
}
Future<void> _getAddressFromLatLng(Position position) async {
await placemarkFromCoordinates(
_currentPosition!.latitude, _currentPosition!.longitude)
.then((List<Placemark> placemarks) {
Placemark place = placemarks[0];
_currentAddress = '${place.street}, ${place.subLocality}, ${place.locality}, ${place.postalCode}, ${place.country}';
print(place);
setState(() {
});
}).catchError((e) {
debugPrint(e);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Location Page")),
body: SafeArea(
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('LAT: ${_currentPosition?.latitude ?? ""}'),
Text('LNG: ${_currentPosition?.longitude ?? ""}'),
Text('ADDRESS: ${_currentAddress ?? ""}'),
const SizedBox(height:32),
ElevatedButton(
onPressed: _getCurrentPosition,
child: const Text("Get Current Location"),
)
],
),
),
),
);
}
}

@ -0,0 +1,7 @@
library google_maps_place_picker_mb;
export 'src/models/pick_result.dart';
export 'src/components/floating_card.dart';
export 'src/components/rounded_frame.dart';
export 'src/models/circle_area.dart';
export 'src/place_picker.dart';

@ -0,0 +1,162 @@
import 'dart:async';
import 'package:flutter/widgets.dart';
import 'package:geolocator/geolocator.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:google_maps_webservice/geocoding.dart';
import 'package:google_maps_webservice/places.dart';
import 'package:http/http.dart';
import 'package:provider/provider.dart';
import '../src/models/pick_result.dart';
import '../src/place_picker.dart';
class PlaceProvider extends ChangeNotifier {
PlaceProvider(
String apiKey,
String? proxyBaseUrl,
Client? httpClient,
Map<String, dynamic> apiHeaders,
) {
places = GoogleMapsPlaces(
apiKey: apiKey,
baseUrl: proxyBaseUrl,
httpClient: httpClient,
apiHeaders: apiHeaders as Map<String, String>?,
);
geocoding = GoogleMapsGeocoding(
apiKey: apiKey,
baseUrl: proxyBaseUrl,
httpClient: httpClient,
apiHeaders: apiHeaders as Map<String, String>?,
);
}
static PlaceProvider of(BuildContext context, {bool listen = true}) =>
Provider.of<PlaceProvider>(context, listen: listen);
late GoogleMapsPlaces places;
late GoogleMapsGeocoding geocoding;
String? sessionToken;
bool isOnUpdateLocationCooldown = false;
LocationAccuracy? desiredAccuracy;
bool isAutoCompleteSearching = false;
Future<void> updateCurrentLocation(bool forceAndroidLocationManager) async {
bool serviceEnabled;
LocationPermission permission;
// Test if location services are enabled.
serviceEnabled = await Geolocator.isLocationServiceEnabled();
if (!serviceEnabled) {
// Location services are not enabled don't continue
// accessing the position and request users of the
// App to enable the location services.
return Future.error('Location services are disabled.');
}
permission = await Geolocator.checkPermission();
if (permission == LocationPermission.denied) {
permission = await Geolocator.requestPermission();
if (permission == LocationPermission.denied) {
// Permissions are denied, next time you could try
// requesting permissions again (this is also where
// Android's shouldShowRequestPermissionRationale
// returned true. According to Android guidelines
// your App should show an explanatory UI now.
return Future.error('Location permissions are denied');
}
}
if (permission == LocationPermission.deniedForever) {
// Permissions are denied forever, handle appropriately.
return Future.error(
'Location permissions are permanently denied, we cannot request permissions.');
}
Position position = await Geolocator.getCurrentPosition(
desiredAccuracy: LocationAccuracy.best,
);
currentPosition = position;
// notifyListeners();
}
Position? _currentPosition;
Position? get currentPosition => _currentPosition;
set currentPosition(Position? newPosition) {
_currentPosition = newPosition;
notifyListeners();
}
Timer? _debounceTimer;
Timer? get debounceTimer => _debounceTimer;
set debounceTimer(Timer? timer) {
_debounceTimer = timer;
notifyListeners();
}
CameraPosition? _previousCameraPosition;
CameraPosition? get prevCameraPosition => _previousCameraPosition;
setPrevCameraPosition(CameraPosition? prePosition) {
_previousCameraPosition = prePosition;
}
CameraPosition? _currentCameraPosition;
CameraPosition? get cameraPosition => _currentCameraPosition;
setCameraPosition(CameraPosition? newPosition) {
_currentCameraPosition = newPosition;
}
PickResult? _selectedPlace;
PickResult? get selectedPlace => _selectedPlace;
set selectedPlace(PickResult? result) {
_selectedPlace = result;
notifyListeners();
}
SearchingState _placeSearchingState = SearchingState.Idle;
SearchingState get placeSearchingState => _placeSearchingState;
set placeSearchingState(SearchingState newState) {
_placeSearchingState = newState;
notifyListeners();
}
GoogleMapController? _mapController;
GoogleMapController? get mapController => _mapController;
set mapController(GoogleMapController? controller) {
_mapController = controller;
notifyListeners();
}
PinState _pinState = PinState.Preparing;
PinState get pinState => _pinState;
set pinState(PinState newState) {
_pinState = newState;
notifyListeners();
}
bool _isSeachBarFocused = false;
bool get isSearchBarFocused => _isSeachBarFocused;
set isSearchBarFocused(bool focused) {
_isSeachBarFocused = focused;
notifyListeners();
}
MapType _mapType = MapType.normal;
MapType get mapType => _mapType;
setMapType(MapType mapType, {bool notify = false}) {
_mapType = mapType;
if (notify) notifyListeners();
}
switchMapType() {
_mapType = MapType.values[(_mapType.index + 1) % MapType.values.length];
if (_mapType == MapType.none) _mapType = MapType.normal;
notifyListeners();
}
}

@ -0,0 +1,16 @@
import 'package:flutter/widgets.dart';
import 'package:provider/provider.dart';
class SearchProvider extends ChangeNotifier {
static SearchProvider of(BuildContext context, {bool listen = true}) =>
Provider.of<SearchProvider>(context, listen: listen);
String prevSearchTerm = "";
String _searchTerm = "";
String get searchTerm => _searchTerm;
set searchTerm(String newValue) {
_searchTerm = newValue;
notifyListeners();
}
}

@ -0,0 +1,341 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:google_maps_webservice/places.dart';
import 'package:provider/provider.dart';
import 'package:watermanagement/google_maps_place_picker_mb/google_maps_place_picker.dart';
import 'package:watermanagement/google_maps_place_picker_mb/providers/place_provider.dart';
import 'package:watermanagement/google_maps_place_picker_mb/providers/search_provider.dart';
import 'package:watermanagement/google_maps_place_picker_mb/src/components/prediction_tile.dart';
import 'package:watermanagement/google_maps_place_picker_mb/src/components/rounded_frame.dart';
import 'package:watermanagement/google_maps_place_picker_mb/src/controllers/autocomplete_search_controller.dart';
class AutoCompleteSearch extends StatefulWidget {
const AutoCompleteSearch(
{Key? key,
required this.sessionToken,
required this.onPicked,
required this.appBarKey,
this.hintText = "Search here",
this.searchingText = "Searching...",
this.hidden = false,
this.height = 40,
this.contentPadding = EdgeInsets.zero,
this.debounceMilliseconds,
this.onSearchFailed,
required this.searchBarController,
this.autocompleteOffset,
this.autocompleteRadius,
this.autocompleteLanguage,
this.autocompleteComponents,
this.autocompleteTypes,
this.strictbounds,
this.region,
this.initialSearchString,
this.searchForInitialValue,
this.autocompleteOnTrailingWhitespace})
: super(key: key);
final String? sessionToken;
final String? hintText;
final String? searchingText;
final bool hidden;
final double height;
final EdgeInsetsGeometry contentPadding;
final int? debounceMilliseconds;
final ValueChanged<Prediction> onPicked;
final ValueChanged<String>? onSearchFailed;
final SearchBarController searchBarController;
final num? autocompleteOffset;
final num? autocompleteRadius;
final String? autocompleteLanguage;
final List<String>? autocompleteTypes;
final List<Component>? autocompleteComponents;
final bool? strictbounds;
final String? region;
final GlobalKey appBarKey;
final String? initialSearchString;
final bool? searchForInitialValue;
final bool? autocompleteOnTrailingWhitespace;
@override
AutoCompleteSearchState createState() => AutoCompleteSearchState();
}
class AutoCompleteSearchState extends State<AutoCompleteSearch> {
TextEditingController controller = TextEditingController();
FocusNode focus = FocusNode();
OverlayEntry? overlayEntry;
SearchProvider provider = SearchProvider();
@override
void initState() {
super.initState();
if (widget.initialSearchString != null) {
WidgetsBinding.instance.addPostFrameCallback((_) {
controller.text = widget.initialSearchString!;
if (widget.searchForInitialValue!) {
_onSearchInputChange();
}
});
}
controller.addListener(_onSearchInputChange);
focus.addListener(_onFocusChanged);
widget.searchBarController.attach(this);
}
@override
void dispose() {
controller.removeListener(_onSearchInputChange);
controller.dispose();
focus.removeListener(_onFocusChanged);
focus.dispose();
_clearOverlay();
super.dispose();
}
@override
Widget build(BuildContext context) {
return !widget.hidden
? ChangeNotifierProvider.value(
value: provider,
child: RoundedFrame(
height: widget.height,
padding: const EdgeInsets.only(right: 10),
color: Theme.of(context).brightness == Brightness.dark
? Colors.black54
: Colors.white,
borderRadius: BorderRadius.circular(20),
elevation: 4.0,
child: Row(
children: <Widget>[
SizedBox(width: 10),
Icon(Icons.search),
SizedBox(width: 10),
Expanded(child: _buildSearchTextField()),
_buildTextClearIcon(),
],
),
),
)
: Container();
}
Widget _buildSearchTextField() {
return TextField(
controller: controller,
focusNode: focus,
decoration: InputDecoration(
hintText: widget.hintText,
border: InputBorder.none,
errorBorder: InputBorder.none,
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
disabledBorder: InputBorder.none,
focusedErrorBorder: InputBorder.none,
isDense: true,
contentPadding: widget.contentPadding,
),
);
}
Widget _buildTextClearIcon() {
return Selector<SearchProvider, String>(
selector: (_, provider) => provider.searchTerm,
builder: (_, data, __) {
if (data.length > 0) {
return Padding(
padding: const EdgeInsets.only(right: 8.0),
child: GestureDetector(
child: Icon(
Icons.clear,
color: Theme.of(context).brightness == Brightness.dark
? Colors.white
: Colors.black,
),
onTap: () {
clearText();
},
),
);
} else {
return SizedBox(width: 10);
}
});
}
_onSearchInputChange() {
if (!mounted) return;
this.provider.searchTerm = controller.text;
PlaceProvider provider = PlaceProvider.of(context, listen: false);
if (controller.text.isEmpty) {
provider.debounceTimer?.cancel();
_searchPlace(controller.text);
return;
}
if (controller.text.trim() == this.provider.prevSearchTerm.trim()) {
provider.debounceTimer?.cancel();
return;
}
if (!widget.autocompleteOnTrailingWhitespace! &&
controller.text.substring(controller.text.length - 1) == " ") {
provider.debounceTimer?.cancel();
return;
}
if (provider.debounceTimer?.isActive ?? false) {
provider.debounceTimer!.cancel();
}
provider.debounceTimer =
Timer(Duration(milliseconds: widget.debounceMilliseconds!), () {
_searchPlace(controller.text.trim());
});
}
_onFocusChanged() {
PlaceProvider provider = PlaceProvider.of(context, listen: false);
provider.isSearchBarFocused = focus.hasFocus;
provider.debounceTimer?.cancel();
provider.placeSearchingState = SearchingState.Idle;
}
_searchPlace(String searchTerm) {
this.provider.prevSearchTerm = searchTerm;
_clearOverlay();
if (searchTerm.length < 1) return;
_displayOverlay(_buildSearchingOverlay());
_performAutoCompleteSearch(searchTerm);
}
_clearOverlay() {
if (overlayEntry != null) {
overlayEntry!.remove();
overlayEntry = null;
}
}
_displayOverlay(Widget overlayChild) {
_clearOverlay();
final RenderBox? appBarRenderBox =
widget.appBarKey.currentContext!.findRenderObject() as RenderBox?;
final translation = appBarRenderBox?.getTransformTo(null).getTranslation();
final Offset offset = translation != null
? Offset(translation.x, translation.y)
: Offset(0.0, 0.0);
final screenWidth = MediaQuery.of(context).size.width;
overlayEntry = OverlayEntry(
builder: (context) => Positioned(
top: appBarRenderBox!.paintBounds.shift(offset).top +
appBarRenderBox.size.height,
left: screenWidth * 0.025,
right: screenWidth * 0.025,
child: Material(
elevation: 4.0,
child: overlayChild,
),
),
);
Overlay.of(context)!.insert(overlayEntry!);
}
Widget _buildSearchingOverlay() {
return Container(
padding: const EdgeInsets.symmetric(vertical: 16, horizontal: 24),
child: Row(
children: <Widget>[
SizedBox(
height: 24,
width: 24,
child: CircularProgressIndicator(strokeWidth: 3),
),
SizedBox(width: 24),
Expanded(
child: Text(
widget.searchingText ?? "Searching...",
style: TextStyle(fontSize: 16),
),
)
],
),
);
}
Widget _buildPredictionOverlay(List<Prediction> predictions) {
return ListBody(
children: predictions
.map(
(p) => PredictionTile(
prediction: p,
onTap: (selectedPrediction) {
resetSearchBar();
widget.onPicked(selectedPrediction);
},
),
)
.toList(),
);
}
_performAutoCompleteSearch(String searchTerm) async {
PlaceProvider provider = PlaceProvider.of(context, listen: false);
if (searchTerm.isNotEmpty) {
final PlacesAutocompleteResponse response =
await provider.places.autocomplete(
searchTerm,
sessionToken: widget.sessionToken,
location: provider.currentPosition == null
? null
: Location(
lat: provider.currentPosition!.latitude,
lng: provider.currentPosition!.longitude),
offset: widget.autocompleteOffset,
radius: widget.autocompleteRadius,
language: widget.autocompleteLanguage,
types: widget.autocompleteTypes ?? const [],
components: widget.autocompleteComponents ?? const [],
strictbounds: widget.strictbounds ?? false,
region: widget.region,
);
if (response.errorMessage?.isNotEmpty == true ||
response.status == "REQUEST_DENIED") {
if (widget.onSearchFailed != null) {
widget.onSearchFailed!(response.status);
}
return;
}
_displayOverlay(_buildPredictionOverlay(response.predictions));
}
}
clearText() {
provider.searchTerm = "";
controller.clear();
}
resetSearchBar() {
clearText();
focus.unfocus();
}
clearOverlay() {
_clearOverlay();
}
}

@ -0,0 +1,58 @@
import 'package:flutter/material.dart';
class AnimatedPin extends StatefulWidget {
AnimatedPin({
Key? key,
this.child,
});
final Widget? child;
@override
_AnimatedPinState createState() => _AnimatedPinState();
}
class _AnimatedPinState extends State<AnimatedPin>
with TickerProviderStateMixin {
late AnimationController _controller;
@override
void initState() {
super.initState();
_controller = AnimationController(
duration: const Duration(seconds: 1),
vsync: this,
)..repeat();
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return JumpingContainer(controller: _controller, child: widget.child);
}
}
class JumpingContainer extends AnimatedWidget {
const JumpingContainer({
Key? key,
required AnimationController controller,
this.child,
}) : super(key: key, listenable: controller);
final Widget? child;
Animation<double> get _progress => listenable as Animation<double>;
@override
Widget build(BuildContext context) {
return Transform.translate(
offset: Offset(0, -10 + _progress.value * 10),
child: child,
);
}
}

@ -0,0 +1,47 @@
import 'package:flutter/material.dart';
import 'package:watermanagement/google_maps_place_picker_mb/src/components/rounded_frame.dart';
class FloatingCard extends StatelessWidget {
const FloatingCard({
Key? key,
this.topPosition,
this.leftPosition,
this.rightPosition,
this.bottomPosition,
this.width,
this.height,
this.borderRadius = BorderRadius.zero,
this.elevation = 0.0,
this.color,
this.child,
}) : super(key: key);
final double? topPosition;
final double? leftPosition;
final double? bottomPosition;
final double? rightPosition;
final double? width;
final double? height;
final BorderRadius borderRadius;
final double elevation;
final Color? color;
final Widget? child;
@override
Widget build(BuildContext context) {
return Positioned(
top: topPosition,
left: leftPosition,
right: rightPosition,
bottom: bottomPosition,
child: RoundedFrame(
width: width,
height: height,
borderRadius: borderRadius,
elevation: elevation,
color: color,
child: child,
),
);
}
}

@ -0,0 +1,81 @@
import 'package:flutter/material.dart';
import 'package:google_maps_webservice/places.dart';
class PredictionTile extends StatelessWidget {
final Prediction prediction;
final ValueChanged<Prediction>? onTap;
PredictionTile({required this.prediction, this.onTap});
@override
Widget build(BuildContext context) {
return ListTile(
leading: Icon(Icons.location_on),
title: RichText(
text: TextSpan(
children: _buildPredictionText(context),
),
),
onTap: () {
if (onTap != null) {
onTap!(prediction);
}
},
);
}
List<TextSpan> _buildPredictionText(BuildContext context) {
final List<TextSpan> result = <TextSpan>[];
final textColor = Theme.of(context).textTheme.bodyText2!.color;
if (prediction.matchedSubstrings.length > 0) {
MatchedSubstring matchedSubString = prediction.matchedSubstrings[0];
// There is no matched string at the beginning.
if (matchedSubString.offset > 0) {
result.add(
TextSpan(
text: prediction.description
?.substring(0, matchedSubString.offset as int?),
style: TextStyle(
color: textColor, fontSize: 16, fontWeight: FontWeight.w300),
),
);
}
// Matched strings.
result.add(
TextSpan(
text: prediction.description?.substring(
matchedSubString.offset as int,
matchedSubString.offset + matchedSubString.length as int?),
style: TextStyle(
color: textColor, fontSize: 16, fontWeight: FontWeight.w500),
),
);
// Other strings.
if (matchedSubString.offset + matchedSubString.length <
(prediction.description?.length ?? 0)) {
result.add(
TextSpan(
text: prediction.description?.substring(
matchedSubString.offset + matchedSubString.length as int),
style: TextStyle(
color: textColor, fontSize: 16, fontWeight: FontWeight.w300),
),
);
}
// If there is no matched strings, but there are predicts. (Not sure if this happens though)
} else {
result.add(
TextSpan(
text: prediction.description,
style: TextStyle(
color: textColor, fontSize: 16, fontWeight: FontWeight.w300),
),
);
}
return result;
}
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save