Commit 9c225dde authored by Nirman M.A.H.L's avatar Nirman M.A.H.L

Merge branch 'master' into 'IT19177342'

Master

See merge request 2022-020/2022-020!19
parents 17ef8793 06d339dd
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
# IntelliJ related
*.iml *.iml
*.ipr .gradle
*.iws /local.properties
.idea/ /.idea/caches
/.idea/libraries
# The .vscode folder contains launch configuration and tasks you configure in /.idea/modules.xml
# VS Code which you may wish to be included in version control, so this line /.idea/workspace.xml
# is commented out by default. /.idea/navEditor.xml
#.vscode/ /.idea/assetWizardSettings.xml
.DS_Store
# Flutter/Dart/Pub related /build
**/doc/api/ /captures
**/ios/Flutter/.last_build_id .externalNativeBuild
.dart_tool/ .cxx
.flutter-plugins local.properties
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/
# Web related
lib/generated_plugin_registrant.dart
# Symbolication related
app.*.symbols
# Obfuscation related
app.*.map.json
# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release
# Default ignored files
/shelf/
/workspace.xml
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="11" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<targetSelectedWithDropDown>
<Target>
<type value="QUICK_BOOT_TARGET" />
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="C:\Android\.android\avd\Pixel_5_API_33.avd" />
</Key>
</deviceKey>
</Target>
</targetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2022-10-07T13:30:19.869460Z" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="GRADLE" />
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RenderSettings">
<option name="useLiveRendering" value="false" />
</component>
</project>
\ No newline at end of file
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
version:
revision: f4abaa0735eba4dfd8f33f73363911d63931fe03
channel: stable
project_type: app
Date,Time,Day,Special,Congestion,Drving Speed,Stops,Weather,Distance,Travel Time
1/1/2019,6,Sunday,No,5,40,14,25,14.7,56
1/2/2019,7,Sunday,No,8,40,14,27,14.7,55
1/3/2019,8,Sunday,No,9,40,14,28,14.7,55
1/4/2019,9,Sunday,No,7,40,14,29,14.7,56
1/5/2019,10,Sunday,No,6,40,14,29,14.7,56
1/6/2019,11,Sunday,No,4,40,14,30,14.7,56
1/7/2019,12,Sunday,No,4,40,14,30,14.7,56
1/8/2019,13,Sunday,No,4,40,14,30,14.7,56
1/9/2019,14,Sunday,No,8,40,14,30,14.7,56
1/10/2019,15,Sunday,No,8,40,14,29,14.7,56
1/11/2019,16,Sunday,Yes,6,40,14,29,14.7,56
1/12/2019,17,Sunday,No,7,40,14,28,14.7,56
1/13/2019,18,Sunday,No,8,40,14,27,14.7,56
1/14/2019,19,Sunday,No,9,40,14,27,14.7,71
1/15/2019,20,Sunday,No,6,40,14,26,14.7,73
1/16/2019,21,Sunday,No,6,40,14,26,14.7,72
1/17/2019,22,Sunday,No,5,40,14,25,14.7,75
1/18/2019,6,Monday,No,5,40,14,25,14.7,56
1/19/2019,7,Monday,No,8,40,14,27,14.7,55
1/20/2019,8,Monday,No,9,40,14,28,14.7,55
1/21/2019,9,Monday,No,7,40,14,29,14.7,56
1/22/2019,10,Monday,No,6,40,14,29,14.7,56
1/23/2019,11,Monday,No,4,40,14,30,14.7,56
1/24/2019,12,Monday,No,4,40,14,30,14.7,56
1/25/2019,13,Monday,No,4,40,14,30,14.7,56
1/26/2019,14,Monday,No,8,40,14,30,14.7,56
1/27/2019,15,Monday,No,8,40,14,29,14.7,56
1/28/2019,16,Monday,Yes,6,40,14,29,14.7,56
1/29/2019,17,Monday,No,7,40,14,28,14.7,56
1/30/2019,18,Monday,No,8,40,14,27,14.7,56
1/31/2019,19,Monday,No,9,40,14,27,14.7,71
2/1/2019,20,Monday,No,6,40,14,26,14.7,73
2/2/2019,21,Monday,No,6,40,14,26,14.7,72
2/3/2019,22,Monday,No,5,40,14,25,14.7,75
2/4/2019,6,Tuesday,No,5,40,14,25,14.7,56
2/5/2019,7,Tuesday,No,8,40,14,27,14.7,55
2/6/2019,8,Tuesday,No,9,40,14,28,14.7,55
2/7/2019,9,Tuesday,No,7,40,14,29,14.7,56
2/8/2019,10,Tuesday,No,6,40,14,29,14.7,56
2/9/2019,11,Tuesday,No,4,40,14,30,14.7,56
2/10/2019,12,Tuesday,No,4,40,14,30,14.7,56
2/11/2019,13,Tuesday,No,4,40,14,30,14.7,56
2/12/2019,14,Tuesday,No,8,40,14,30,14.7,56
2/13/2019,15,Tuesday,No,8,40,14,29,14.7,56
2/14/2019,16,Tuesday,Yes,6,40,14,29,14.7,56
2/15/2019,17,Tuesday,No,7,40,14,28,14.7,56
2/16/2019,18,Tuesday,No,8,40,14,27,14.7,56
2/17/2019,19,Tuesday,No,9,40,14,27,14.7,71
2/18/2019,20,Tuesday,No,6,40,14,26,14.7,73
2/19/2019,21,Tuesday,No,6,40,14,26,14.7,72
2/20/2019,22,Tuesday,No,5,40,14,25,14.7,75
2/21/2019,6,Sunday,No,7,40,0,25,1.2,9
2/22/2019,6,Sunday,No,9,40,0,25,1.2,11
2/23/2019,6,Sunday,No,3,40,1,25,1.2,8
2/24/2019,6,Sunday,No,2,40,0,25,1.2,3
2/25/2019,6,Sunday,No,2,40,1,25,3,3
2/26/2019,17,Sunday,No,9,40,1,25,3,12
2/27/2019,17,Sunday,No,9,40,4,25,4.7,19
2/28/2019,17,Sunday,No,3,40,4,25,4.7,12
3/1/2019,17,Sunday,No,6,40,4,25,4.7,15
3/2/2019,6,Sunday,No,7,40,9,25,7.5,34
3/3/2019,6,Sunday,No,9,40,9,25,7.5,39
3/4/2019,6,Sunday,No,5,40,9,25,7.5,30
3/5/2019,6,Monday,No,5,40,12,25,10.1,36
3/6/2019,6,Monday,No,9,40,12,25,10.1,43
3/7/2019,6,Monday,No,3,40,12,25,10.1,33
3/8/2019,13,Monday,No,5,40,12,25,10.1,36
3/9/2019,13,Monday,No,9,40,12,25,10.1,43
3/10/2019,13,Monday,No,3,40,12,25,10.1,33
3/11/2019,6,Monday,No,5,40,12,25,12.1,43
3/12/2019,6,Monday,No,9,40,12,25,12.1,49
3/13/2019,6,Monday,No,3,40,12,25,12.1,40
3/14/2019,12,Monday,No,5,40,12,25,12.1,43
3/15/2019,12,Monday,No,9,40,12,25,12.1,49
3/16/2019,12,Monday,No,3,40,12,25,12.1,40
3/17/2019,6,Sunday,No,5,40,14,25,14.7,56
3/18/2019,7,Sunday,No,8,40,14,27,14.7,55
3/19/2019,8,Sunday,No,9,40,14,28,14.7,55
3/20/2019,9,Sunday,No,7,40,14,29,14.7,56
3/21/2019,10,Sunday,No,6,40,14,29,14.7,56
3/22/2019,11,Sunday,No,4,40,14,30,14.7,56
3/23/2019,12,Sunday,No,4,40,14,30,14.7,56
3/24/2019,13,Sunday,No,4,40,14,30,14.7,56
3/25/2019,14,Sunday,No,8,40,14,30,14.7,56
3/26/2019,15,Sunday,No,8,40,14,29,14.7,56
3/27/2019,16,Sunday,Yes,6,40,14,29,14.7,56
3/28/2019,17,Sunday,No,7,40,14,28,14.7,56
3/29/2019,18,Sunday,No,8,40,14,27,14.7,56
3/30/2019,19,Sunday,No,9,40,14,27,14.7,71
3/31/2019,20,Sunday,No,6,40,14,26,14.7,73
4/1/2019,21,Sunday,No,6,40,14,26,14.7,72
4/2/2019,22,Sunday,No,5,40,14,25,14.7,75
4/3/2019,6,Monday,No,5,40,14,25,14.7,56
4/4/2019,7,Monday,No,8,40,14,27,14.7,55
4/5/2019,8,Monday,No,9,40,14,28,14.7,55
4/6/2019,9,Monday,No,7,40,14,29,14.7,56
4/7/2019,10,Monday,No,6,40,14,29,14.7,56
4/8/2019,11,Monday,No,4,40,14,30,14.7,56
4/9/2019,12,Monday,No,4,40,14,30,14.7,56
4/10/2019,13,Monday,No,4,40,14,30,14.7,56
4/11/2019,14,Monday,No,8,40,14,30,14.7,56
4/12/2019,15,Monday,No,8,40,14,29,14.7,56
4/13/2019,16,Monday,Yes,6,40,14,29,14.7,56
4/14/2019,17,Monday,No,7,40,14,28,14.7,56
4/15/2019,18,Monday,No,8,40,14,27,14.7,56
4/16/2019,19,Monday,No,9,40,14,27,14.7,71
4/17/2019,20,Monday,No,6,40,14,26,14.7,73
4/18/2019,21,Monday,No,6,40,14,26,14.7,72
4/19/2019,22,Monday,No,5,40,14,25,14.7,75
4/20/2019,6,Tuesday,No,5,40,14,25,14.7,56
4/21/2019,7,Tuesday,No,8,40,14,27,14.7,55
4/22/2019,8,Tuesday,No,9,40,14,28,14.7,55
4/23/2019,9,Tuesday,No,7,40,14,29,14.7,56
4/24/2019,10,Tuesday,No,6,40,14,29,14.7,56
4/25/2019,11,Tuesday,No,4,40,14,30,14.7,56
4/26/2019,12,Tuesday,No,4,40,14,30,14.7,56
4/27/2019,13,Tuesday,No,4,40,14,30,14.7,56
4/28/2019,14,Tuesday,No,8,40,14,30,14.7,56
4/29/2019,15,Tuesday,No,8,40,14,29,14.7,56
4/30/2019,16,Tuesday,Yes,6,40,14,29,14.7,56
5/1/2019,17,Tuesday,No,7,40,14,28,14.7,56
5/2/2019,18,Tuesday,No,8,40,14,27,14.7,56
5/3/2019,19,Tuesday,No,9,40,14,27,14.7,71
5/4/2019,20,Tuesday,No,6,40,14,26,14.7,73
5/5/2019,21,Tuesday,No,6,40,14,26,14.7,72
5/6/2019,22,Tuesday,No,5,40,14,25,14.7,75
5/7/2019,6,Sunday,No,7,40,0,25,1.2,9
5/8/2019,6,Sunday,No,9,40,0,25,1.2,11
5/9/2019,6,Sunday,No,3,40,1,25,1.2,8
5/10/2019,6,Sunday,No,2,40,0,25,1.2,3
5/11/2019,6,Sunday,No,2,40,1,25,3,3
5/12/2019,17,Sunday,No,9,40,1,25,3,12
5/13/2019,17,Sunday,No,9,40,4,25,4.7,19
5/14/2019,17,Sunday,No,3,40,4,25,4.7,12
5/15/2019,17,Sunday,No,6,40,4,25,4.7,15
5/16/2019,6,Sunday,No,7,40,9,25,7.5,34
5/17/2019,6,Sunday,No,9,40,9,25,7.5,39
5/18/2019,6,Sunday,No,5,40,9,25,7.5,30
5/19/2019,6,Monday,No,5,40,12,25,10.1,36
5/20/2019,6,Monday,No,9,40,12,25,10.1,43
5/21/2019,6,Monday,No,3,40,12,25,10.1,33
5/22/2019,13,Monday,No,5,40,12,25,10.1,36
5/23/2019,13,Monday,No,9,40,12,25,10.1,43
5/24/2019,13,Monday,No,3,40,12,25,10.1,33
5/25/2019,6,Monday,No,5,40,12,25,12.1,43
5/26/2019,6,Monday,No,9,40,12,25,12.1,49
5/27/2019,6,Monday,No,3,40,12,25,12.1,40
5/28/2019,12,Monday,No,5,40,12,25,12.1,43
5/29/2019,12,Monday,No,9,40,12,25,12.1,49
5/30/2019,12,Monday,No,3,40,12,25,12.1,40
5/31/2019,6,Sunday,No,5,40,14,25,14.7,56
6/1/2019,7,Sunday,No,8,40,14,27,14.7,55
6/2/2019,8,Sunday,No,9,40,14,28,14.7,55
6/3/2019,9,Sunday,No,7,40,14,29,14.7,56
6/4/2019,10,Sunday,No,6,40,14,29,14.7,56
6/5/2019,11,Sunday,No,4,40,14,30,14.7,56
6/6/2019,12,Sunday,No,4,40,14,30,14.7,56
6/7/2019,13,Sunday,No,4,40,14,30,14.7,56
6/8/2019,14,Sunday,No,8,40,14,30,14.7,56
6/9/2019,15,Sunday,No,8,40,14,29,14.7,56
6/10/2019,16,Sunday,Yes,6,40,14,29,14.7,56
6/11/2019,17,Sunday,No,7,40,14,28,14.7,56
6/12/2019,18,Sunday,No,8,40,14,27,14.7,56
6/13/2019,19,Sunday,No,9,40,14,27,14.7,71
6/14/2019,20,Sunday,No,6,40,14,26,14.7,73
6/15/2019,21,Sunday,No,6,40,14,26,14.7,72
6/16/2019,22,Sunday,No,5,40,14,25,14.7,75
6/17/2019,6,Monday,No,5,40,14,25,14.7,56
6/18/2019,7,Monday,No,8,40,14,27,14.7,55
6/19/2019,8,Monday,No,9,40,14,28,14.7,55
6/20/2019,9,Monday,No,7,40,14,29,14.7,56
6/21/2019,10,Monday,No,6,40,14,29,14.7,56
6/22/2019,11,Monday,No,4,40,14,30,14.7,56
6/23/2019,12,Monday,No,4,40,14,30,14.7,56
6/24/2019,13,Monday,No,4,40,14,30,14.7,56
6/25/2019,14,Monday,No,8,40,14,30,14.7,56
6/26/2019,15,Monday,No,8,40,14,29,14.7,56
6/27/2019,16,Monday,Yes,6,40,14,29,14.7,56
6/28/2019,17,Monday,No,7,40,14,28,14.7,56
6/29/2019,18,Monday,No,8,40,14,27,14.7,56
6/30/2019,19,Monday,No,9,40,14,27,14.7,71
7/1/2019,20,Monday,No,6,40,14,26,14.7,73
7/2/2019,21,Monday,No,6,40,14,26,14.7,72
7/3/2019,22,Monday,No,5,40,14,25,14.7,75
7/4/2019,6,Tuesday,No,5,40,14,25,14.7,56
7/5/2019,7,Tuesday,No,8,40,14,27,14.7,55
7/6/2019,8,Tuesday,No,9,40,14,28,14.7,55
7/7/2019,9,Tuesday,No,7,40,14,29,14.7,56
7/8/2019,10,Tuesday,No,6,40,14,29,14.7,56
7/9/2019,11,Tuesday,No,4,40,14,30,14.7,56
7/10/2019,12,Tuesday,No,4,40,14,30,14.7,56
7/11/2019,13,Tuesday,No,4,40,14,30,14.7,56
7/12/2019,14,Tuesday,No,8,40,14,30,14.7,56
7/13/2019,15,Tuesday,No,8,40,14,29,14.7,56
7/14/2019,16,Tuesday,Yes,6,40,14,29,14.7,56
7/15/2019,17,Tuesday,No,7,40,14,28,14.7,56
7/16/2019,18,Tuesday,No,8,40,14,27,14.7,56
7/17/2019,19,Tuesday,No,9,40,14,27,14.7,71
7/18/2019,20,Tuesday,No,6,40,14,26,14.7,73
7/19/2019,21,Tuesday,No,6,40,14,26,14.7,72
7/20/2019,22,Tuesday,No,5,40,14,25,14.7,75
7/21/2019,6,Sunday,No,7,40,0,25,1.2,9
7/22/2019,6,Sunday,No,9,40,0,25,1.2,11
7/23/2019,6,Sunday,No,3,40,1,25,1.2,8
7/24/2019,6,Sunday,No,2,40,0,25,1.2,3
7/25/2019,6,Sunday,No,2,40,1,25,3,3
7/26/2019,17,Sunday,No,9,40,1,25,3,12
7/27/2019,17,Sunday,No,9,40,4,25,4.7,19
7/28/2019,17,Sunday,No,3,40,4,25,4.7,12
7/29/2019,17,Sunday,No,6,40,4,25,4.7,15
7/30/2019,6,Sunday,No,7,40,9,25,7.5,34
7/31/2019,6,Sunday,No,9,40,9,25,7.5,39
8/1/2019,6,Sunday,No,5,40,9,25,7.5,30
8/2/2019,6,Monday,No,5,40,12,25,10.1,36
8/3/2019,6,Monday,No,9,40,12,25,10.1,43
8/4/2019,6,Monday,No,3,40,12,25,10.1,33
8/5/2019,13,Monday,No,5,40,12,25,10.1,36
8/6/2019,13,Monday,No,9,40,12,25,10.1,43
8/7/2019,13,Monday,No,3,40,12,25,10.1,33
8/8/2019,6,Monday,No,5,40,12,25,12.1,43
8/9/2019,6,Monday,No,9,40,12,25,12.1,49
8/10/2019,6,Monday,No,3,40,12,25,12.1,40
8/11/2019,12,Monday,No,5,40,12,25,12.1,43
8/12/2019,12,Monday,No,9,40,12,25,12.1,49
8/13/2019,12,Monday,No,3,40,12,25,12.1,40
8/14/2019,6,Sunday,No,5,40,14,25,14.7,56
8/15/2019,7,Sunday,No,8,40,14,27,14.7,55
8/16/2019,8,Sunday,No,9,40,14,28,14.7,55
8/17/2019,9,Sunday,No,7,40,14,29,14.7,56
8/18/2019,10,Sunday,No,6,40,14,29,14.7,56
8/19/2019,11,Sunday,No,4,40,14,30,14.7,56
8/20/2019,12,Sunday,No,4,40,14,30,14.7,56
8/21/2019,13,Sunday,No,4,40,14,30,14.7,56
8/22/2019,14,Sunday,No,8,40,14,30,14.7,56
8/23/2019,15,Sunday,No,8,40,14,29,14.7,56
8/24/2019,16,Sunday,Yes,6,40,14,29,14.7,56
8/25/2019,17,Sunday,No,7,40,14,28,14.7,56
8/26/2019,18,Sunday,No,8,40,14,27,14.7,56
8/27/2019,19,Sunday,No,9,40,14,27,14.7,71
8/28/2019,20,Sunday,No,6,40,14,26,14.7,73
8/29/2019,21,Sunday,No,6,40,14,26,14.7,72
8/30/2019,22,Sunday,No,5,40,14,25,14.7,75
8/31/2019,6,Monday,No,5,40,14,25,14.7,56
9/1/2019,7,Monday,No,8,40,14,27,14.7,55
9/2/2019,8,Monday,No,9,40,14,28,14.7,55
9/3/2019,9,Monday,No,7,40,14,29,14.7,56
9/4/2019,10,Monday,No,6,40,14,29,14.7,56
9/5/2019,11,Monday,No,4,40,14,30,14.7,56
9/6/2019,12,Monday,No,4,40,14,30,14.7,56
9/7/2019,13,Monday,No,4,40,14,30,14.7,56
9/8/2019,14,Monday,No,8,40,14,30,14.7,56
9/9/2019,15,Monday,No,8,40,14,29,14.7,56
9/10/2019,16,Monday,Yes,6,40,14,29,14.7,56
9/11/2019,17,Monday,No,7,40,14,28,14.7,56
9/12/2019,18,Monday,No,8,40,14,27,14.7,56
9/13/2019,19,Monday,No,9,40,14,27,14.7,71
9/14/2019,20,Monday,No,6,40,14,26,14.7,73
9/15/2019,21,Monday,No,6,40,14,26,14.7,72
9/16/2019,22,Monday,No,5,40,14,25,14.7,75
9/17/2019,6,Tuesday,No,5,40,14,25,14.7,56
9/18/2019,7,Tuesday,No,8,40,14,27,14.7,55
9/19/2019,8,Tuesday,No,9,40,14,28,14.7,55
9/20/2019,9,Tuesday,No,7,40,14,29,14.7,56
9/21/2019,10,Tuesday,No,6,40,14,29,14.7,56
9/22/2019,11,Tuesday,No,4,40,14,30,14.7,56
9/23/2019,12,Tuesday,No,4,40,14,30,14.7,56
9/24/2019,13,Tuesday,No,4,40,14,30,14.7,56
9/25/2019,14,Tuesday,No,8,40,14,30,14.7,56
9/26/2019,15,Tuesday,No,8,40,14,29,14.7,56
9/27/2019,16,Tuesday,Yes,6,40,14,29,14.7,56
9/28/2019,17,Tuesday,No,7,40,14,28,14.7,56
9/29/2019,18,Tuesday,No,8,40,14,27,14.7,56
9/30/2019,19,Tuesday,No,9,40,14,27,14.7,71
10/1/2019,20,Tuesday,No,6,40,14,26,14.7,73
10/2/2019,21,Tuesday,No,6,40,14,26,14.7,72
10/3/2019,22,Tuesday,No,5,40,14,25,14.7,75
10/4/2019,6,Sunday,No,7,40,0,25,1.2,9
10/5/2019,6,Sunday,No,9,40,0,25,1.2,11
10/6/2019,6,Sunday,No,3,40,1,25,1.2,8
10/7/2019,6,Sunday,No,2,40,0,25,1.2,3
10/8/2019,6,Sunday,No,2,40,1,25,3,3
10/9/2019,17,Sunday,No,9,40,1,25,3,12
10/10/2019,17,Sunday,No,9,40,4,25,4.7,19
10/11/2019,17,Sunday,No,3,40,4,25,4.7,12
10/12/2019,17,Sunday,No,6,40,4,25,4.7,15
10/13/2019,6,Sunday,No,7,40,9,25,7.5,34
10/14/2019,6,Sunday,No,9,40,9,25,7.5,39
10/15/2019,6,Sunday,No,5,40,9,25,7.5,30
10/16/2019,6,Monday,No,5,40,12,25,10.1,36
10/17/2019,6,Monday,No,9,40,12,25,10.1,43
10/18/2019,6,Monday,No,3,40,12,25,10.1,33
10/19/2019,13,Monday,No,5,40,12,25,10.1,36
10/20/2019,13,Monday,No,9,40,12,25,10.1,43
10/21/2019,13,Monday,No,3,40,12,25,10.1,33
10/22/2019,6,Monday,No,5,40,12,25,12.1,43
10/23/2019,6,Monday,No,9,40,12,25,12.1,49
10/24/2019,6,Monday,No,3,40,12,25,12.1,40
10/25/2019,12,Monday,No,5,40,12,25,12.1,43
10/26/2019,12,Monday,No,9,40,12,25,12.1,49
10/27/2019,12,Monday,No,3,40,12,25,12.1,40
10/28/2019,6,Sunday,No,5,40,14,25,14.7,56
10/29/2019,7,Sunday,No,8,40,14,27,14.7,55
10/30/2019,8,Sunday,No,9,40,14,28,14.7,55
10/31/2019,9,Sunday,No,7,40,14,29,14.7,56
11/1/2019,10,Sunday,No,6,40,14,29,14.7,56
11/2/2019,11,Sunday,No,4,40,14,30,14.7,56
11/3/2019,12,Sunday,No,4,40,14,30,14.7,56
11/4/2019,13,Sunday,No,4,40,14,30,14.7,56
11/5/2019,14,Sunday,No,8,40,14,30,14.7,56
11/6/2019,15,Sunday,No,8,40,14,29,14.7,56
11/7/2019,16,Sunday,Yes,6,40,14,29,14.7,56
11/8/2019,17,Sunday,No,7,40,14,28,14.7,56
11/9/2019,18,Sunday,No,8,40,14,27,14.7,56
11/10/2019,19,Sunday,No,9,40,14,27,14.7,71
11/11/2019,20,Sunday,No,6,40,14,26,14.7,73
11/12/2019,21,Sunday,No,6,40,14,26,14.7,72
11/13/2019,22,Sunday,No,5,40,14,25,14.7,75
11/14/2019,6,Monday,No,5,40,14,25,14.7,56
11/15/2019,7,Monday,No,8,40,14,27,14.7,55
11/16/2019,8,Monday,No,9,40,14,28,14.7,55
11/17/2019,9,Monday,No,7,40,14,29,14.7,56
11/18/2019,10,Monday,No,6,40,14,29,14.7,56
11/19/2019,11,Monday,No,4,40,14,30,14.7,56
11/20/2019,12,Monday,No,4,40,14,30,14.7,56
11/21/2019,13,Monday,No,4,40,14,30,14.7,56
11/22/2019,14,Monday,No,8,40,14,30,14.7,56
11/23/2019,15,Monday,No,8,40,14,29,14.7,56
11/24/2019,16,Monday,Yes,6,40,14,29,14.7,56
11/25/2019,17,Monday,No,7,40,14,28,14.7,56
11/26/2019,18,Monday,No,8,40,14,27,14.7,56
11/27/2019,19,Monday,No,9,40,14,27,14.7,71
11/28/2019,20,Monday,No,6,40,14,26,14.7,73
11/29/2019,21,Monday,No,6,40,14,26,14.7,72
11/30/2019,22,Monday,No,5,40,14,25,14.7,75
12/1/2019,6,Tuesday,No,5,40,14,25,14.7,56
12/2/2019,7,Tuesday,No,8,40,14,27,14.7,55
12/3/2019,8,Tuesday,No,9,40,14,28,14.7,55
12/4/2019,9,Tuesday,No,7,40,14,29,14.7,56
12/5/2019,10,Tuesday,No,6,40,14,29,14.7,56
12/6/2019,11,Tuesday,No,4,40,14,30,14.7,56
12/7/2019,12,Tuesday,No,4,40,14,30,14.7,56
12/8/2019,13,Tuesday,No,4,40,14,30,14.7,56
12/9/2019,14,Tuesday,No,8,40,14,30,14.7,56
12/10/2019,15,Tuesday,No,8,40,14,29,14.7,56
12/11/2019,16,Tuesday,Yes,6,40,14,29,14.7,56
12/12/2019,17,Tuesday,No,7,40,14,28,14.7,56
12/13/2019,18,Tuesday,No,8,40,14,27,14.7,56
12/14/2019,19,Tuesday,No,9,40,14,27,14.7,71
12/15/2019,20,Tuesday,No,6,40,14,26,14.7,73
12/16/2019,21,Tuesday,No,6,40,14,26,14.7,72
12/17/2019,22,Tuesday,No,5,40,14,25,14.7,75
12/18/2019,6,Sunday,No,7,40,0,25,1.2,9
12/19/2019,6,Sunday,No,9,40,0,25,1.2,11
12/20/2019,6,Sunday,No,3,40,1,25,1.2,8
12/21/2019,6,Sunday,No,2,40,0,25,1.2,3
12/22/2019,6,Sunday,No,2,40,1,25,3,3
12/23/2019,17,Sunday,No,9,40,1,25,3,12
12/24/2019,17,Sunday,No,9,40,4,25,4.7,19
12/25/2019,17,Sunday,No,3,40,4,25,4.7,12
12/26/2019,17,Sunday,No,6,40,4,25,4.7,15
12/27/2019,6,Sunday,No,7,40,9,25,7.5,34
12/28/2019,6,Sunday,No,9,40,9,25,7.5,39
12/29/2019,6,Sunday,No,5,40,9,25,7.5,30
12/30/2019,6,Monday,No,5,40,12,25,10.1,36
12/31/2019,6,Monday,No,9,40,12,25,10.1,43
1/1/2020,6,Monday,No,3,40,12,25,10.1,33
1/2/2020,13,Monday,No,5,40,12,25,10.1,36
1/3/2020,13,Monday,No,9,40,12,25,10.1,43
1/4/2020,13,Monday,No,3,40,12,25,10.1,33
1/5/2020,6,Monday,No,5,40,12,25,12.1,43
1/6/2020,6,Monday,No,9,40,12,25,12.1,49
1/7/2020,6,Monday,No,3,40,12,25,12.1,40
1/8/2020,12,Monday,No,5,40,12,25,12.1,43
1/9/2020,12,Monday,No,9,40,12,25,12.1,49
1/10/2020,12,Monday,No,3,40,12,25,12.1,40
1/11/2020,6,Sunday,No,5,40,14,25,14.7,56
1/12/2020,7,Sunday,No,8,40,14,27,14.7,55
1/13/2020,8,Sunday,No,9,40,14,28,14.7,55
1/14/2020,9,Sunday,No,7,40,14,29,14.7,56
1/15/2020,10,Sunday,No,6,40,14,29,14.7,56
1/16/2020,11,Sunday,No,4,40,14,30,14.7,56
1/17/2020,12,Sunday,No,4,40,14,30,14.7,56
1/18/2020,13,Sunday,No,4,40,14,30,14.7,56
1/19/2020,14,Sunday,No,8,40,14,30,14.7,56
1/20/2020,15,Sunday,No,8,40,14,29,14.7,56
1/21/2020,16,Sunday,Yes,6,40,14,29,14.7,56
1/22/2020,17,Sunday,No,7,40,14,28,14.7,56
1/23/2020,18,Sunday,No,8,40,14,27,14.7,56
1/24/2020,19,Sunday,No,9,40,14,27,14.7,71
1/25/2020,20,Sunday,No,6,40,14,26,14.7,73
1/26/2020,21,Sunday,No,6,40,14,26,14.7,72
1/27/2020,22,Sunday,No,5,40,14,25,14.7,75
1/28/2020,6,Monday,No,5,40,14,25,14.7,56
1/29/2020,7,Monday,No,8,40,14,27,14.7,55
1/30/2020,8,Monday,No,9,40,14,28,14.7,55
1/31/2020,9,Monday,No,7,40,14,29,14.7,56
2/1/2020,10,Monday,No,6,40,14,29,14.7,56
2/2/2020,11,Monday,No,4,40,14,30,14.7,56
2/3/2020,12,Monday,No,4,40,14,30,14.7,56
2/4/2020,13,Monday,No,4,40,14,30,14.7,56
2/5/2020,14,Monday,No,8,40,14,30,14.7,56
2/6/2020,15,Monday,No,8,40,14,29,14.7,56
2/7/2020,16,Monday,Yes,6,40,14,29,14.7,56
2/8/2020,17,Monday,No,7,40,14,28,14.7,56
2/9/2020,18,Monday,No,8,40,14,27,14.7,56
2/10/2020,19,Monday,No,9,40,14,27,14.7,71
2/11/2020,20,Monday,No,6,40,14,26,14.7,73
2/12/2020,21,Monday,No,6,40,14,26,14.7,72
2/13/2020,22,Monday,No,5,40,14,25,14.7,75
2/14/2020,6,Tuesday,No,5,40,14,25,14.7,56
2/15/2020,7,Tuesday,No,8,40,14,27,14.7,55
2/16/2020,8,Tuesday,No,9,40,14,28,14.7,55
2/17/2020,9,Tuesday,No,7,40,14,29,14.7,56
2/18/2020,10,Tuesday,No,6,40,14,29,14.7,56
2/19/2020,11,Tuesday,No,4,40,14,30,14.7,56
2/20/2020,12,Tuesday,No,4,40,14,30,14.7,56
2/21/2020,13,Tuesday,No,4,40,14,30,14.7,56
2/22/2020,14,Tuesday,No,8,40,14,30,14.7,56
2/23/2020,15,Tuesday,No,8,40,14,29,14.7,56
2/24/2020,16,Tuesday,Yes,6,40,14,29,14.7,56
2/25/2020,17,Tuesday,No,7,40,14,28,14.7,56
2/26/2020,18,Tuesday,No,8,40,14,27,14.7,56
2/27/2020,19,Tuesday,No,9,40,14,27,14.7,71
2/28/2020,20,Tuesday,No,6,40,14,26,14.7,73
2/29/2020,21,Tuesday,No,6,40,14,26,14.7,72
3/1/2020,22,Tuesday,No,5,40,14,25,14.7,75
3/2/2020,6,Sunday,No,7,40,0,25,1.2,9
3/3/2020,6,Sunday,No,9,40,0,25,1.2,11
3/4/2020,6,Sunday,No,3,40,1,25,1.2,8
3/5/2020,6,Sunday,No,2,40,0,25,1.2,3
3/6/2020,6,Sunday,No,2,40,1,25,3,3
3/7/2020,17,Sunday,No,9,40,1,25,3,12
3/8/2020,17,Sunday,No,9,40,4,25,4.7,19
3/9/2020,17,Sunday,No,3,40,4,25,4.7,12
3/10/2020,17,Sunday,No,6,40,4,25,4.7,15
3/11/2020,6,Sunday,No,7,40,9,25,7.5,34
3/12/2020,6,Sunday,No,9,40,9,25,7.5,39
3/13/2020,6,Sunday,No,5,40,9,25,7.5,30
3/14/2020,6,Monday,No,5,40,12,25,10.1,36
3/15/2020,6,Monday,No,9,40,12,25,10.1,43
3/16/2020,6,Monday,No,3,40,12,25,10.1,33
3/17/2020,13,Monday,No,5,40,12,25,10.1,36
3/18/2020,13,Monday,No,9,40,12,25,10.1,43
3/19/2020,13,Monday,No,3,40,12,25,10.1,33
3/20/2020,6,Monday,No,5,40,12,25,12.1,43
3/21/2020,6,Monday,No,9,40,12,25,12.1,49
3/22/2020,6,Monday,No,3,40,12,25,12.1,40
3/23/2020,12,Monday,No,5,40,12,25,12.1,43
3/24/2020,12,Monday,No,9,40,12,25,12.1,49
3/25/2020,12,Monday,No,3,40,12,25,12.1,40
3/26/2020,6,Sunday,No,5,40,14,25,14.7,56
3/27/2020,7,Sunday,No,8,40,14,27,14.7,55
3/28/2020,8,Sunday,No,9,40,14,28,14.7,55
3/29/2020,9,Sunday,No,7,40,14,29,14.7,56
3/30/2020,10,Sunday,No,6,40,14,29,14.7,56
3/31/2020,11,Sunday,No,4,40,14,30,14.7,56
4/1/2020,12,Sunday,No,4,40,14,30,14.7,56
4/2/2020,13,Sunday,No,4,40,14,30,14.7,56
4/3/2020,14,Sunday,No,8,40,14,30,14.7,56
4/4/2020,15,Sunday,No,8,40,14,29,14.7,56
4/5/2020,16,Sunday,Yes,6,40,14,29,14.7,56
4/6/2020,17,Sunday,No,7,40,14,28,14.7,56
4/7/2020,18,Sunday,No,8,40,14,27,14.7,56
4/8/2020,19,Sunday,No,9,40,14,27,14.7,71
4/9/2020,20,Sunday,No,6,40,14,26,14.7,73
4/10/2020,21,Sunday,No,6,40,14,26,14.7,72
4/11/2020,22,Sunday,No,5,40,14,25,14.7,75
4/12/2020,6,Monday,No,5,40,14,25,14.7,56
4/13/2020,7,Monday,No,8,40,14,27,14.7,55
4/14/2020,8,Monday,No,9,40,14,28,14.7,55
4/15/2020,9,Monday,No,7,40,14,29,14.7,56
4/16/2020,10,Monday,No,6,40,14,29,14.7,56
4/17/2020,11,Monday,No,4,40,14,30,14.7,56
4/18/2020,12,Monday,No,4,40,14,30,14.7,56
4/19/2020,13,Monday,No,4,40,14,30,14.7,56
4/20/2020,14,Monday,No,8,40,14,30,14.7,56
4/21/2020,15,Monday,No,8,40,14,29,14.7,56
4/22/2020,16,Monday,Yes,6,40,14,29,14.7,56
4/23/2020,17,Monday,No,7,40,14,28,14.7,56
4/24/2020,18,Monday,No,8,40,14,27,14.7,56
4/25/2020,19,Monday,No,9,40,14,27,14.7,71
4/26/2020,20,Monday,No,6,40,14,26,14.7,73
4/27/2020,21,Monday,No,6,40,14,26,14.7,72
4/28/2020,22,Monday,No,5,40,14,25,14.7,75
4/29/2020,6,Tuesday,No,5,40,14,25,14.7,56
4/30/2020,7,Tuesday,No,8,40,14,27,14.7,55
5/1/2020,8,Tuesday,No,9,40,14,28,14.7,55
5/2/2020,9,Tuesday,No,7,40,14,29,14.7,56
5/3/2020,10,Tuesday,No,6,40,14,29,14.7,56
5/4/2020,11,Tuesday,No,4,40,14,30,14.7,56
5/5/2020,12,Tuesday,No,4,40,14,30,14.7,56
5/6/2020,13,Tuesday,No,4,40,14,30,14.7,56
5/7/2020,14,Tuesday,No,8,40,14,30,14.7,56
5/8/2020,15,Tuesday,No,8,40,14,29,14.7,56
5/9/2020,16,Tuesday,Yes,6,40,14,29,14.7,56
5/10/2020,17,Tuesday,No,7,40,14,28,14.7,56
5/11/2020,18,Tuesday,No,8,40,14,27,14.7,56
5/12/2020,19,Tuesday,No,9,40,14,27,14.7,71
5/13/2020,20,Tuesday,No,6,40,14,26,14.7,73
5/14/2020,21,Tuesday,No,6,40,14,26,14.7,72
5/15/2020,22,Tuesday,No,5,40,14,25,14.7,75
5/16/2020,6,Sunday,No,7,40,0,25,1.2,9
5/17/2020,6,Sunday,No,9,40,0,25,1.2,11
5/18/2020,6,Sunday,No,3,40,1,25,1.2,8
5/19/2020,6,Sunday,No,2,40,0,25,1.2,3
5/20/2020,6,Sunday,No,2,40,1,25,3,3
5/21/2020,17,Sunday,No,9,40,1,25,3,12
5/22/2020,17,Sunday,No,9,40,4,25,4.7,19
5/23/2020,17,Sunday,No,3,40,4,25,4.7,12
5/24/2020,17,Sunday,No,6,40,4,25,4.7,15
5/25/2020,6,Sunday,No,7,40,9,25,7.5,34
5/26/2020,6,Sunday,No,9,40,9,25,7.5,39
5/27/2020,6,Sunday,No,5,40,9,25,7.5,30
5/28/2020,6,Monday,No,5,40,12,25,10.1,36
5/29/2020,6,Monday,No,9,40,12,25,10.1,43
5/30/2020,6,Monday,No,3,40,12,25,10.1,33
5/31/2020,13,Monday,No,5,40,12,25,10.1,36
6/1/2020,13,Monday,No,9,40,12,25,10.1,43
6/2/2020,13,Monday,No,3,40,12,25,10.1,33
6/3/2020,6,Monday,No,5,40,12,25,12.1,43
6/4/2020,6,Monday,No,9,40,12,25,12.1,49
6/5/2020,6,Monday,No,3,40,12,25,12.1,40
6/6/2020,12,Monday,No,5,40,12,25,12.1,43
6/7/2020,12,Monday,No,9,40,12,25,12.1,49
6/8/2020,12,Monday,No,3,40,12,25,12.1,40
6/9/2020,6,Sunday,No,5,40,14,25,14.7,56
6/10/2020,7,Sunday,No,8,40,14,27,14.7,55
6/11/2020,8,Sunday,No,9,40,14,28,14.7,55
6/12/2020,9,Sunday,No,7,40,14,29,14.7,56
6/13/2020,10,Sunday,No,6,40,14,29,14.7,56
6/14/2020,11,Sunday,No,4,40,14,30,14.7,56
6/15/2020,12,Sunday,No,4,40,14,30,14.7,56
6/16/2020,13,Sunday,No,4,40,14,30,14.7,56
6/17/2020,14,Sunday,No,8,40,14,30,14.7,56
6/18/2020,15,Sunday,No,8,40,14,29,14.7,56
6/19/2020,16,Sunday,Yes,6,40,14,29,14.7,56
6/20/2020,17,Sunday,No,7,40,14,28,14.7,56
6/21/2020,18,Sunday,No,8,40,14,27,14.7,56
6/22/2020,19,Sunday,No,9,40,14,27,14.7,71
6/23/2020,20,Sunday,No,6,40,14,26,14.7,73
6/24/2020,21,Sunday,No,6,40,14,26,14.7,72
6/25/2020,22,Sunday,No,5,40,14,25,14.7,75
6/26/2020,6,Monday,No,5,40,14,25,14.7,56
6/27/2020,7,Monday,No,8,40,14,27,14.7,55
6/28/2020,8,Monday,No,9,40,14,28,14.7,55
6/29/2020,9,Monday,No,7,40,14,29,14.7,56
6/30/2020,10,Monday,No,6,40,14,29,14.7,56
7/1/2020,11,Monday,No,4,40,14,30,14.7,56
7/2/2020,12,Monday,No,4,40,14,30,14.7,56
7/3/2020,13,Monday,No,4,40,14,30,14.7,56
7/4/2020,14,Monday,No,8,40,14,30,14.7,56
7/5/2020,15,Monday,No,8,40,14,29,14.7,56
7/6/2020,16,Monday,Yes,6,40,14,29,14.7,56
7/7/2020,17,Monday,No,7,40,14,28,14.7,56
7/8/2020,18,Monday,No,8,40,14,27,14.7,56
7/9/2020,19,Monday,No,9,40,14,27,14.7,71
7/10/2020,20,Monday,No,6,40,14,26,14.7,73
7/11/2020,21,Monday,No,6,40,14,26,14.7,72
7/12/2020,22,Monday,No,5,40,14,25,14.7,75
7/13/2020,6,Tuesday,No,5,40,14,25,14.7,56
7/14/2020,7,Tuesday,No,8,40,14,27,14.7,55
7/15/2020,8,Tuesday,No,9,40,14,28,14.7,55
7/16/2020,9,Tuesday,No,7,40,14,29,14.7,56
7/17/2020,10,Tuesday,No,6,40,14,29,14.7,56
7/18/2020,11,Tuesday,No,4,40,14,30,14.7,56
7/19/2020,12,Tuesday,No,4,40,14,30,14.7,56
7/20/2020,13,Tuesday,No,4,40,14,30,14.7,56
7/21/2020,14,Tuesday,No,8,40,14,30,14.7,56
7/22/2020,15,Tuesday,No,8,40,14,29,14.7,56
7/23/2020,16,Tuesday,Yes,6,40,14,29,14.7,56
7/24/2020,17,Tuesday,No,7,40,14,28,14.7,56
7/25/2020,18,Tuesday,No,8,40,14,27,14.7,56
7/26/2020,19,Tuesday,No,9,40,14,27,14.7,71
7/27/2020,20,Tuesday,No,6,40,14,26,14.7,73
7/28/2020,21,Tuesday,No,6,40,14,26,14.7,72
7/29/2020,22,Tuesday,No,5,40,14,25,14.7,75
7/30/2020,6,Sunday,No,7,40,0,25,1.2,9
7/31/2020,6,Sunday,No,9,40,0,25,1.2,11
8/1/2020,6,Sunday,No,3,40,1,25,1.2,8
8/2/2020,6,Sunday,No,2,40,0,25,1.2,3
8/3/2020,6,Sunday,No,2,40,1,25,3,3
8/4/2020,17,Sunday,No,9,40,1,25,3,12
8/5/2020,17,Sunday,No,9,40,4,25,4.7,19
8/6/2020,17,Sunday,No,3,40,4,25,4.7,12
8/7/2020,17,Sunday,No,6,40,4,25,4.7,15
8/8/2020,6,Sunday,No,7,40,9,25,7.5,34
8/9/2020,6,Sunday,No,9,40,9,25,7.5,39
8/10/2020,6,Sunday,No,5,40,9,25,7.5,30
8/11/2020,6,Monday,No,5,40,12,25,10.1,36
8/12/2020,6,Monday,No,9,40,12,25,10.1,43
8/13/2020,6,Monday,No,3,40,12,25,10.1,33
8/14/2020,13,Monday,No,5,40,12,25,10.1,36
8/15/2020,13,Monday,No,9,40,12,25,10.1,43
8/16/2020,13,Monday,No,3,40,12,25,10.1,33
8/17/2020,6,Monday,No,5,40,12,25,12.1,43
8/18/2020,6,Monday,No,9,40,12,25,12.1,49
8/19/2020,6,Monday,No,3,40,12,25,12.1,40
8/20/2020,12,Monday,No,5,40,12,25,12.1,43
8/21/2020,12,Monday,No,9,40,12,25,12.1,49
8/22/2020,12,Monday,No,3,40,12,25,12.1,40
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"data = pd.read_csv('BusTravelData.csv')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Date</th>\n",
" <th>Time</th>\n",
" <th>Day</th>\n",
" <th>Special</th>\n",
" <th>Congestion</th>\n",
" <th>Drving Speed</th>\n",
" <th>Stops</th>\n",
" <th>Weather</th>\n",
" <th>Distance</th>\n",
" <th>Travel Time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1/1/2019</td>\n",
" <td>6</td>\n",
" <td>Sunday</td>\n",
" <td>No</td>\n",
" <td>5</td>\n",
" <td>40</td>\n",
" <td>14</td>\n",
" <td>25</td>\n",
" <td>14.7</td>\n",
" <td>56</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1/2/2019</td>\n",
" <td>7</td>\n",
" <td>Sunday</td>\n",
" <td>No</td>\n",
" <td>8</td>\n",
" <td>40</td>\n",
" <td>14</td>\n",
" <td>27</td>\n",
" <td>14.7</td>\n",
" <td>55</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1/3/2019</td>\n",
" <td>8</td>\n",
" <td>Sunday</td>\n",
" <td>No</td>\n",
" <td>9</td>\n",
" <td>40</td>\n",
" <td>14</td>\n",
" <td>28</td>\n",
" <td>14.7</td>\n",
" <td>55</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1/4/2019</td>\n",
" <td>9</td>\n",
" <td>Sunday</td>\n",
" <td>No</td>\n",
" <td>7</td>\n",
" <td>40</td>\n",
" <td>14</td>\n",
" <td>29</td>\n",
" <td>14.7</td>\n",
" <td>56</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1/5/2019</td>\n",
" <td>10</td>\n",
" <td>Sunday</td>\n",
" <td>No</td>\n",
" <td>6</td>\n",
" <td>40</td>\n",
" <td>14</td>\n",
" <td>29</td>\n",
" <td>14.7</td>\n",
" <td>56</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Date Time Day Special Congestion Drving Speed Stops Weather \\\n",
"0 1/1/2019 6 Sunday No 5 40 14 25 \n",
"1 1/2/2019 7 Sunday No 8 40 14 27 \n",
"2 1/3/2019 8 Sunday No 9 40 14 28 \n",
"3 1/4/2019 9 Sunday No 7 40 14 29 \n",
"4 1/5/2019 10 Sunday No 6 40 14 29 \n",
"\n",
" Distance Travel Time \n",
"0 14.7 56 \n",
"1 14.7 55 \n",
"2 14.7 55 \n",
"3 14.7 56 \n",
"4 14.7 56 "
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.head()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Date</th>\n",
" <th>Time</th>\n",
" <th>Day</th>\n",
" <th>Special</th>\n",
" <th>Congestion</th>\n",
" <th>Drving Speed</th>\n",
" <th>Stops</th>\n",
" <th>Weather</th>\n",
" <th>Distance</th>\n",
" <th>Travel Time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>595</th>\n",
" <td>8/18/2020</td>\n",
" <td>6</td>\n",
" <td>Monday</td>\n",
" <td>No</td>\n",
" <td>9</td>\n",
" <td>40</td>\n",
" <td>12</td>\n",
" <td>25</td>\n",
" <td>12.1</td>\n",
" <td>49</td>\n",
" </tr>\n",
" <tr>\n",
" <th>596</th>\n",
" <td>8/19/2020</td>\n",
" <td>6</td>\n",
" <td>Monday</td>\n",
" <td>No</td>\n",
" <td>3</td>\n",
" <td>40</td>\n",
" <td>12</td>\n",
" <td>25</td>\n",
" <td>12.1</td>\n",
" <td>40</td>\n",
" </tr>\n",
" <tr>\n",
" <th>597</th>\n",
" <td>8/20/2020</td>\n",
" <td>12</td>\n",
" <td>Monday</td>\n",
" <td>No</td>\n",
" <td>5</td>\n",
" <td>40</td>\n",
" <td>12</td>\n",
" <td>25</td>\n",
" <td>12.1</td>\n",
" <td>43</td>\n",
" </tr>\n",
" <tr>\n",
" <th>598</th>\n",
" <td>8/21/2020</td>\n",
" <td>12</td>\n",
" <td>Monday</td>\n",
" <td>No</td>\n",
" <td>9</td>\n",
" <td>40</td>\n",
" <td>12</td>\n",
" <td>25</td>\n",
" <td>12.1</td>\n",
" <td>49</td>\n",
" </tr>\n",
" <tr>\n",
" <th>599</th>\n",
" <td>8/22/2020</td>\n",
" <td>12</td>\n",
" <td>Monday</td>\n",
" <td>No</td>\n",
" <td>3</td>\n",
" <td>40</td>\n",
" <td>12</td>\n",
" <td>25</td>\n",
" <td>12.1</td>\n",
" <td>40</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Date Time Day Special Congestion Drving Speed Stops \\\n",
"595 8/18/2020 6 Monday No 9 40 12 \n",
"596 8/19/2020 6 Monday No 3 40 12 \n",
"597 8/20/2020 12 Monday No 5 40 12 \n",
"598 8/21/2020 12 Monday No 9 40 12 \n",
"599 8/22/2020 12 Monday No 3 40 12 \n",
"\n",
" Weather Distance Travel Time \n",
"595 25 12.1 49 \n",
"596 25 12.1 40 \n",
"597 25 12.1 43 \n",
"598 25 12.1 49 \n",
"599 25 12.1 40 "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.tail()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(600, 10)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.shape"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of rows 600\n",
"Number of columns 10\n"
]
}
],
"source": [
"print(\"Number of rows\",data.shape[0])\n",
"print(\"Number of columns\",data.shape[1])"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 600 entries, 0 to 599\n",
"Data columns (total 10 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 Date 600 non-null object \n",
" 1 Time 600 non-null int64 \n",
" 2 Day 600 non-null object \n",
" 3 Special 600 non-null object \n",
" 4 Congestion 600 non-null int64 \n",
" 5 Drving Speed 600 non-null int64 \n",
" 6 Stops 600 non-null int64 \n",
" 7 Weather 600 non-null int64 \n",
" 8 Distance 600 non-null float64\n",
" 9 Travel Time 600 non-null int64 \n",
"dtypes: float64(1), int64(6), object(3)\n",
"memory usage: 47.0+ KB\n"
]
}
],
"source": [
"data.info()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Time</th>\n",
" <th>Congestion</th>\n",
" <th>Drving Speed</th>\n",
" <th>Stops</th>\n",
" <th>Weather</th>\n",
" <th>Distance</th>\n",
" <th>Travel Time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>600.000000</td>\n",
" <td>600.000000</td>\n",
" <td>600.0</td>\n",
" <td>600.000000</td>\n",
" <td>600.000000</td>\n",
" <td>600.00000</td>\n",
" <td>600.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>12.546667</td>\n",
" <td>6.253333</td>\n",
" <td>40.0</td>\n",
" <td>12.000000</td>\n",
" <td>27.000000</td>\n",
" <td>12.40400</td>\n",
" <td>49.786667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>5.184524</td>\n",
" <td>2.035369</td>\n",
" <td>0.0</td>\n",
" <td>4.033251</td>\n",
" <td>1.961227</td>\n",
" <td>4.05381</td>\n",
" <td>17.968470</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>6.000000</td>\n",
" <td>2.000000</td>\n",
" <td>40.0</td>\n",
" <td>0.000000</td>\n",
" <td>25.000000</td>\n",
" <td>1.20000</td>\n",
" <td>3.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>7.000000</td>\n",
" <td>5.000000</td>\n",
" <td>40.0</td>\n",
" <td>12.000000</td>\n",
" <td>25.000000</td>\n",
" <td>12.10000</td>\n",
" <td>43.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>12.000000</td>\n",
" <td>6.000000</td>\n",
" <td>40.0</td>\n",
" <td>14.000000</td>\n",
" <td>27.000000</td>\n",
" <td>14.70000</td>\n",
" <td>56.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>17.000000</td>\n",
" <td>8.000000</td>\n",
" <td>40.0</td>\n",
" <td>14.000000</td>\n",
" <td>29.000000</td>\n",
" <td>14.70000</td>\n",
" <td>56.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>22.000000</td>\n",
" <td>9.000000</td>\n",
" <td>40.0</td>\n",
" <td>14.000000</td>\n",
" <td>30.000000</td>\n",
" <td>14.70000</td>\n",
" <td>75.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Time Congestion Drving Speed Stops Weather \\\n",
"count 600.000000 600.000000 600.0 600.000000 600.000000 \n",
"mean 12.546667 6.253333 40.0 12.000000 27.000000 \n",
"std 5.184524 2.035369 0.0 4.033251 1.961227 \n",
"min 6.000000 2.000000 40.0 0.000000 25.000000 \n",
"25% 7.000000 5.000000 40.0 12.000000 25.000000 \n",
"50% 12.000000 6.000000 40.0 14.000000 27.000000 \n",
"75% 17.000000 8.000000 40.0 14.000000 29.000000 \n",
"max 22.000000 9.000000 40.0 14.000000 30.000000 \n",
"\n",
" Distance Travel Time \n",
"count 600.00000 600.000000 \n",
"mean 12.40400 49.786667 \n",
"std 4.05381 17.968470 \n",
"min 1.20000 3.000000 \n",
"25% 12.10000 43.000000 \n",
"50% 14.70000 56.000000 \n",
"75% 14.70000 56.000000 \n",
"max 14.70000 75.000000 "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.describe()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['Sunday', 'Monday', 'Tuesday'], dtype=object)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data['Day'].unique()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 0\n",
"1 0\n",
"2 0\n",
"3 0\n",
"4 0\n",
" ..\n",
"595 1\n",
"596 1\n",
"597 1\n",
"598 1\n",
"599 1\n",
"Name: Day, Length: 600, dtype: int64"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data['Day'].map({'Sunday':0,'Monday':1,'Tuesday':2})"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"data['Day'] = data['Day'].map({'Sunday':0,'Monday':1,'Tuesday':2})"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Date</th>\n",
" <th>Time</th>\n",
" <th>Day</th>\n",
" <th>Special</th>\n",
" <th>Congestion</th>\n",
" <th>Drving Speed</th>\n",
" <th>Stops</th>\n",
" <th>Weather</th>\n",
" <th>Distance</th>\n",
" <th>Travel Time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1/1/2019</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" <td>No</td>\n",
" <td>5</td>\n",
" <td>40</td>\n",
" <td>14</td>\n",
" <td>25</td>\n",
" <td>14.7</td>\n",
" <td>56</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1/2/2019</td>\n",
" <td>7</td>\n",
" <td>0</td>\n",
" <td>No</td>\n",
" <td>8</td>\n",
" <td>40</td>\n",
" <td>14</td>\n",
" <td>27</td>\n",
" <td>14.7</td>\n",
" <td>55</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1/3/2019</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" <td>No</td>\n",
" <td>9</td>\n",
" <td>40</td>\n",
" <td>14</td>\n",
" <td>28</td>\n",
" <td>14.7</td>\n",
" <td>55</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1/4/2019</td>\n",
" <td>9</td>\n",
" <td>0</td>\n",
" <td>No</td>\n",
" <td>7</td>\n",
" <td>40</td>\n",
" <td>14</td>\n",
" <td>29</td>\n",
" <td>14.7</td>\n",
" <td>56</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1/5/2019</td>\n",
" <td>10</td>\n",
" <td>0</td>\n",
" <td>No</td>\n",
" <td>6</td>\n",
" <td>40</td>\n",
" <td>14</td>\n",
" <td>29</td>\n",
" <td>14.7</td>\n",
" <td>56</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Date Time Day Special Congestion Drving Speed Stops Weather \\\n",
"0 1/1/2019 6 0 No 5 40 14 25 \n",
"1 1/2/2019 7 0 No 8 40 14 27 \n",
"2 1/3/2019 8 0 No 9 40 14 28 \n",
"3 1/4/2019 9 0 No 7 40 14 29 \n",
"4 1/5/2019 10 0 No 6 40 14 29 \n",
"\n",
" Distance Travel Time \n",
"0 14.7 56 \n",
"1 14.7 55 \n",
"2 14.7 55 \n",
"3 14.7 56 \n",
"4 14.7 56 "
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.head()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"data['Special'] = data['Special'].map({'No':0,'Yes':1})"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Date</th>\n",
" <th>Time</th>\n",
" <th>Day</th>\n",
" <th>Special</th>\n",
" <th>Congestion</th>\n",
" <th>Drving Speed</th>\n",
" <th>Stops</th>\n",
" <th>Weather</th>\n",
" <th>Distance</th>\n",
" <th>Travel Time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>595</th>\n",
" <td>8/18/2020</td>\n",
" <td>6</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>9</td>\n",
" <td>40</td>\n",
" <td>12</td>\n",
" <td>25</td>\n",
" <td>12.1</td>\n",
" <td>49</td>\n",
" </tr>\n",
" <tr>\n",
" <th>596</th>\n",
" <td>8/19/2020</td>\n",
" <td>6</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>40</td>\n",
" <td>12</td>\n",
" <td>25</td>\n",
" <td>12.1</td>\n",
" <td>40</td>\n",
" </tr>\n",
" <tr>\n",
" <th>597</th>\n",
" <td>8/20/2020</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>40</td>\n",
" <td>12</td>\n",
" <td>25</td>\n",
" <td>12.1</td>\n",
" <td>43</td>\n",
" </tr>\n",
" <tr>\n",
" <th>598</th>\n",
" <td>8/21/2020</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>9</td>\n",
" <td>40</td>\n",
" <td>12</td>\n",
" <td>25</td>\n",
" <td>12.1</td>\n",
" <td>49</td>\n",
" </tr>\n",
" <tr>\n",
" <th>599</th>\n",
" <td>8/22/2020</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>40</td>\n",
" <td>12</td>\n",
" <td>25</td>\n",
" <td>12.1</td>\n",
" <td>40</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Date Time Day Special Congestion Drving Speed Stops Weather \\\n",
"595 8/18/2020 6 1 0 9 40 12 25 \n",
"596 8/19/2020 6 1 0 3 40 12 25 \n",
"597 8/20/2020 12 1 0 5 40 12 25 \n",
"598 8/21/2020 12 1 0 9 40 12 25 \n",
"599 8/22/2020 12 1 0 3 40 12 25 \n",
"\n",
" Distance Travel Time \n",
"595 12.1 49 \n",
"596 12.1 40 \n",
"597 12.1 43 \n",
"598 12.1 49 \n",
"599 12.1 40 "
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.tail()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([25, 27, 28, 29, 30, 26], dtype=int64)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data['Weather'].unique()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['Date', 'Time', 'Day', 'Special', 'Congestion', 'Drving Speed', 'Stops',\n",
" 'Weather', 'Distance', 'Travel Time'],\n",
" dtype='object')"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.columns"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"X = data.drop(['Date','Travel Time'],axis=1)\n"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"y = data['Travel Time']\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Train/test split\n",
"\n",
"1. split data into two parts \n",
"\n",
" training data set\n",
" testing data set\n",
"\n",
"2. Train the models on training set\n",
"\n",
"3. Test the models on testing data set"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=42)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"145 49\n",
"9 56\n",
"375 56\n",
"523 49\n",
"188 56\n",
" ..\n",
"71 40\n",
"106 73\n",
"270 56\n",
"435 34\n",
"102 56\n",
"Name: Travel Time, Length: 480, dtype: int64"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_train"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.linear_model import LinearRegression\n",
"from sklearn.svm import SVR\n",
"from sklearn.ensemble import RandomForestRegressor\n",
"from sklearn.ensemble import GradientBoostingClassifier\n",
"from sklearn.neural_network import MLPClassifier\n"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\Shiv\\AppData\\Roaming\\Python\\Python310\\site-packages\\sklearn\\neural_network\\_multilayer_perceptron.py:702: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (200) reached and the optimization hasn't converged yet.\n",
" warnings.warn(\n"
]
},
{
"data": {
"text/html": [
"<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>MLPClassifier()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">MLPClassifier</label><div class=\"sk-toggleable__content\"><pre>MLPClassifier()</pre></div></div></div></div></div>"
],
"text/plain": [
"MLPClassifier()"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lr = LinearRegression()\n",
"NN = MLPClassifier()\n",
"lr.fit(X_train,y_train)\n",
"NN.fit(X_train,y_train)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"y_pred1 = lr.predict(X_test)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"df1 = pd.DataFrame({'Actual':y_test, 'Lr Results':y_pred1})"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Actual</th>\n",
" <th>Lr Results</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>110</th>\n",
" <td>55</td>\n",
" <td>56.187653</td>\n",
" </tr>\n",
" <tr>\n",
" <th>419</th>\n",
" <td>56</td>\n",
" <td>55.732541</td>\n",
" </tr>\n",
" <tr>\n",
" <th>565</th>\n",
" <td>56</td>\n",
" <td>53.591764</td>\n",
" </tr>\n",
" <tr>\n",
" <th>77</th>\n",
" <td>55</td>\n",
" <td>56.690085</td>\n",
" </tr>\n",
" <tr>\n",
" <th>181</th>\n",
" <td>73</td>\n",
" <td>66.133304</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>399</th>\n",
" <td>56</td>\n",
" <td>54.599261</td>\n",
" </tr>\n",
" <tr>\n",
" <th>340</th>\n",
" <td>56</td>\n",
" <td>53.591764</td>\n",
" </tr>\n",
" <tr>\n",
" <th>148</th>\n",
" <td>49</td>\n",
" <td>52.322530</td>\n",
" </tr>\n",
" <tr>\n",
" <th>494</th>\n",
" <td>56</td>\n",
" <td>55.732541</td>\n",
" </tr>\n",
" <tr>\n",
" <th>439</th>\n",
" <td>43</td>\n",
" <td>38.662629</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>120 rows × 2 columns</p>\n",
"</div>"
],
"text/plain": [
" Actual Lr Results\n",
"110 55 56.187653\n",
"419 56 55.732541\n",
"565 56 53.591764\n",
"77 55 56.690085\n",
"181 73 66.133304\n",
".. ... ...\n",
"399 56 54.599261\n",
"340 56 53.591764\n",
"148 49 52.322530\n",
"494 56 55.732541\n",
"439 43 38.662629\n",
"\n",
"[120 rows x 2 columns]"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df1"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Actual</th>\n",
" <th>NN Results</th>\n",
" <th>LR Results</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>110</th>\n",
" <td>55</td>\n",
" <td>55</td>\n",
" <td>56.187653</td>\n",
" </tr>\n",
" <tr>\n",
" <th>419</th>\n",
" <td>56</td>\n",
" <td>56</td>\n",
" <td>55.732541</td>\n",
" </tr>\n",
" <tr>\n",
" <th>565</th>\n",
" <td>56</td>\n",
" <td>56</td>\n",
" <td>53.591764</td>\n",
" </tr>\n",
" <tr>\n",
" <th>77</th>\n",
" <td>55</td>\n",
" <td>55</td>\n",
" <td>56.690085</td>\n",
" </tr>\n",
" <tr>\n",
" <th>181</th>\n",
" <td>73</td>\n",
" <td>73</td>\n",
" <td>66.133304</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>399</th>\n",
" <td>56</td>\n",
" <td>56</td>\n",
" <td>54.599261</td>\n",
" </tr>\n",
" <tr>\n",
" <th>340</th>\n",
" <td>56</td>\n",
" <td>56</td>\n",
" <td>53.591764</td>\n",
" </tr>\n",
" <tr>\n",
" <th>148</th>\n",
" <td>49</td>\n",
" <td>49</td>\n",
" <td>52.322530</td>\n",
" </tr>\n",
" <tr>\n",
" <th>494</th>\n",
" <td>56</td>\n",
" <td>56</td>\n",
" <td>55.732541</td>\n",
" </tr>\n",
" <tr>\n",
" <th>439</th>\n",
" <td>43</td>\n",
" <td>43</td>\n",
" <td>38.662629</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>120 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" Actual NN Results LR Results\n",
"110 55 55 56.187653\n",
"419 56 56 55.732541\n",
"565 56 56 53.591764\n",
"77 55 55 56.690085\n",
"181 73 73 66.133304\n",
".. ... ... ...\n",
"399 56 56 54.599261\n",
"340 56 56 53.591764\n",
"148 49 49 52.322530\n",
"494 56 56 55.732541\n",
"439 43 43 38.662629\n",
"\n",
"[120 rows x 3 columns]"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_pred2 = NN.predict(X_test)\n",
"df2 = pd.DataFrame({'Actual':y_test, 'NN Results':y_pred2, 'LR Results':y_pred1})\n",
"df2"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x265e22fe0e0>"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.subplot(221)\n",
"plt.plot(df1['Actual'].iloc[0:11],label='Actual')\n",
"plt.plot(df1['Lr Results'].iloc[0:11],label='Lr Results')\n",
"plt.legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\tTime\tDay\tRush\tSpecial\tCongestion\tDrving Speed\tStops\tWeather\tDistance\tTravel Time"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x265e2510ca0>"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.subplot(221)\n",
"plt.plot(df1['Actual'].iloc[0:11],label='Actual')\n",
"plt.plot(df2['NN Results'].iloc[0:11],label='NN Results')\n",
"plt.legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Prediction with Current parameters (Predict Time with trained Model)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Time</th>\n",
" <th>Day</th>\n",
" <th>Special</th>\n",
" <th>Congestion</th>\n",
" <th>Drving Speed</th>\n",
" <th>Stops</th>\n",
" <th>Weather</th>\n",
" <th>Distance</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>6</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>8</td>\n",
" <td>40</td>\n",
" <td>14</td>\n",
" <td>23</td>\n",
" <td>14.7</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Time Day Special Congestion Drving Speed Stops Weather Distance\n",
"0 6 1 0 8 40 14 23 14.7"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = {'Time':6,\n",
" 'Day':1,\n",
" 'Special':0,\n",
" 'Congestion':8,\n",
" 'Drving Speed':40,\n",
" 'Stops':14,\n",
" 'Weather':23,\n",
" 'Distance':14.7\n",
" }\n",
"df = pd.DataFrame(data,index=[0])\n",
"df\n"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"linear regression [61.09983093]\n",
"Neural Network [55]\n",
"Actual Travel Time :- 58\n"
]
}
],
"source": [
"new_pred = lr.predict(df)\n",
"NN_pred = NN.predict(df)\n",
"print('linear regression',new_pred)\n",
"print('Neural Network',NN_pred)\n",
"print('Actual Travel Time :- 58')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Testing With Current Data"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Time</th>\n",
" <th>Day</th>\n",
" <th>Special</th>\n",
" <th>Congestion</th>\n",
" <th>Drving Speed</th>\n",
" <th>Stops</th>\n",
" <th>Weather</th>\n",
" <th>Distance</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>17</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>40</td>\n",
" <td>20</td>\n",
" <td>24</td>\n",
" <td>14.7</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Time Day Special Congestion Drving Speed Stops Weather Distance\n",
"0 17 1 0 5 40 20 24 14.7"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = {'Time':17,\n",
" 'Day':1,\n",
" 'Special':0,\n",
" 'Congestion':5,\n",
" 'Drving Speed':40,\n",
" 'Stops':20,\n",
" 'Weather':24,\n",
" 'Distance':14.7\n",
" }\n",
"ddf = pd.DataFrame(data,index=[0])\n",
"ddf"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Travel Time Prediction :- 56 Min\n"
]
}
],
"source": [
"resultsNN = NN.predict(ddf)\n",
"resultsNN\n",
"print('Travel Time Prediction :-',*resultsNN,'Min')"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"def GetPrediction(time,date,special,congestion,dspeed,stops,weather,distance):\n",
" data = {'Time':time,\n",
" 'Day':date,\n",
" 'Special':special,\n",
" 'Congestion':congestion,\n",
" 'Drving Speed':dspeed,\n",
" 'Stops':stops,\n",
" 'Weather':weather,\n",
" 'Distance':distance\n",
" }\n",
" ddf = pd.DataFrame(data,index=[0])\n",
" resultsNN = NN.predict(ddf)\n",
" resultsNN\n",
" print('Travel Time Prediction :-',*resultsNN,'Min')"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Travel Time Prediction :- 55 Min\n"
]
}
],
"source": [
"def GetDateCode(date):\n",
" if('Sunday' == date ):\n",
" return 0\n",
" elif('Monday' == date):\n",
" return 1\n",
" elif('Tuesday' == date):\n",
" return 2\n",
" elif('Wednesday' == date):\n",
" return 3\n",
" elif('Thursday' == date):\n",
" return 4\n",
" elif('Friday' == date):\n",
" return 5\n",
" elif('Saturday' == date):\n",
" return 6\n",
" else:\n",
" return 9\n",
" \n",
"\n",
" \n",
"time= 6 #this time come from semins data/member of route planning\n",
"day ='Friday' #date come from UI \n",
"date = GetDateCode(day)\n",
"special = 0 # Special Day or Not 1/0\n",
"Congestion= 8 # This is depend on the depature time---- heavy traffic =9 / No Traffic = 0 \n",
"drivingspeedAVG = 40 #this is come from GPS data\n",
"stops =14 #total Bus stops/holts between the travel --- data come from the Seminas data/member of route planning \n",
"weather =23 #Get weather in travel area\n",
"\n",
"\n",
"GetPrediction(time,date,special,Congestion,drivingspeedAVG,14,24,14.7)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.10.7 64-bit",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.7"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "26de051ba29f2982a8de78e945f0abaf191376122a1563185a90213a26c5da77"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
# %%
import pandas as pd
# %%
data = pd.read_csv('BusTravelData.csv')
# %%
data['Day'].unique()
# %%
data['Day'].map({'Sunday':0,'Monday':1,'Tuesday':2})
# %%
data['Day'] = data['Day'].map({'Sunday':0,'Monday':1,'Tuesday':2})
# %%
data.head()
# %%
data['Special'] = data['Special'].map({'No':0,'Yes':1})
# %%
data.tail()
# %%
data['Weather'].unique()
# %%
data.columns
# %%
X = data.drop(['Date','Travel Time'],axis=1)
# %%
y = data['Travel Time']
# %% [markdown]
# Train/test split
#
# 1. split data into two parts
#
# training data set
# testing data set
#
# 2. Train the models on training set
#
# 3. Test the models on testing data set
# %%
from sklearn.model_selection import train_test_split
# %%
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=42)
# %%
y_train
# %%
from sklearn.linear_model import LinearRegression
from sklearn.svm import SVR
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.neural_network import MLPClassifier
# %%
lr = LinearRegression()
NN = MLPClassifier()
lr.fit(X_train,y_train)
NN.fit(X_train,y_train)
# %%
y_pred1 = lr.predict(X_test)
# %%
df1 = pd.DataFrame({'Actual':y_test, 'Lr Results':y_pred1})
# %%
df1
# %%
y_pred2 = NN.predict(X_test)
df2 = pd.DataFrame({'Actual':y_test, 'NN Results':y_pred2, 'LR Results':y_pred1})
df2
# %%
import matplotlib.pyplot as plt
# %%
plt.subplot(221)
plt.plot(df1['Actual'].iloc[0:11],label='Actual')
plt.plot(df1['Lr Results'].iloc[0:11],label='Lr Results')
plt.legend()
# %% [markdown]
# Time Day Rush Special Congestion Drving Speed Stops Weather Distance Travel Time
# %%
plt.subplot(221)
plt.plot(df1['Actual'].iloc[0:11],label='Actual')
plt.plot(df2['NN Results'].iloc[0:11],label='NN Results')
plt.legend()
# %% [markdown]
# Prediction with Current parameters (Predict Time with trained Model)
# %%
data = {'Time':6,
'Day':1,
'Special':0,
'Congestion':8,
'Drving Speed':40,
'Stops':14,
'Weather':23,
'Distance':14.7
}
df = pd.DataFrame(data,index=[0])
df
# %%
new_pred = lr.predict(df)
NN_pred = NN.predict(df)
# %%
data = {'Time':17,
'Day':1,
'Special':0,
'Congestion':5,
'Drving Speed':40,
'Stops':20,
'Weather':24,
'Distance':14.7
}
ddf = pd.DataFrame(data,index=[0])
ddf
# %%
resultsNN = NN.predict(ddf)
resultsNN
# %%
def GetPrediction(time,date,special,congestion,dspeed,stops,weather,distance):
data = {'Time':time,
'Day':date,
'Special':special,
'Congestion':congestion,
'Drving Speed':dspeed,
'Stops':stops,
'Weather':weather,
'Distance':distance
}
ddf = pd.DataFrame(data,index=[0])
resultsNN = NN.predict(ddf)
resultsNN
print('Travel Time Prediction :-',*resultsNN,'Min')
# %%
def GetDateCode(date):
if('Sunday' == date ):
return 0
elif('Monday' == date):
return 1
elif('Tuesday' == date):
return 2
elif('Wednesday' == date):
return 3
elif('Thursday' == date):
return 4
elif('Friday' == date):
return 5
elif('Saturday' == date):
return 6
else:
return 9
import testingWeather
city = "malabe"
city = city+" weather"
time= 6 #this time come from semins data/member of route planning
day ='Friday' #date come from UI
date = GetDateCode(day)
special = 0 # Special Day or Not 1/0
Congestion= 8 # This is depend on the depature time---- heavy traffic =9 / No Traffic = 0
drivingspeedAVG = 40 #this is come from GPS data
stops =14 #total Bus stops/holts between the travel --- data come from the Seminas data/member of route planning
weather =testingWeather.weather(city) #Get weather in travel area
Distance =14.7 #Distance data come from seminas ----- data come from the Seminas data/member of route planning
GetPrediction(time,date,special,Congestion,drivingspeedAVG,stops,weather,Distance)
# 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
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
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 30
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.flutter_cubit"
minSdkVersion 16
targetSdkVersion 30
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"
}
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.flutter_cubit">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.flutter_cubit">
<application
android:label="flutter_cubit"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- 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"
/>
<!-- Displays an Android View that continues showing the launch screen
Drawable until Flutter paints its first frame, then this splash
screen fades out. A splash screen is useful to avoid any visual
gap between the end of Android's launch screen and the painting of
Flutter's first frame. -->
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
</manifest>
package com.example.flutter_auth_animation
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity() {
}
package com.example.flutter_cubit
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity() {
}
<?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>
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 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
Flutter 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>
<?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
Flutter 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>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.flutter_cubit">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
buildscript {
ext.kotlin_version = '1.3.50'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
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"
/build
\ No newline at end of file
plugins {
id 'com.android.application'
id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
}
android {
namespace 'com.app.travelle'
compileSdk 32
defaultConfig {
applicationId "com.app.travelle"
minSdk 21
targetSdk 32
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
buildFeatures {
viewBinding true
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'com.google.android.material:material:1.6.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.navigation:navigation-fragment:2.5.2'
implementation 'androidx.navigation:navigation-ui:2.5.2'
implementation 'com.google.android.gms:play-services-maps:18.1.0'
implementation 'com.google.android.gms:play-services-maps:18.1.0'
implementation 'com.google.android.gms:play-services-location:20.0.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
\ No newline at end of file
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
\ No newline at end of file
package com.app.travelle;
import android.content.Context;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
assertEquals("com.app.travelle", appContext.getPackageName());
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Travelle"
android:screenOrientation="sensorPortrait"
tools:targetApi="31">
<activity
android:name=".InitialMap"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
<!--
TODO: Before you run your application, you need a Google Maps API key.
To get one, follow the directions here:
https://developers.google.com/maps/documentation/android-sdk/get-api-key
Once you have your API key (it starts with "AIza"), define a new property in your
project's local.properties file (e.g. MAPS_API_KEY=Aiza...), and replace the
"YOUR_API_KEY" string in this file with "${MAPS_API_KEY}".
-->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="AIzaSyD7LBGU3enFRU4u2is65UDT5jRGeIcx4_Q" />
<activity
android:name=".HomeMap"
android:exported="false"
android:label="@string/title_activity_home_map" />
<activity
android:name=".Login"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
<activity
android:name=".Welcome"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
<activity
android:name=".Signup"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
</application>
</manifest>
\ No newline at end of file
package com.app.travelle;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.navigation.fragment.NavHostFragment;
import com.app.travelle.databinding.FragmentFirstBinding;
public class FirstFragment extends Fragment {
private FragmentFirstBinding binding;
@Override
public View onCreateView(
LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState
) {
binding = FragmentFirstBinding.inflate(inflater, container, false);
return binding.getRoot();
}
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
binding.buttonFirst.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
NavHostFragment.findNavController(FirstFragment.this)
.navigate(R.id.action_FirstFragment_to_SecondFragment);
}
});
}
@Override
public void onDestroyView() {
super.onDestroyView();
binding = null;
}
}
\ No newline at end of file
package com.app.travelle;
import androidx.fragment.app.FragmentActivity;
import android.content.res.Resources;
import android.os.Bundle;
import android.util.Log;
import android.view.Window;
import android.view.WindowManager;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MapStyleOptions;
import com.google.android.gms.maps.model.MarkerOptions;
import com.app.travelle.databinding.ActivityHomeMapBinding;
public class HomeMap extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
private ActivityHomeMapBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
binding = ActivityHomeMapBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
/**
* Manipulates the map once available.
* This callback is triggered when the map is ready to be used.
* This is where we can add markers or lines, add listeners or move the camera. In this case,
* we just add a marker near Sydney, Australia.
* If Google Play services is not installed on the device, the user will be prompted to install
* it inside the SupportMapFragment. This method will only be triggered once the user has
* installed Google Play services and returned to the app.
*/
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
try {
// Customise the styling of the base map using a JSON object defined
// in a raw resource file.
boolean success = googleMap.setMapStyle(
MapStyleOptions.loadRawResourceStyle(
this, R.raw.map_style));
if (!success) {
Log.e("HomeMap", "Style parsing failed.");
}
} catch (Resources.NotFoundException e) {
Log.e("HomeMap", "Can't find style. Error: ", e);
}
// Add a marker in Sydney and move the camera
LatLng sydney = new LatLng(6.914833286829916, 79.97314407363564);
mMap.addMarker(new MarkerOptions().position(sydney).title("You are Here"));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 17));
mMap.getUiSettings().setMapToolbarEnabled(false);
}
}
package com.app.travelle;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import android.Manifest;
import android.annotation.SuppressLint;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.graphics.Color;
import android.location.Location;
import android.os.Bundle;
import android.util.Log;
import android.view.WindowManager;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MapStyleOptions;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
public class InitialMap extends AppCompatActivity {
//Initialize variable
SupportMapFragment supportMapFragment;
FusedLocationProviderClient client;
GoogleMap map;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(getWindow().FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
getSupportActionBar().hide();
setContentView(R.layout.activity_initial_map);
//Assign variable
supportMapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.maps_section);
//Initialize Fused location
client = LocationServices.getFusedLocationProviderClient(this);
//Check permission
if (ActivityCompat.checkSelfPermission(InitialMap.this,
Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
//When granted
//Call method
getCurrentLocation();
}
else{
//When denied request permission
ActivityCompat.requestPermissions(InitialMap.this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},44);
}
}
private void getCurrentLocation() {
//Initialize task location
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
Task<Location> task = client.getLastLocation();
task.addOnSuccessListener(new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if (location !=null){
//Sync map
supportMapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(@NonNull GoogleMap googleMap) { //Maps components customization
//Initialize lat lan
LatLng latLng = new LatLng(location.getLatitude(),
location.getLongitude());
//Create marker
MarkerOptions options = new MarkerOptions()
.position(latLng)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.placeholder__3_))
.title("You are here");
//Zoom map
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 18));
//Add marker
googleMap.addMarker(options);
try {
// Customise the styling of the base map using a JSON object defined
// in a raw resource file.
boolean success = googleMap.setMapStyle(
MapStyleOptions.loadRawResourceStyle(
getApplicationContext(), R.raw.map_style));
if (!success) {
Log.e("InitialMap", "Style parsing failed.");
}
} catch (Resources.NotFoundException e) {
Log.e("InitialMap", "Can't find style. Error: ", e);
}
}
});
}
}
});
}
@SuppressLint("MissingSuperCall")
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == 44) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//When permission granted
getCurrentLocation();
}
}
}
}
\ No newline at end of file
package com.app.travelle;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
public class Login extends AppCompatActivity {
private Button login_btn;
private Button direct_to_signup_btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(getWindow().FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
getSupportActionBar().hide();
setContentView(R.layout.activity_login);
login_btn = (Button) findViewById(R.id.login);
direct_to_signup_btn = (Button) findViewById(R.id.signup);
direct_to_signup_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
direct_toSignUp();
}
});
login_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openWelcome();
}
});
}
public void openWelcome(){
Intent intent = new Intent(this, InitialMap.class);
startActivity(intent);
}
public void direct_toSignUp(){
Intent intent = new Intent(this, Signup.class);
startActivity(intent);
}
}
\ No newline at end of file
package com.app.travelle;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private Button button;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(getWindow().FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
getSupportActionBar().hide();
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.getStarted);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openLogin();
}
});
}
public void openLogin(){
Intent intent = new Intent(this, Login.class);
startActivity(intent);
}
}
\ No newline at end of file
package com.app.travelle;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.navigation.fragment.NavHostFragment;
import com.app.travelle.databinding.FragmentSecondBinding;
public class SecondFragment extends Fragment {
private FragmentSecondBinding binding;
@Override
public View onCreateView(
LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState
) {
binding = FragmentSecondBinding.inflate(inflater, container, false);
return binding.getRoot();
}
public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
binding.buttonSecond.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
NavHostFragment.findNavController(SecondFragment.this)
.navigate(R.id.action_SecondFragment_to_FirstFragment);
}
});
}
@Override
public void onDestroyView() {
super.onDestroyView();
binding = null;
}
}
\ No newline at end of file
package com.app.travelle;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.WindowManager;
public class Signup extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(getWindow().FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
getSupportActionBar().hide();
setContentView(R.layout.activity_signup);
}
}
\ No newline at end of file
package com.app.travelle;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class Welcome extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
}
}
\ No newline at end of file
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>
\ No newline at end of file
<vector android:height="24dp" android:tint="#40AF40"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z"/>
</vector>
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M20,4L4,4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2zM20,8l-8,5 -8,-5L4,6l8,5 8,-5v2z"/>
</vector>
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M18,8h-1L17,6c0,-2.76 -2.24,-5 -5,-5S7,3.24 7,6v2L6,8c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,10c0,-1.1 -0.9,-2 -2,-2zM12,17c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2zM15.1,8L8.9,8L8.9,6c0,-1.71 1.39,-3.1 3.1,-3.1 1.71,0 3.1,1.39 3.1,3.1v2z"/>
</vector>
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M12,12c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4 -4,1.79 -4,4 1.79,4 4,4zM12,14c-2.67,0 -8,1.34 -8,4v2h16v-2c0,-2.66 -5.33,-4 -8,-4z"/>
</vector>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".HomeMap" >
<fragment
android:layout_height="match_parent"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent" />
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".InitialMap">
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/maps_section"
android:name="com.google.android.gms.maps.SupportMapFragment"/>
<ImageView
android:id="@+id/imageView10"
android:layout_width="508dp"
android:layout_height="297dp"
android:layout_marginStart="-67dp"
android:layout_marginBottom="-40dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/rectangle_16" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/search_destination"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="340dp"
android:layout_height="70dp"
android:layout_marginStart="30dp"
android:layout_marginTop="260dp"
app:boxBackgroundColor="#FFFFFF"
app:boxCornerRadiusBottomEnd="60px"
app:boxCornerRadiusBottomStart="60px"
app:boxCornerRadiusTopEnd="60px"
app:boxCornerRadiusTopStart="60px"
app:boxStrokeColor="#FFFFFF"
app:endIconMode="clear_text"
app:startIconTint="@color/white"
app:endIconTint="#FFFFFF"
android:shadowColor="#000000"
android:shadowDx="1.2"
android:shadowDy="1.2"
android:shadowRadius="1.5"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/sans_bold"
android:hint="Where to?" />
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/button2"
android:layout_width="124dp"
android:layout_height="58dp"
android:layout_marginStart="140dp"
android:layout_marginBottom="16dp"
android:backgroundTint="#262730"
android:text="FIND "
app:cornerRadius="60px"
android:textSize="60px"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<ImageView
android:id="@+id/imageView7"
android:layout_width="539dp"
android:layout_height="518dp"
android:layout_marginStart="-50dp"
android:layout_marginBottom="560dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/component_2__1" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="16dp"
android:fontFamily="@font/sans_bold"
android:text="Travelle"
android:textColor="@color/white"
android:textSize="100px"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Login">
<ImageView
android:id="@+id/imageView3"
android:layout_width="470dp"
android:layout_height="626dp"
android:layout_marginBottom="220dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/component_4__1" />
<ImageView
android:id="@+id/busimage"
android:layout_width="433dp"
android:layout_height="116dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.83"
app:srcCompat="@drawable/component_5__1" />
<Button
android:id="@+id/login"
android:layout_width="164dp"
android:layout_height="56dp"
android:layout_marginStart="120dp"
android:layout_marginTop="372dp"
android:backgroundTint="#262730"
android:text="Login"
app:cornerRadius="60px"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/signup"
android:layout_width="165dp"
android:layout_height="49dp"
android:layout_marginStart="204dp"
android:layout_marginBottom="16dp"
android:backgroundTint="#3679FF"
android:text="SignUp"
app:cornerRadius="60px"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="136dp"
android:layout_marginTop="96dp"
android:fontFamily="@font/sans_bold"
android:text="Travelle"
android:textColor="@color/white"
android:textSize="100px"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="172dp"
android:layout_marginTop="144dp"
android:fontFamily="@font/sans_bold"
android:text="LOGIN"
android:textColor="@color/white"
android:textSize="50px"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/imageView6"
android:layout_width="76dp"
android:layout_height="54dp"
android:layout_marginStart="164dp"
android:layout_marginTop="40dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/passenger" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="28dp"
android:fontFamily="@font/sans_regular"
android:text="New to Travelle? "
android:textSize="45px"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/signup"
app:layout_constraintHorizontal_bias="0.493"
app:layout_constraintStart_toStartOf="parent" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/inputs_login"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="340dp"
android:layout_height="59dp"
android:layout_marginTop="18dp"
android:textColorHint="@color/white"
app:boxCornerRadiusBottomEnd="60px"
app:boxCornerRadiusBottomStart="60px"
app:boxCornerRadiusTopEnd="60px"
app:boxCornerRadiusTopStart="60px"
app:boxStrokeColor="@color/white"
app:counterEnabled="true"
app:counterMaxLength="20"
app:endIconMode="clear_text"
app:startIconTint="@color/white"
app:endIconTint="#FFFFFF"
app:helperTextTextColor="#FFFFFF"
app:hintTextColor="#FFFFFF"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView4"
app:startIconDrawable="@drawable/ic_person"
>
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/username_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Username"
android:maxLength="20" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/password_input"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="340dp"
android:layout_height="59dp"
android:layout_marginTop="8dp"
android:textColorHint="@color/white"
app:boxCornerRadiusBottomEnd="60px"
app:boxCornerRadiusBottomStart="60px"
app:boxCornerRadiusTopEnd="60px"
app:boxCornerRadiusTopStart="60px"
app:boxStrokeColor="@color/white"
app:counterEnabled="true"
app:counterMaxLength="20"
app:endIconMode="password_toggle"
app:endIconTint="#FFFFFF"
app:hintTextColor="#FFFFFF"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/inputs_login"
app:startIconDrawable="@drawable/ic_lock"
app:startIconTint="@color/white">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password" />
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:id="@+id/forget_pass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="148dp"
android:layout_marginTop="32dp"
android:fontFamily="@font/sans_regular"
android:text="Forget Password?"
android:textColor="@color/white"
app:layout_constraintBottom_toTopOf="@+id/login"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/password_input"
app:layout_constraintVertical_bias="0.0" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/getStarted"
android:layout_width="192dp"
android:layout_height="59dp"
android:layout_marginStart="108dp"
android:layout_marginBottom="28dp"
android:backgroundTint="#262730"
android:text="Get started"
app:cornerRadius="60px"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<ImageView
android:id="@+id/imageView21"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="88dp"
android:layout_marginBottom="464dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:srcCompat="@drawable/component_1__1" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="188dp"
android:layout_height="206dp"
android:layout_marginStart="288dp"
android:layout_marginTop="52dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/splash2" />
<ImageView
android:id="@+id/imageView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="265dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/component_3__1" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="136dp"
android:layout_marginTop="280dp"
android:text="Travelle"
android:textColor="#262730"
android:textSize="100px"
app:layout_constraintBottom_toTopOf="@+id/imageView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.688" />
<ImageView
android:id="@+id/imageView"
android:layout_width="52dp"
android:layout_height="61dp"
android:layout_marginStart="176dp"
android:layout_marginTop="332dp"
app:layout_constraintBottom_toTopOf="@+id/textView2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"
app:srcCompat="@drawable/passenger" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="136dp"
android:text="Know where you go."
android:textColor="@color/white"
app:layout_constraintBottom_toTopOf="@+id/getStarted"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.974" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Signup">
<ImageView
android:id="@+id/imageView3"
android:layout_width="470dp"
android:layout_height="626dp"
android:layout_marginBottom="220dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/component_4__1" />
<ImageView
android:id="@+id/imageView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="124dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/component_7__1" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="28dp"
android:fontFamily="@font/sans_bold"
android:text="Travelle"
android:textColor="@color/white"
android:textSize="100px"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="76dp"
android:fontFamily="@font/sans_bold"
android:text="SIGNUP"
android:textColor="@color/white"
android:textSize="50px"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/imageView6"
android:layout_width="66dp"
android:layout_height="48dp"
android:layout_marginStart="308dp"
android:layout_marginTop="36dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/passenger" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/inputs_login"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="340dp"
android:layout_height="59dp"
android:layout_marginTop="30dp"
android:textColorHint="@color/white"
app:boxCornerRadiusBottomEnd="60px"
app:boxCornerRadiusBottomStart="60px"
app:boxCornerRadiusTopEnd="60px"
app:boxCornerRadiusTopStart="60px"
app:boxStrokeColor="@color/white"
app:counterEnabled="true"
app:counterMaxLength="20"
app:endIconMode="clear_text"
app:endIconTint="#FFFFFF"
app:helperTextTextColor="#FFFFFF"
app:hintTextColor="#FFFFFF"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView4"
app:startIconDrawable="@drawable/ic_person"
app:startIconTint="@color/white">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/username_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Name"
android:maxLength="20" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/password_input"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="340dp"
android:layout_height="59dp"
android:layout_marginTop="8dp"
android:textColorHint="@color/white"
app:boxCornerRadiusBottomEnd="60px"
app:boxCornerRadiusBottomStart="60px"
app:boxCornerRadiusTopEnd="60px"
app:boxCornerRadiusTopStart="60px"
app:boxStrokeColor="@color/white"
app:counterEnabled="true"
app:counterMaxLength="20"
app:hintTextColor="#FFFFFF"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/inputs_login"
app:startIconDrawable="@drawable/ic_email"
app:startIconTint="@color/white">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Email" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/textInputLayout"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="340dp"
android:layout_height="59dp"
android:layout_marginTop="8dp"
android:textColorHint="@color/white"
app:boxCornerRadiusBottomEnd="60px"
app:boxCornerRadiusBottomStart="60px"
app:boxCornerRadiusTopEnd="60px"
app:boxCornerRadiusTopStart="60px"
app:boxStrokeColor="@color/white"
app:counterEnabled="true"
app:counterMaxLength="20"
app:endIconMode="password_toggle"
app:endIconTint="#FFFFFF"
app:hintTextColor="#FFFFFF"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/password_input"
app:startIconDrawable="@drawable/ic_lock"
app:startIconTint="@color/white">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/textInputLayout2"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="340dp"
android:layout_height="59dp"
android:layout_marginTop="8dp"
android:textColorHint="@color/white"
app:boxCornerRadiusBottomEnd="60px"
app:boxCornerRadiusBottomStart="60px"
app:boxCornerRadiusTopEnd="60px"
app:boxCornerRadiusTopStart="60px"
app:boxStrokeColor="@color/white"
app:counterEnabled="true"
app:counterMaxLength="20"
app:endIconMode="password_toggle"
app:endIconTint="#FFFFFF"
app:hintTextColor="#FFFFFF"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textInputLayout"
app:startIconDrawable="@drawable/ic_lock"
app:startIconTint="@color/white">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Confirm Password" />
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/signup_button"
android:layout_width="164dp"
android:layout_height="56dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="124dp"
android:backgroundTint="#262730"
android:text="Signup"
app:cornerRadius="60px"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textInputLayout2" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="36dp"
android:layout_marginBottom="28dp"
android:fontFamily="@font/sans_regular"
android:text="Already Registered?"
android:textSize="45px"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/signup"
android:layout_width="165dp"
android:layout_height="49dp"
android:layout_marginStart="204dp"
android:layout_marginBottom="16dp"
android:backgroundTint="#3679FF"
android:text="Login"
app:cornerRadius="60px"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Welcome">
<ImageView
android:id="@+id/imageView10"
android:layout_width="508dp"
android:layout_height="297dp"
android:layout_marginStart="-60dp"
android:layout_marginBottom="-40dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/rectangle_16" />
<!--
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/search_destination"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="340dp"
android:layout_height="59dp"
android:layout_marginStart="25dp"
android:layout_marginTop="230dp"
android:textColorHint="@color/white"
app:boxBackgroundColor="#0018A1"
app:boxCornerRadiusBottomEnd="60px"
app:boxCornerRadiusBottomStart="60px"
app:boxCornerRadiusTopEnd="60px"
app:boxCornerRadiusTopStart="60px"
app:boxStrokeColor="@color/white"
app:endIconMode="clear_text"
app:endIconTint="#FFFFFF"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.48000002"
app:startIconTint="@color/white">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/sans_bold"
android:hint="Where to?" />
</com.google.android.material.textfield.TextInputLayout>
-->
<Button
android:id="@+id/button2"
android:layout_width="124dp"
android:layout_height="58dp"
android:layout_marginStart="140dp"
android:layout_marginBottom="16dp"
android:backgroundTint="#262730"
android:text="FIND "
app:cornerRadius="60px"
android:textSize="60px"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<ImageView
android:id="@+id/imageView7"
android:layout_width="340dp"
android:layout_height="59dp"
android:layout_marginStart="-50dp"
android:layout_marginBottom="520dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/component_2__1" />
<AutoCompleteTextView
android:id="@+id/autoCompleteTextView"
android:layout_width="340dp"
android:layout_height="59dp"
android:layout_marginStart="32dp"
android:layout_marginBottom="156dp"
android:text="Where to"
android:textAlignment="center"
android:completionThreshold="3"
android:popupTheme="#FFFFFF"
android:background="#FFFFFF"
app:layout_constraintBottom_toTopOf="@+id/button2"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".FirstFragment">
<TextView
android:id="@+id/textview_first"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_first_fragment"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/button_first"
/>
<Button
android:id="@+id/button_first"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/next"
app:layout_constraintTop_toBottomOf="@id/textview_first"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SecondFragment">
<TextView
android:id="@+id/textview_second"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/button_second"
/>
<Button
android:id="@+id/button_second"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/previous"
app:layout_constraintTop_toBottomOf="@id/textview_second"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph"
app:startDestination="@id/FirstFragment">
<fragment
android:id="@+id/FirstFragment"
android:name="com.app.travelle.FirstFragment"
android:label="@string/first_fragment_label"
tools:layout="@layout/fragment_first" >
<action
android:id="@+id/action_FirstFragment_to_SecondFragment"
app:destination="@id/SecondFragment" />
</fragment>
<fragment
android:id="@+id/SecondFragment"
android:name="com.app.travelle.SecondFragment"
android:label="@string/second_fragment_label"
tools:layout="@layout/fragment_second" >
<action
android:id="@+id/action_SecondFragment_to_FirstFragment"
app:destination="@id/FirstFragment" />
</fragment>
</navigation>
\ No newline at end of file
[
{
"elementType": "geometry",
"stylers": [
{
"color": "#1d2c4d"
}
]
},
{
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#8ec3b9"
}
]
},
{
"elementType": "labels.text.stroke",
"stylers": [
{
"color": "#1a3646"
}
]
},
{
"featureType": "administrative.country",
"elementType": "geometry.stroke",
"stylers": [
{
"color": "#4b6878"
}
]
},
{
"featureType": "administrative.land_parcel",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#64779e"
}
]
},
{
"featureType": "administrative.province",
"elementType": "geometry.stroke",
"stylers": [
{
"color": "#4b6878"
}
]
},
{
"featureType": "landscape.man_made",
"elementType": "geometry.stroke",
"stylers": [
{
"color": "#334e87"
}
]
},
{
"featureType": "landscape.natural",
"elementType": "geometry",
"stylers": [
{
"color": "#023e58"
}
]
},
{
"featureType": "poi",
"elementType": "geometry",
"stylers": [
{
"color": "#283d6a"
}
]
},
{
"featureType": "poi",
"elementType": "labels.text",
"stylers": [
{
"visibility": "off"
}
]
},
{
"featureType": "poi",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#6f9ba5"
}
]
},
{
"featureType": "poi",
"elementType": "labels.text.stroke",
"stylers": [
{
"color": "#1d2c4d"
}
]
},
{
"featureType": "poi.business",
"stylers": [
{
"visibility": "off"
}
]
},
{
"featureType": "poi.park",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#023e58"
}
]
},
{
"featureType": "poi.park",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#3C7680"
}
]
},
{
"featureType": "road",
"elementType": "geometry",
"stylers": [
{
"color": "#304a7d"
}
]
},
{
"featureType": "road",
"elementType": "labels.icon",
"stylers": [
{
"visibility": "off"
}
]
},
{
"featureType": "road",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#98a5be"
}
]
},
{
"featureType": "road",
"elementType": "labels.text.stroke",
"stylers": [
{
"color": "#1d2c4d"
}
]
},
{
"featureType": "road.highway",
"elementType": "geometry",
"stylers": [
{
"color": "#2c6675"
}
]
},
{
"featureType": "road.highway",
"elementType": "geometry.stroke",
"stylers": [
{
"color": "#255763"
}
]
},
{
"featureType": "road.highway",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#b0d5ce"
}
]
},
{
"featureType": "road.highway",
"elementType": "labels.text.stroke",
"stylers": [
{
"color": "#023e58"
}
]
},
{
"featureType": "transit",
"stylers": [
{
"visibility": "off"
}
]
},
{
"featureType": "transit",
"elementType": "geometry",
"stylers": [
{
"color": "#ffeb3b"
}
]
},
{
"featureType": "transit",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#98a5be"
}
]
},
{
"featureType": "transit",
"elementType": "labels.text.stroke",
"stylers": [
{
"color": "#1d2c4d"
}
]
},
{
"featureType": "transit.line",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#283d6a"
}
]
},
{
"featureType": "transit.station",
"elementType": "geometry",
"stylers": [
{
"color": "#3a4762"
}
]
},
{
"featureType": "water",
"elementType": "geometry",
"stylers": [
{
"color": "#0e1626"
}
]
},
{
"featureType": "water",
"elementType": "labels.text.fill",
"stylers": [
{
"color": "#4e6d70"
}
]
}
]
\ No newline at end of file
<resources>
<dimen name="fab_margin">48dp</dimen>
</resources>
\ No newline at end of file
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.Travelle" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_200</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/black</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_200</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
</resources>
\ No newline at end of file
<resources>
<dimen name="fab_margin">200dp</dimen>
</resources>
\ No newline at end of file
<resources>
<dimen name="fab_margin">48dp</dimen>
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
<color name="mtrl_textinput_default_box_stroke_color">#FFFFFFFF</color>
</resources>
\ No newline at end of file
<resources>
<dimen name="fab_margin">16dp</dimen>
<dimen name="activity_horizontal_margin">0dp</dimen>
<dimen name="activity_vertical_margin">0dp</dimen>
</resources>
\ No newline at end of file
<resources>
<string name="app_name">Travelle</string>
<string name="title_activity_login">Login</string>
<!-- Strings used for fragments for navigation -->
<string name="first_fragment_label">First Fragment</string>
<string name="second_fragment_label">Second Fragment</string>
<string name="next">Next</string>
<string name="previous">Previous</string>
<string name="hello_first_fragment">Hello first fragment</string>
<string name="hello_second_fragment">Hello second fragment. Arg: %1$s</string>
<string name="title_activity_homemap">homemap</string>
<string name="title_activity_home_map">HomeMap</string>
</resources>
\ No newline at end of file
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.Travelle" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
<style name="Theme.Travelle.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="Theme.Travelle.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="Theme.Travelle.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?><!--
Sample backup rules file; uncomment and customize as necessary.
See https://developer.android.com/guide/topics/data/autobackup
for details.
Note: This file is ignored for devices older that API 31
See https://developer.android.com/about/versions/12/backup-restore
-->
<full-backup-content>
<!--
<include domain="sharedpref" path="."/>
<exclude domain="sharedpref" path="device.xml"/>
-->
</full-backup-content>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?><!--
Sample data extraction rules file; uncomment and customize as necessary.
See https://developer.android.com/about/versions/12/backup-restore#xml-changes
for details.
-->
<data-extraction-rules>
<cloud-backup>
<!-- TODO: Use <include> and <exclude> to control what is backed up.
<include .../>
<exclude .../>
-->
</cloud-backup>
<!--
<device-transfer>
<include .../>
<exclude .../>
</device-transfer>
-->
</data-extraction-rules>
\ No newline at end of file
package com.app.travelle;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() {
assertEquals(4, 2 + 2);
}
}
\ No newline at end of file
<svg width="13" height="16" viewBox="0 0 13 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="6" height="16" fill="#22C97C"/>
<rect x="6" y="10" width="7" height="6" fill="#22C97C"/>
</svg>
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="500.000000pt" height="500.000000pt" viewBox="0 0 500.000000 500.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,500.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M2330 3395 c-47 -8 -112 -23 -145 -36 -73 -27 -196 -92 -250 -132
-49 -37 -175 -159 -175 -169 0 -4 288 -9 640 -10 l640 -3 -149 -137 -150 -138
-131 0 c-126 0 -131 -1 -139 -22 -5 -13 -41 -96 -80 -184 -39 -89 -71 -165
-71 -170 0 -9 -233 -238 -341 -335 -119 -106 -217 -189 -223 -189 -3 0 11 37
30 83 20 45 44 105 54 132 16 47 52 129 184 430 80 180 106 242 106 249 0 3
-120 5 -267 4 l-268 -3 -22 -85 c-20 -75 -22 -104 -19 -245 2 -110 8 -178 20
-219 117 -415 461 -694 878 -713 138 -7 238 7 353 48 154 54 281 135 395 253
l44 46 -422 0 c-267 0 -422 4 -422 10 0 5 9 29 19 52 33 73 255 592 262 614 5
15 550 516 555 511 3 -2 -11 -38 -30 -80 -19 -41 -37 -86 -41 -99 -4 -13 -19
-48 -32 -78 -37 -81 -113 -260 -113 -265 0 -3 -14 -35 -31 -72 -42 -93 -119
-281 -119 -293 0 -7 96 -9 267 -8 l266 3 19 65 c57 203 31 476 -64 664 -196
389 -591 589 -1028 521z"/>
</g>
</svg>
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="1200.000000pt" height="1200.000000pt" viewBox="0 0 1200.000000 1200.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,1200.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M2210 6000 l0 -1420 1255 0 1255 0 0 1420 0 1420 -1255 0 -1255 0 0
-1420z m2245 1250 c3 -5 1 -38 -4 -72 -6 -35 -17 -115 -26 -178 -8 -63 -17
-134 -21 -157 l-5 -43 -327 -2 -327 -3 -21 -175 c-12 -96 -27 -213 -33 -260
-6 -47 -24 -197 -41 -335 -16 -137 -34 -284 -40 -325 -15 -114 -35 -271 -81
-655 -24 -192 -48 -353 -54 -357 -5 -5 -134 -7 -285 -5 l-275 2 3 40 c2 22 9
92 17 155 8 63 28 228 45 365 16 138 34 284 40 325 5 41 14 113 20 160 5 47
24 198 40 335 17 138 37 306 45 375 9 69 20 157 25 195 5 39 12 91 15 118 l6
47 -325 0 -326 0 0 35 c0 31 31 297 46 388 l6 37 938 0 c591 0 941 -4 945 -10z"/>
<path d="M5204 6327 c-3 -8 -4 -39 -2 -68 l3 -54 73 -3 c67 -3 72 -5 72 -25 0
-12 2 -134 3 -272 l2 -250 54 -3 c30 -2 58 1 62 5 9 9 17 188 18 410 l1 132
68 3 67 3 0 65 0 65 -208 3 c-170 2 -208 0 -213 -11z"/>
<path d="M5742 6332 c-10 -7 -12 -81 -12 -336 0 -180 2 -332 6 -337 3 -5 29
-9 59 -9 39 0 54 4 59 16 3 9 6 72 6 140 0 114 2 124 18 124 14 0 29 -25 61
-98 54 -126 97 -173 169 -180 68 -6 92 9 92 56 0 45 -14 62 -50 62 -34 0 -62
31 -96 104 -19 41 -24 61 -15 64 34 11 107 71 123 102 16 28 19 50 15 111 -4
93 -27 136 -90 167 -39 20 -60 22 -188 22 -79 0 -150 -4 -157 -8z m256 -128
c50 -14 66 -111 22 -134 -10 -6 -50 -10 -89 -10 l-71 0 0 75 0 75 58 0 c31 0
67 -3 80 -6z"/>
<path d="M6414 6326 c-45 -20 -81 -63 -101 -121 -15 -42 -17 -90 -18 -300 l0
-250 60 0 60 0 3 113 3 112 104 0 104 0 3 -112 3 -113 53 -3 c30 -2 59 2 66 7
16 13 21 427 6 515 -11 68 -47 121 -101 148 -42 22 -198 24 -245 4z m168 -117
c28 -15 48 -70 48 -134 l0 -55 -105 0 -105 0 6 48 c10 94 15 113 35 133 21 21
87 26 121 8z"/>
<path d="M6840 6312 c0 -23 60 -216 184 -592 l21 -65 60 0 60 0 22 45 c19 41
87 239 173 506 18 56 30 109 27 118 -8 20 -109 23 -124 4 -6 -7 -22 -53 -37
-103 -47 -153 -98 -309 -109 -329 -11 -22 -8 -31 -98 264 -27 90 -55 168 -62
172 -7 4 -36 8 -64 8 -51 0 -53 -1 -53 -28z"/>
<path d="M7495 6329 c-4 -6 -10 -159 -12 -339 l-6 -329 24 -6 c13 -3 105 -4
204 -3 l180 3 0 65 0 65 -137 3 -138 3 0 74 0 75 134 0 134 0 7 59 c4 33 4 65
0 70 -4 7 -56 11 -136 11 l-129 0 0 60 0 59 133 3 132 3 0 65 0 65 -192 3
c-133 2 -194 -1 -198 -9z"/>
<path d="M8015 6327 c-3 -6 -4 -161 -3 -342 l3 -330 147 -3 c169 -3 172 -1
166 86 l-3 47 -92 3 -93 3 1 264 c1 145 -2 268 -6 274 -9 16 -114 14 -120 -2z"/>
<path d="M8434 6329 c-4 -7 -9 -160 -12 -340 l-4 -328 23 -6 c13 -3 85 -4 159
-3 l135 3 3 68 3 67 -94 0 -94 0 1 273 1 272 -57 3 c-37 2 -59 -1 -64 -9z"/>
<path d="M8845 6329 c-4 -6 -10 -159 -12 -339 l-6 -329 24 -6 c13 -3 105 -4
204 -3 l180 3 0 65 0 65 -137 3 -138 3 0 74 0 75 134 0 134 0 7 59 c4 33 4 65
0 70 -4 7 -56 11 -136 11 l-129 0 0 60 0 59 133 3 132 3 0 65 0 65 -192 3
c-133 2 -194 -1 -198 -9z"/>
</g>
</svg>
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id 'com.android.application' version '7.3.0' apply false
id 'com.android.library' version '7.3.0' apply false
id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' version '2.0.1' apply false
}
\ No newline at end of file
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# Enables namespacing of each library's R class so that its R class includes only the
# resources declared in the library itself and none from the library's dependencies,
# thereby reducing the size of the R class for that library
android.nonTransitiveRClass=true
\ No newline at end of file
#Fri Jun 23 08:50:38 CEST 2017 #Tue Sep 27 12:24:52 IST 2022
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip zipStoreBase=GRADLE_USER_HOME
#!/usr/bin/env sh
#
# Copyright 2015 the original author or authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn () {
echo "$*"
}
die () {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=`expr $i + 1`
done
case $i in
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=`save "$@"`
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
exec "$JAVACMD" "$@"
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
**/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
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>App</string>
<key>CFBundleIdentifier</key>
<string>io.flutter.flutter.app</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>App</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>9.0</string>
</dict>
</plist>
#include "Generated.xcconfig"
#include "Generated.xcconfig"
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
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 = 1020;
ORGANIZATIONNAME = "";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1;
LastSwiftMigration = 1100;
};
};
};
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 97C146E51CF9000F007C117D;
productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
97C146ED1CF9000F007C117D /* Runner */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
97C146EC1CF9000F007C117D /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Thin Binary";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Run Script";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
97C146EA1CF9000F007C117D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
97C146FB1CF9000F007C117D /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
97C147001CF9000F007C117D /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
249021D3217E4FDB00AE95B9 /* Profile */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Profile;
};
249021D4217E4FDB00AE95B9 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterCubit;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
};
name = Profile;
};
97C147031CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
97C147041CF9000F007C117D /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
97C147061CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterCubit;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
};
name = Debug;
};
97C147071CF9000F007C117D /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterCubit;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
97C147031CF9000F007C117D /* Debug */,
97C147041CF9000F007C117D /* Release */,
249021D3217E4FDB00AE95B9 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
97C147061CF9000F007C117D /* Debug */,
97C147071CF9000F007C117D /* Release */,
249021D4217E4FDB00AE95B9 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 97C146E61CF9000F007C117D /* Project object */;
}
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>
<?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>
<?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>
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1020"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Profile"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
</Workspace>
<?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>
<?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>
import UIKit
import Flutter
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
{
"images" : [
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@3x.png",
"scale" : "3x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@3x.png",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@3x.png",
"scale" : "3x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@3x.png",
"scale" : "3x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@1x.png",
"scale" : "1x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@1x.png",
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@1x.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@2x.png",
"scale" : "2x"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "Icon-App-83.5x83.5@2x.png",
"scale" : "2x"
},
{
"size" : "1024x1024",
"idiom" : "ios-marketing",
"filename" : "Icon-App-1024x1024@1x.png",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
{
"images" : [
{
"idiom" : "universal",
"filename" : "LaunchImage.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
# Launch Screen Assets
You can customize the launch screen with your own desired assets by replacing the image files in this directory.
You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
</imageView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
<resources>
<image name="LaunchImage" width="168" height="185"/>
</resources>
</document>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
</dependencies>
<scenes>
<!--Flutter View Controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
</scene>
</scenes>
</document>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>flutter_cubit</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist>
#import "GeneratedPluginRegistrant.h"
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:flutter_auth_animation/constants.dart';
import 'package:flutter_auth_animation/widgets/login_form.dart';
import 'package:flutter_auth_animation/widgets/sign_up_form.dart';
import 'package:flutter_auth_animation/widgets/socal_buttons.dart';
import 'package:flutter_svg/flutter_svg.dart';
class AuthScreen extends StatefulWidget {
const AuthScreen({Key? key}) : super(key: key);
@override
_AuthScreenState createState() => _AuthScreenState();
}
class _AuthScreenState extends State<AuthScreen>
with SingleTickerProviderStateMixin {
bool _isShowSignUp = false ;
late AnimationController _animationController;
late Animation<double> _animationTextRotate;
void setupAnimation(){
_animationController = AnimationController(vsync: this, duration: defaultDuration);
_animationTextRotate = Tween<double>(begin: 0, end: 90).animate(_animationController);
}
void updateView() {
setState(() {
_isShowSignUp = !_isShowSignUp;
});
_isShowSignUp ? _animationController.forward() : _animationController.reverse();
}
@override
void initState(){
setupAnimation();
super.initState();
}
@override
void dispose() {
_animationController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
final _size = MediaQuery.of(context).size;
return Scaffold(
body: AnimatedBuilder(
animation: _animationController,
builder: (context, _) {
return Stack(
children: [
//Login
AnimatedPositioned(
duration: defaultDuration,
width: _size.width *0.88,
height: _size.height,
left: _isShowSignUp ? -_size.width * 0.76 : 0,
child: Container(
color: login_bg,
child: LoginForm(),
),
),
//Sign Up
AnimatedPositioned(
duration: defaultDuration,
height: _size.height,
width: _size.width * 0.88,
left: _isShowSignUp ? _size.width * 0.12 : _size.width * 0.88,
child: Container(
color: signup_bg,
child: SignUpForm(),
)),
//Logo
AnimatedPositioned(
duration: defaultDuration,
right: _isShowSignUp ? - _size.width * 0.10 : _size.width * 0.10 ,
left: 0,
top: _size.height * 0.1 ,
child: CircleAvatar(
radius: 20,
backgroundColor: Colors.white60,
child: AnimatedSwitcher(
duration: defaultDuration,
child: _isShowSignUp
? SvgPicture.asset(
"assets/logo tl.svg",
color: signup_bg
)
: SvgPicture.asset(
"assets/logo tl.svg",
color: login_bg
),
),
),
),
AnimatedPositioned(
duration: defaultDuration,
bottom: _size.height * 0.1,
right: _isShowSignUp ? - _size.width * 0.06 : _size.width * 0.06 ,
width: _size.width,
child: SocalButtns(
),
),
//Login Text
AnimatedPositioned(
duration: defaultDuration,
bottom: _isShowSignUp ? _size.height /2 -80
:_size.height * 0.3,
left: _isShowSignUp ? 0 : _size.width * 0.44 - 80,
child: AnimatedDefaultTextStyle(
duration: defaultDuration,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: _isShowSignUp ? 20 : 32,
fontWeight: FontWeight.bold,
color: _isShowSignUp ? Colors.white : Colors.white70,
),
child: Transform.rotate(
angle: -_animationTextRotate.value * pi / 180 ,
alignment: Alignment.topLeft,
child: InkWell(
onTap: (){
if (_isShowSignUp) {
updateView();
} else {
//login
}
},
child: Container(
padding: const EdgeInsets.symmetric(
vertical: defpaultPadding * 0.75),
// color: Colors.red,
width: 160,
child: Text("Log in" . toUpperCase(),
),
),
),
),
),
),
//Sign up Text
AnimatedPositioned(
duration: defaultDuration,
bottom: !_isShowSignUp
? _size.height /2 -80
:_size.height * 0.3,
right: _isShowSignUp ? _size.width * 0.44 - 80 : 0 ,
child: AnimatedDefaultTextStyle(
duration: defaultDuration,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: !_isShowSignUp ? 20 : 32,
fontWeight: FontWeight.bold,
color: _isShowSignUp ? Colors.white : Colors.white70,
),
child: Transform.rotate(
angle: (90-_animationTextRotate.value) * pi / 180 ,
alignment: Alignment.topRight,
child: InkWell(
onTap: (){
if (_isShowSignUp) {
//Sign up
} else {
updateView();
}
},
child: Container(
padding: const EdgeInsets.symmetric(
vertical: defpaultPadding * 0.75),
// color: Colors.red,
width: 160,
child: Text("Sign Up" . toUpperCase(),
),
),
),
),
),
),
],
);
}
),
);
}
}
import 'package:flutter/material.dart';
const Color login_bg = Color(0xFF00C470);
const Color signup_bg = Color(0xFF000A54);
const double defpaultPadding = 16.0;
const Duration defaultDuration = Duration(milliseconds: 300);
import 'package:flutter/material.dart';
import 'package:flutter_auth_animation/pages/Welcome.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const Welcome()
);
}
}
import 'dart:ui';
class AppColors{
static final Color textColor1= Color(0xFF989acd);
static final Color textColor2 = Color(0xFF878593);
static final Color bigTextColor=Color(0xFF2e2e31);
static final Color mainColor= Color(0xFF5d69b3);
static final Color starColor = Color(0xFFe7bb4e);
static final Color mainTextColor = Color(0xFFababad);
static final Color buttonBackground = Color(0xFFf1f1f9);
}
\ No newline at end of file
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import '../misc/colors.dart';
import '../widgets/app_text.dart';
import '../widgets/app_text_large.dart';
import '../widgets/responsive_button.dart';
class Welcome extends StatefulWidget {
const Welcome({Key? key}) : super(key: key);
@override
State<Welcome> createState() => _WelcomeState();
}
class _WelcomeState extends State<Welcome> {
List images =[
"welcome-one.png",
"welcome-two.png",
"welcome-three.png",
];
List mainText =[
"Bus Rides",
"Train Rides",
"Combined Rides",
];
List subText =[
"Track your Bus",
"Track your Train",
"Track your Bus/Train",
];
List description =[
"We provide full fledged online bus tracking and scheduling platform to track real-time location of buses and get latest bus schedule data.",
"We provide full fledged online bus tracking and scheduling platform to track real-time location of buses and get latest bus schedule data.",
"We provide full fledged online bus tracking and scheduling platform to track real-time location of buses and get latest bus schedule data.",
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: PageView.builder(
scrollDirection: Axis.vertical, //vertical slider
itemCount: images.length, //number of items in the vertical slider is equal to the images declared in the 'images' list
itemBuilder: (_,index){ //slider widget
return Container(
width: double.maxFinite,
height: double.maxFinite,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage(
"img/"+images[index]
),
fit: BoxFit.cover
)
),
child: Container(
margin: const EdgeInsets.only(top:150, left:20, right: 20),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AppLargeText(text: mainText[index]),
AppText(text: subText[index], size: 30),
SizedBox(height: 20),
Container(
width: 250,
child: AppText(
text: description[index],
color: AppColors.textColor2,
size: 14,
),
),
SizedBox(height: 40),
ResponsiveButton(width: 120,)
],
),//Col-1
Column(
children: List.generate(3, (indexDots){
return Container(
margin: const EdgeInsets.only(bottom: 2) ,
width: 8,
height: index==indexDots?25:8,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
color: index==indexDots?AppColors.mainColor:AppColors.mainColor.withOpacity(0.3)
),
);
}),
),
],
),
) ,
);
}),
);
}
}
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class AppText extends StatelessWidget {
double size;
final String text;
final Color color;
AppText({Key? key,
this.size=16,
required this.text,
this.color=Colors.black54}) : super(key: key);
@override
Widget build(BuildContext context) {
return Text(
text,
style: TextStyle(
color: color,
fontSize: size,
),
);
}
}
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class AppLargeText extends StatelessWidget {
double size;
final String text;
final Color color;
AppLargeText({Key? key,
this.size=30,
required this.text,
this.color=Colors.black}) : super(key: key);
@override
Widget build(BuildContext context) {
return Text(
text,
style: TextStyle(
color: color,
fontSize: size,
fontWeight: FontWeight.bold,
),
);
}
}
import 'package:flutter/material.dart';
import '../constants.dart';
class LoginForm extends StatelessWidget {
const LoginForm({
Key? key,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.symmetric(
horizontal: MediaQuery.of(context).size.width * 0.13),
child: Form(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Spacer(),
TextFormField(
decoration: InputDecoration(
hintText: "Email",
),
),
Padding(
padding: const EdgeInsets.symmetric(vertical: defpaultPadding),
child: TextFormField(
obscureText: true,
decoration: InputDecoration(
hintText: "Password",
),
),
),
TextButton(
onPressed: () {},
child: Text(
"Forgot Password?",
style: TextStyle(color: Colors.white),
),
),
Spacer(flex: 2),
],
),
),
);
}
}
import 'package:flutter/cupertino.dart';
import '../misc/colors.dart';
class ResponsiveButton extends StatelessWidget {
bool? isResponsive;
double? width;
ResponsiveButton({Key? key,
this.isResponsive=false,
this.width,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
width: width,
height: 60,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(40),
color: AppColors.mainColor,
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset("img/button-one.png")
],
),
);
}
}
import 'package:flutter/material.dart';
import '../constants.dart';
class SignUpForm extends StatelessWidget {
const SignUpForm({
Key? key,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.symmetric(
horizontal: MediaQuery.of(context).size.width * 0.13),
child: Form(
child: Column(
children: [
Spacer(),
TextFormField(
decoration: InputDecoration(
hintText: "Email",
),
),
Padding(
padding: const EdgeInsets.symmetric(vertical: defpaultPadding),
child: TextFormField(
obscureText: true,
decoration: InputDecoration(
hintText: "Password",
),
),
),
TextFormField(
obscureText: true,
decoration: InputDecoration(
hintText: "Confirm Password",
),
),
Spacer(flex: 2)
],
),
),
);
}
}
import 'package:flutter/material.dart';
class SocalButtns extends StatelessWidget {
const SocalButtns({
Key? key,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
IconButton(onPressed: () {}, icon: Image.asset("assets/fb.png")),
IconButton(onPressed: () {}, icon: Image.asset("assets/linkedin.png")),
IconButton(onPressed: () {}, icon: Image.asset("assets/twitter.png")),
],
);
}
}
# Flutter-related
**/Flutter/ephemeral/
**/Pods/
# Xcode-related
**/xcuserdata/
#include "ephemeral/Flutter-Generated.xcconfig"
#include "ephemeral/Flutter-Generated.xcconfig"
//
// Generated file. Do not edit.
//
import FlutterMacOS
import Foundation
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
}
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 51;
objects = {
/* Begin PBXAggregateTarget section */
33CC111A2044C6BA0003C045 /* Flutter Assemble */ = {
isa = PBXAggregateTarget;
buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */;
buildPhases = (
33CC111E2044C6BF0003C045 /* ShellScript */,
);
dependencies = (
);
name = "Flutter Assemble";
productName = FLX;
};
/* End PBXAggregateTarget section */
/* Begin PBXBuildFile section */
335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; };
33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; };
33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; };
33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; };
33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 33CC10E52044A3C60003C045 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 33CC111A2044C6BA0003C045;
remoteInfo = FLX;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
33CC110E2044A8840003C045 /* Bundle Framework */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
);
name = "Bundle Framework";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; };
335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; };
33CC10ED2044A3C60003C045 /* flutter_auth_animation.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "flutter_auth_animation.app"; sourceTree = BUILT_PRODUCTS_DIR; };
33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = "<group>"; };
33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = "<group>"; };
33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = "<group>"; };
33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = "<group>"; };
33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = "<group>"; };
33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = "<group>"; };
33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = "<group>"; };
33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = "<group>"; };
33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
33CC10EA2044A3C60003C045 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
33BA886A226E78AF003329D5 /* Configs */ = {
isa = PBXGroup;
children = (
33E5194F232828860026EE4D /* AppInfo.xcconfig */,
9740EEB21CF90195004384FC /* Debug.xcconfig */,
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
333000ED22D3DE5D00554162 /* Warnings.xcconfig */,
);
path = Configs;
sourceTree = "<group>";
};
33CC10E42044A3C60003C045 = {
isa = PBXGroup;
children = (
33FAB671232836740065AC1E /* Runner */,
33CEB47122A05771004F2AC0 /* Flutter */,
33CC10EE2044A3C60003C045 /* Products */,
D73912EC22F37F3D000D13A0 /* Frameworks */,
);
sourceTree = "<group>";
};
33CC10EE2044A3C60003C045 /* Products */ = {
isa = PBXGroup;
children = (
33CC10ED2044A3C60003C045 /* flutter_auth_animation.app */,
);
name = Products;
sourceTree = "<group>";
};
33CC11242044D66E0003C045 /* Resources */ = {
isa = PBXGroup;
children = (
33CC10F22044A3C60003C045 /* Assets.xcassets */,
33CC10F42044A3C60003C045 /* MainMenu.xib */,
33CC10F72044A3C60003C045 /* Info.plist */,
);
name = Resources;
path = ..;
sourceTree = "<group>";
};
33CEB47122A05771004F2AC0 /* Flutter */ = {
isa = PBXGroup;
children = (
335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */,
33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */,
33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */,
33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */,
);
path = Flutter;
sourceTree = "<group>";
};
33FAB671232836740065AC1E /* Runner */ = {
isa = PBXGroup;
children = (
33CC10F02044A3C60003C045 /* AppDelegate.swift */,
33CC11122044BFA00003C045 /* MainFlutterWindow.swift */,
33E51913231747F40026EE4D /* DebugProfile.entitlements */,
33E51914231749380026EE4D /* Release.entitlements */,
33CC11242044D66E0003C045 /* Resources */,
33BA886A226E78AF003329D5 /* Configs */,
);
path = Runner;
sourceTree = "<group>";
};
D73912EC22F37F3D000D13A0 /* Frameworks */ = {
isa = PBXGroup;
children = (
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
33CC10EC2044A3C60003C045 /* Runner */ = {
isa = PBXNativeTarget;
buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
33CC10E92044A3C60003C045 /* Sources */,
33CC10EA2044A3C60003C045 /* Frameworks */,
33CC10EB2044A3C60003C045 /* Resources */,
33CC110E2044A8840003C045 /* Bundle Framework */,
3399D490228B24CF009A79C7 /* ShellScript */,
);
buildRules = (
);
dependencies = (
33CC11202044C79F0003C045 /* PBXTargetDependency */,
);
name = Runner;
productName = Runner;
productReference = 33CC10ED2044A3C60003C045 /* flutter_auth_animation.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
33CC10E52044A3C60003C045 /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0920;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "";
TargetAttributes = {
33CC10EC2044A3C60003C045 = {
CreatedOnToolsVersion = 9.2;
LastSwiftMigration = 1100;
ProvisioningStyle = Automatic;
SystemCapabilities = {
com.apple.Sandbox = {
enabled = 1;
};
};
};
33CC111A2044C6BA0003C045 = {
CreatedOnToolsVersion = 9.2;
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */;
compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 33CC10E42044A3C60003C045;
productRefGroup = 33CC10EE2044A3C60003C045 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
33CC10EC2044A3C60003C045 /* Runner */,
33CC111A2044C6BA0003C045 /* Flutter Assemble */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
33CC10EB2044A3C60003C045 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */,
33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
3399D490228B24CF009A79C7 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n";
};
33CC111E2044C6BF0003C045 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
Flutter/ephemeral/FlutterInputs.xcfilelist,
);
inputPaths = (
Flutter/ephemeral/tripwire,
);
outputFileListPaths = (
Flutter/ephemeral/FlutterOutputs.xcfilelist,
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
33CC10E92044A3C60003C045 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */,
33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */,
335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
33CC11202044C79F0003C045 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */;
targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
33CC10F42044A3C60003C045 /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
33CC10F52044A3C60003C045 /* Base */,
);
name = MainMenu.xib;
path = Runner;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
338D0CE9231458BD00FA5F75 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
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_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
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_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
};
name = Profile;
};
338D0CEA231458BD00FA5F75 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_VERSION = 5.0;
};
name = Profile;
};
338D0CEB231458BD00FA5F75 /* Profile */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Manual;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Profile;
};
33CC10F92044A3C60003C045 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
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_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
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_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
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_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
33CC10FA2044A3C60003C045 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
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_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
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_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
};
name = Release;
};
33CC10FC2044A3C60003C045 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
};
name = Debug;
};
33CC10FD2044A3C60003C045 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_VERSION = 5.0;
};
name = Release;
};
33CC111C2044C6BA0003C045 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Manual;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
33CC111D2044C6BA0003C045 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
33CC10F92044A3C60003C045 /* Debug */,
33CC10FA2044A3C60003C045 /* Release */,
338D0CE9231458BD00FA5F75 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
33CC10FC2044A3C60003C045 /* Debug */,
33CC10FD2044A3C60003C045 /* Release */,
338D0CEA231458BD00FA5F75 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = {
isa = XCConfigurationList;
buildConfigurations = (
33CC111C2044C6BA0003C045 /* Debug */,
33CC111D2044C6BA0003C045 /* Release */,
338D0CEB231458BD00FA5F75 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 33CC10E52044A3C60003C045 /* Project object */;
}
<?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>
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1000"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
BuildableName = "flutter_auth_animation.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 = "33CC10EC2044A3C60003C045"
BuildableName = "flutter_auth_animation.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
BuildableName = "flutter_auth_animation.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Profile"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
BuildableName = "flutter_auth_animation.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
</Workspace>
<?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>
import Cocoa
import FlutterMacOS
@NSApplicationMain
class AppDelegate: FlutterAppDelegate {
override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
return true
}
}
{
"images" : [
{
"size" : "16x16",
"idiom" : "mac",
"filename" : "app_icon_16.png",
"scale" : "1x"
},
{
"size" : "16x16",
"idiom" : "mac",
"filename" : "app_icon_32.png",
"scale" : "2x"
},
{
"size" : "32x32",
"idiom" : "mac",
"filename" : "app_icon_32.png",
"scale" : "1x"
},
{
"size" : "32x32",
"idiom" : "mac",
"filename" : "app_icon_64.png",
"scale" : "2x"
},
{
"size" : "128x128",
"idiom" : "mac",
"filename" : "app_icon_128.png",
"scale" : "1x"
},
{
"size" : "128x128",
"idiom" : "mac",
"filename" : "app_icon_256.png",
"scale" : "2x"
},
{
"size" : "256x256",
"idiom" : "mac",
"filename" : "app_icon_256.png",
"scale" : "1x"
},
{
"size" : "256x256",
"idiom" : "mac",
"filename" : "app_icon_512.png",
"scale" : "2x"
},
{
"size" : "512x512",
"idiom" : "mac",
"filename" : "app_icon_512.png",
"scale" : "1x"
},
{
"size" : "512x512",
"idiom" : "mac",
"filename" : "app_icon_1024.png",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
<connections>
<outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="Runner" customModuleProvider="target">
<connections>
<outlet property="applicationMenu" destination="uQy-DD-JDr" id="XBo-yE-nKs"/>
<outlet property="mainFlutterWindow" destination="QvC-M9-y7g" id="gIp-Ho-8D9"/>
</connections>
</customObject>
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
<menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
<items>
<menuItem title="APP_NAME" id="1Xt-HY-uBw">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="APP_NAME" systemMenu="apple" id="uQy-DD-JDr">
<items>
<menuItem title="About APP_NAME" id="5kV-Vb-QxS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
<menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
<menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
<menuItem title="Services" id="NMo-om-nkz">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
</menuItem>
<menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
<menuItem title="Hide APP_NAME" keyEquivalent="h" id="Olw-nP-bQN">
<connections>
<action selector="hide:" target="-1" id="PnN-Uc-m68"/>
</connections>
</menuItem>
<menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
</connections>
</menuItem>
<menuItem title="Show All" id="Kd2-mp-pUS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
<menuItem title="Quit APP_NAME" keyEquivalent="q" id="4sb-4s-VLi">
<connections>
<action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Edit" id="5QF-Oa-p0T">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Edit" id="W48-6f-4Dl">
<items>
<menuItem title="Undo" keyEquivalent="z" id="dRJ-4n-Yzg">
<connections>
<action selector="undo:" target="-1" id="M6e-cu-g7V"/>
</connections>
</menuItem>
<menuItem title="Redo" keyEquivalent="Z" id="6dh-zS-Vam">
<connections>
<action selector="redo:" target="-1" id="oIA-Rs-6OD"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="WRV-NI-Exz"/>
<menuItem title="Cut" keyEquivalent="x" id="uRl-iY-unG">
<connections>
<action selector="cut:" target="-1" id="YJe-68-I9s"/>
</connections>
</menuItem>
<menuItem title="Copy" keyEquivalent="c" id="x3v-GG-iWU">
<connections>
<action selector="copy:" target="-1" id="G1f-GL-Joy"/>
</connections>
</menuItem>
<menuItem title="Paste" keyEquivalent="v" id="gVA-U4-sdL">
<connections>
<action selector="paste:" target="-1" id="UvS-8e-Qdg"/>
</connections>
</menuItem>
<menuItem title="Paste and Match Style" keyEquivalent="V" id="WeT-3V-zwk">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="pasteAsPlainText:" target="-1" id="cEh-KX-wJQ"/>
</connections>
</menuItem>
<menuItem title="Delete" id="pa3-QI-u2k">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="delete:" target="-1" id="0Mk-Ml-PaM"/>
</connections>
</menuItem>
<menuItem title="Select All" keyEquivalent="a" id="Ruw-6m-B2m">
<connections>
<action selector="selectAll:" target="-1" id="VNm-Mi-diN"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="uyl-h8-XO2"/>
<menuItem title="Find" id="4EN-yA-p0u">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Find" id="1b7-l0-nxx">
<items>
<menuItem title="Find…" tag="1" keyEquivalent="f" id="Xz5-n4-O0W">
<connections>
<action selector="performFindPanelAction:" target="-1" id="cD7-Qs-BN4"/>
</connections>
</menuItem>
<menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="YEy-JH-Tfz">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="performFindPanelAction:" target="-1" id="WD3-Gg-5AJ"/>
</connections>
</menuItem>
<menuItem title="Find Next" tag="2" keyEquivalent="g" id="q09-fT-Sye">
<connections>
<action selector="performFindPanelAction:" target="-1" id="NDo-RZ-v9R"/>
</connections>
</menuItem>
<menuItem title="Find Previous" tag="3" keyEquivalent="G" id="OwM-mh-QMV">
<connections>
<action selector="performFindPanelAction:" target="-1" id="HOh-sY-3ay"/>
</connections>
</menuItem>
<menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="buJ-ug-pKt">
<connections>
<action selector="performFindPanelAction:" target="-1" id="U76-nv-p5D"/>
</connections>
</menuItem>
<menuItem title="Jump to Selection" keyEquivalent="j" id="S0p-oC-mLd">
<connections>
<action selector="centerSelectionInVisibleArea:" target="-1" id="IOG-6D-g5B"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Spelling and Grammar" id="Dv1-io-Yv7">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Spelling" id="3IN-sU-3Bg">
<items>
<menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="HFo-cy-zxI">
<connections>
<action selector="showGuessPanel:" target="-1" id="vFj-Ks-hy3"/>
</connections>
</menuItem>
<menuItem title="Check Document Now" keyEquivalent=";" id="hz2-CU-CR7">
<connections>
<action selector="checkSpelling:" target="-1" id="fz7-VC-reM"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="bNw-od-mp5"/>
<menuItem title="Check Spelling While Typing" id="rbD-Rh-wIN">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleContinuousSpellChecking:" target="-1" id="7w6-Qz-0kB"/>
</connections>
</menuItem>
<menuItem title="Check Grammar With Spelling" id="mK6-2p-4JG">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleGrammarChecking:" target="-1" id="muD-Qn-j4w"/>
</connections>
</menuItem>
<menuItem title="Correct Spelling Automatically" id="78Y-hA-62v">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticSpellingCorrection:" target="-1" id="2lM-Qi-WAP"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Substitutions" id="9ic-FL-obx">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Substitutions" id="FeM-D8-WVr">
<items>
<menuItem title="Show Substitutions" id="z6F-FW-3nz">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="orderFrontSubstitutionsPanel:" target="-1" id="oku-mr-iSq"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="gPx-C9-uUO"/>
<menuItem title="Smart Copy/Paste" id="9yt-4B-nSM">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleSmartInsertDelete:" target="-1" id="3IJ-Se-DZD"/>
</connections>
</menuItem>
<menuItem title="Smart Quotes" id="hQb-2v-fYv">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="ptq-xd-QOA"/>
</connections>
</menuItem>
<menuItem title="Smart Dashes" id="rgM-f4-ycn">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticDashSubstitution:" target="-1" id="oCt-pO-9gS"/>
</connections>
</menuItem>
<menuItem title="Smart Links" id="cwL-P1-jid">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticLinkDetection:" target="-1" id="Gip-E3-Fov"/>
</connections>
</menuItem>
<menuItem title="Data Detectors" id="tRr-pd-1PS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticDataDetection:" target="-1" id="R1I-Nq-Kbl"/>
</connections>
</menuItem>
<menuItem title="Text Replacement" id="HFQ-gK-NFA">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="toggleAutomaticTextReplacement:" target="-1" id="DvP-Fe-Py6"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Transformations" id="2oI-Rn-ZJC">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Transformations" id="c8a-y6-VQd">
<items>
<menuItem title="Make Upper Case" id="vmV-6d-7jI">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="uppercaseWord:" target="-1" id="sPh-Tk-edu"/>
</connections>
</menuItem>
<menuItem title="Make Lower Case" id="d9M-CD-aMd">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="lowercaseWord:" target="-1" id="iUZ-b5-hil"/>
</connections>
</menuItem>
<menuItem title="Capitalize" id="UEZ-Bs-lqG">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="capitalizeWord:" target="-1" id="26H-TL-nsh"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Speech" id="xrE-MZ-jX0">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Speech" id="3rS-ZA-NoH">
<items>
<menuItem title="Start Speaking" id="Ynk-f8-cLZ">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="startSpeaking:" target="-1" id="654-Ng-kyl"/>
</connections>
</menuItem>
<menuItem title="Stop Speaking" id="Oyz-dy-DGm">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="stopSpeaking:" target="-1" id="dX8-6p-jy9"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="View" id="H8h-7b-M4v">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="View" id="HyV-fh-RgO">
<items>
<menuItem title="Enter Full Screen" keyEquivalent="f" id="4J7-dP-txa">
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
<connections>
<action selector="toggleFullScreen:" target="-1" id="dU3-MA-1Rq"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Window" id="aUF-d1-5bR">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
<items>
<menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
<connections>
<action selector="performMiniaturize:" target="-1" id="VwT-WD-YPe"/>
</connections>
</menuItem>
<menuItem title="Zoom" id="R4o-n2-Eq4">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="performZoom:" target="-1" id="DIl-cC-cCs"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/>
<menuItem title="Bring All to Front" id="LE2-aR-0XJ">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="arrangeInFront:" target="-1" id="DRN-fu-gQh"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items>
<point key="canvasLocation" x="142" y="-258"/>
</menu>
<window title="APP_NAME" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="QvC-M9-y7g" customClass="MainFlutterWindow" customModule="Runner" customModuleProvider="target">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
<rect key="contentRect" x="335" y="390" width="800" height="600"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1577"/>
<view key="contentView" wantsLayer="YES" id="EiT-Mj-1SZ">
<rect key="frame" x="0.0" y="0.0" width="800" height="600"/>
<autoresizingMask key="autoresizingMask"/>
</view>
</window>
</objects>
</document>
// Application-level settings for the Runner target.
//
// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the
// future. If not, the values below would default to using the project name when this becomes a
// 'flutter create' template.
// The application's name. By default this is also the title of the Flutter window.
PRODUCT_NAME = flutter_auth_animation
// The application's bundle identifier
PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterAuthAnimation
// The copyright displayed in application information
PRODUCT_COPYRIGHT = Copyright © 2021 com.example. All rights reserved.
#include "../../Flutter/Flutter-Debug.xcconfig"
#include "Warnings.xcconfig"
#include "../../Flutter/Flutter-Release.xcconfig"
#include "Warnings.xcconfig"
WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings
GCC_WARN_UNDECLARED_SELECTOR = YES
CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES
CLANG_WARN_PRAGMA_PACK = YES
CLANG_WARN_STRICT_PROTOTYPES = YES
CLANG_WARN_COMMA = YES
GCC_WARN_STRICT_SELECTOR_MATCH = YES
CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES
GCC_WARN_SHADOW = YES
CLANG_WARN_UNREACHABLE_CODE = YES
<?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>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.network.server</key>
<true/>
</dict>
</plist>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSMinimumSystemVersion</key>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>NSHumanReadableCopyright</key>
<string>$(PRODUCT_COPYRIGHT)</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>
import Cocoa
import FlutterMacOS
class MainFlutterWindow: NSWindow {
override func awakeFromNib() {
let flutterViewController = FlutterViewController.init()
let windowFrame = self.frame
self.contentViewController = flutterViewController
self.setFrame(windowFrame, display: true)
RegisterGeneratedPlugins(registry: flutterViewController)
super.awakeFromNib()
}
}
<?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>com.apple.security.app-sandbox</key>
<true/>
</dict>
</plist>
import time
import paho.mqtt.client as paho
from cryptography.fernet import Fernet
broker = "broker.hivemq.com"
# broker="192.168.1.206"
# define callback
def on_log(client, userdata, level, buf):
print("log: ", buf)
def on_message(client, userdata, message):
# time.sleep(1)
print("receive payload ", message.payload)
decrypted_message = cipher.decrypt(message.payload) # decrypted_message = cipher.decrypt(encrypted_message)
print("\nreceived message =", str(decrypted_message.decode("utf-8")))
client = paho.Client(
"client-pub") # create client object client1.on_publish = on_publish #assign function to callback client1.connect(broker,port) #establish connection client1.publish("house/bulb1","on")
client.on_log = on_log
######
client.on_message = on_message
#####encryption
# cipher_key = Fernet.generate_key()
cipher_key = b'WDrevvK8ZrPn8gmiNFjcOp2xovBr40TCwJlZOyI94IY='
cipher = Fernet(cipher_key)
message = b'on33'
# message = b'the quick brown fox jumps over the lazy dog'
encrypted_message = cipher.encrypt(message)
out_message = encrypted_message.decode() # turn it into a string to send
##
print("connecting to broker ", broker)
client.connect(broker) # connect
print("publishing encrypted message ", encrypted_message)
# out_message="on"
client.publish("house/bulb1", out_message) # publish
time.sleep(4)
client.disconnect() # disconnect
client.loop_stop() # stop loop
import time
import paho.mqtt.client as paho
from cryptography.fernet import Fernet
broker = "broker.hivemq.com"
# define callback
def on_log(client, userdata, level, buf):
print("log: ", buf)
def on_message(client, userdata, message):
# time.sleep(1)
print("receive payload ", message.payload)
if message.payload == encrypted_message:
print("\npublished and received messages are the same")
decrypted_message = cipher.decrypt(message.payload) # decrypted_message = cipher.decrypt(encrypted_message)
print("\nreceived message =", str(decrypted_message.decode("utf-8")))
client = paho.Client("client-001") # create client object client1.on_publish = on_publish
client.on_log = on_log
client.on_message = on_message
# encryption
cipher_key = Fernet.generate_key()
cipher = Fernet(cipher_key)
message = b'on'
# message = b'the quick brown fox jumps over the lazy dog'
encrypted_message = cipher.encrypt(message)
out_message = encrypted_message.decode() # turn it into a string to send
##
print("connecting to broker ", broker)
client.connect(broker) # connect
client.loop_start() # start loop to process received messages
print("subscribing ")
client.subscribe("house/bulb1") # subscribe
time.sleep(2)
print("publishing encrypted message ", encrypted_message)
# message="on"
client.publish("house/bulb1", out_message) # publish
time.sleep(4)
client.disconnect() # disconnect
client.loop_stop() # stop loop
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
async:
dependency: transitive
description:
name: async
url: "https://pub.dartlang.org"
source: hosted
version: "2.8.2"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
characters:
dependency: transitive
description:
name: characters
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
charcode:
dependency: transitive
description:
name: charcode
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.1"
clock:
dependency: transitive
description:
name: clock
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
collection:
dependency: transitive
description:
name: collection
url: "https://pub.dartlang.org"
source: hosted
version: "1.15.0"
cupertino_icons:
dependency: "direct main"
description:
name: cupertino_icons
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.3"
fake_async:
dependency: transitive
description:
name: fake_async
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
flutter:
dependency: "direct main"
description: flutter
source: sdk
version: "0.0.0"
flutter_svg:
dependency: "direct main"
description:
name: flutter_svg
url: "https://pub.dartlang.org"
source: hosted
version: "0.22.0"
flutter_test:
dependency: "direct dev"
description: flutter
source: sdk
version: "0.0.0"
matcher:
dependency: transitive
description:
name: matcher
url: "https://pub.dartlang.org"
source: hosted
version: "0.12.11"
material:
dependency: "direct main"
description:
name: material
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0+2"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.3"
meta:
dependency: transitive
description:
name: meta
url: "https://pub.dartlang.org"
source: hosted
version: "1.7.0"
path:
dependency: transitive
description:
name: path
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.0"
path_drawing:
dependency: transitive
description:
name: path_drawing
url: "https://pub.dartlang.org"
source: hosted
version: "0.5.1"
path_parsing:
dependency: transitive
description:
name: path_parsing
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.1"
petitparser:
dependency: transitive
description:
name: petitparser
url: "https://pub.dartlang.org"
source: hosted
version: "4.1.0"
sky_engine:
dependency: transitive
description: flutter
source: sdk
version: "0.0.99"
source_span:
dependency: transitive
description:
name: source_span
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.1"
stack_trace:
dependency: transitive
description:
name: stack_trace
url: "https://pub.dartlang.org"
source: hosted
version: "1.10.0"
stream_channel:
dependency: transitive
description:
name: stream_channel
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
string_scanner:
dependency: transitive
description:
name: string_scanner
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
term_glyph:
dependency: transitive
description:
name: term_glyph
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
test_api:
dependency: transitive
description:
name: test_api
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.8"
typed_data:
dependency: transitive
description:
name: typed_data
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0"
vector_math:
dependency: transitive
description:
name: vector_math
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
xml:
dependency: transitive
description:
name: xml
url: "https://pub.dartlang.org"
source: hosted
version: "5.1.2"
sdks:
dart: ">=2.14.0 <3.0.0"
flutter: ">=1.24.0-7.0"
name: flutter_auth_animation
description: A new Flutter project.
# The following line prevents the package from being accidentally published to
# pub.dev using `pub publish`. This is preferred for private packages.
publish_to: "none" # Remove this line if you wish to publish to pub.dev
# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1
environment:
sdk: ">=2.12.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2
flutter_svg: ^0.22.0
material: ^1.0.0+2
dev_dependencies:
flutter_test:
sdk: flutter
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
# The following section is specific to Flutter.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
# To add assets to your application, add an assets section, like this:
assets:
- assets/
# - images/a_dot_ham.jpeg
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware.
# For details regarding adding assets from package dependencies, see
# https://flutter.dev/assets-and-images/#from-packages
# To add custom fonts to your application, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a
# "family" key with the font family name, and a "fonts" key with a
# list giving the asset and other descriptors for the font. For
# example:
# fonts:
# - family: Schyler
# fonts:
# - asset: fonts/Schyler-Regular.ttf
# - asset: fonts/Schyler-Italic.ttf
# style: italic
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
#
# For details regarding fonts from package dependencies,
# see https://flutter.dev/custom-fonts/#from-packages
from tokenize import ContStr
from turtle import distance
from helpers import load_map_test, load_map_bus, load_map_train,route_177,route_176,route_8717
import math
class PathPlanner():
def __init__(self, M, start=None, goal=None, type=None):
self.map = M
self.start= start
self.goal = goal
self.type = type
self.range = 0
self.cost = 0
self.closedSet = self.create_closedSet() if goal != None and start != None else None
self.openSet = self.create_openSet() if goal != None and start != None else None
self.cameFrom = self.create_cameFrom() if goal != None and start != None else None
self.gScore = self.create_gScore() if goal != None and start != None else None
self.fScore = self.create_fScore() if goal != None and start != None else None
self.path = self.run_search() if self.map and self.start != None and self.goal != None else None
def reconstruct_path(self, current):
total_path = [current]
while current in self.cameFrom.keys():
current = self.cameFrom[current]
total_path.append(current)
return total_path
def _reset(self):
self.closedSet = None
self.openSet = None
self.cameFrom = None
self.gScore = None
self.fScore = None
self.path = self.run_search() if self.map and self.start and self.goal else None
def run_search(self):
""" """
if self.map == None:
raise(ValueError, "Must create map before running search")
if self.goal == None:
raise(ValueError, "Must create goal node before running search")
if self.start == None:
raise(ValueError, "Must create start node before running search")
self.closedSet = self.closedSet if self.closedSet != None else self.create_closedSet()
self.openSet = self.openSet if self.openSet != None else self.create_openSet()
self.cameFrom = self.cameFrom if self.cameFrom != None else self.create_cameFrom()
self.gScore = self.gScore if self.gScore != None else self.create_gScore()
self.fScore = self.fScore if self.fScore != None else self.create_fScore()
while not self.is_open_empty():
current = self.get_current_node()
if current == self.goal:
self.path = [x for x in reversed(self.reconstruct_path(current))]
return self.path
else:
self.openSet.remove(current)
self.closedSet.add(current)
for neighbor in self.get_neighbors(current):
if neighbor in self.closedSet:
continue # Ignore the neighbor which is already evaluated.
if not neighbor in self.openSet: # Discover a new node
self.openSet.add(neighbor)
# The distance from start to a neighbor
if self.getTempGScore(current, neighbor) >= self.get_gScore(neighbor):
continue
# This path is the best until now. Record it!
self.record_best_path_to(current, neighbor)
#self.range += self.dis
print("No Path Found")
self.path = None
return False
def create_closedSet(self):
return set()
def create_openSet(self):
openSet = set()
openSet.add(self.start)
return openSet
def create_cameFrom(self):
cameFrom = {}
return cameFrom
def create_gScore(self):
gScore = {}
for node in self.map.intersections.keys():
if node == self.start:
gScore[node] = 0
else: gScore[node] = float('inf')
return gScore
def create_fScore(self):
if self.start != None:
fScore = {}
for node in self.map.intersections.keys():
if node == self.start:
fScore[node] = self.heuristic_cost_estimate(self.start)
else: fScore[node] = float('inf')
return fScore
raise(ValueError, "Must create start node before creating fScore.")
def set_map(self, M):
"set map attribute "
self._reset(self)
self.start = None
self.goal = None
self.map = M
def set_start(self, start):
" set start attribute "
self._reset(self)
self.start = start
self.goal = None
def set_goal(self, goal):
"set goal attribute "
self._reset(self)
self.goal = goal
#-------------------------------- get information --------------------------------#
def is_open_empty(self):
"returns True if the open set is empty"
return not bool(self.openSet)
def get_current_node(self):
" Returns the node in the open set with the lowest value of f(node)"
current = None
minim = float('inf')
for node in self.openSet:
if self.fScore[node] < minim:
minim = self.fScore[node]
current = node
return current
def get_neighbors(self, node):
"""Returns the neighbors of a node"""
return set(self.map.roads[node])
#-------------------------------- Calculations --------------------------------#
def get_gScore(self, node):
return self.gScore[node]
def getTempGScore(self, current, neighbor):
# distance from the current node to it's neighbors
g_score_current = self.get_gScore(current)
dist_current_neighbor = self.distance(current,neighbor)
return g_score_current+dist_current_neighbor
def heuristic_cost_estimate(self, node):
if self.goal != None:
heuristic_estimate = self.distance(node,self.goal)
return heuristic_estimate
raise(ValueError, "Must create goal node before calculating huristic ")
def calculate_fscore(self, node):
# F = G + H
f_score = self.get_gScore(node) + self.heuristic_cost_estimate(node)
return f_score
# best path
def record_best_path_to(self, current, neighbor):
self.cameFrom[neighbor] = current
self.gScore[neighbor] = self.getTempGScore(current,neighbor)
self.fScore[neighbor] = self.gScore[neighbor] + self.heuristic_cost_estimate(neighbor)
def distance(self, node_1, node_2):
from math import radians, cos, sin, asin, sqrt
#The math module contains a function named
#radians which converts from degrees to radians.
lon1 = radians(self.map.intersections [node_1][0])
lon2 = radians(self.map.intersections [node_2][0])
lat1 = radians(self.map.intersections [node_1][1])
lat2 = radians(self.map.intersections [node_2][1])
# Haversine formula
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlon / 2)**2
c = 2 * asin(sqrt(a))
# Radius of earth in kilometers. Use 3956 for miles
r = 6371
# calculate the result
dist = (c * r)
#print (dist)
#self.dis = dist
return dist
def get_traveled_distance(self):
#traveled_distance
lastNode = self.start
for n in self.path[1:]:
self.range = self.range+ distance(lastNode, n )
lastNode = n
return self.range
def get_fare(self,path):
currentRouteNo = self.map.routeNo[self.start]
temp = 0
for x in path:
if self.map.routeNo[x] == currentRouteNo:
#print('path is(x) =' + str(x)+ ' ,temp =' + str(temp))
temp+=1
currentRouteNo = self.map.routeNo[x]
else :
print("eeeeeeeeeeeeeeeeeeee")
self.func(currentRouteNo, temp)
currentRouteNo = self.map.routeNo[x]
temp = 0
print('cost = ', self.cost)
#cost = cost + route_177.get(temp)
return self.cost
def func(self, no, nodes):
print('fuction')
if(no == 177):
self.cost = self.cost + route_177.get(nodes)
elif(no == 176):
self.cost = self.cost + route_176.get(nodes)
elif(no == 8717):
self.cost = self.cost + route_8717.get(nodes)
else:
pass
# Get route
def main( a, start, destination):
if a == 3:
map = load_map_train()
elif a == 2:
map = load_map_bus()
else:
map = load_map_test()
planner = PathPlanner(map,start,destination)
print(map.roads)
path = planner.path
print("Genarated path")
if path == False:
print("No path Found", path)
return
else:
print(path)
print('distance =' , planner.get_traveled_distance())
print(planner.get_fare(path))
main( 1, 0, 3)
\ No newline at end of file
import networkx as nx
import pickle
from chart_studio import plotly as py
import random
from plotly.graph_objs import *
#init_notebook_mode(connected=True)
route_177 = {
1: 34,
2: 42,
3: 54,
4: 67,
5: 80,
6: 92,
7: 105,
8: 109,
9: 117,
10: 126,
11: 134,
12: 140,
13: 149,
14: 157,
15: 163,
}
route_176 = {
1: 34,
2: 42,
3: 54,
}
route_8717 = {
1: 20,
2: 20,
3: 20,
4: 20,
5: 40
}
map_test = {
0: {'pos': (6.911034627182109, 79.84918916006576), 'connections': [1], 'name' : 'Kollupitiya','type': 0,'routeNo': 177, 'hValue': 1},
1: {'pos': (6.911751932322411, 79.86194701315071), 'connections': [0,2], 'name' : 'Viharamahadevi Park', 'type': 0, 'routeNo': 177, 'hValue': 1},
2: {'pos': (6.911385550864001, 79.87682791026592), 'connections': [1,3], 'name' : 'House Of Fashion', 'type': 0, 'routeNo': 177, 'hValue': 1},
3: {'pos': (6.911031363415147, 79.88498429384545), 'connections': [2,4], 'name' : 'Castle Street', 'type': 0, 'routeNo': 177, 'hValue': 1},
4: {'pos': (6.908462881966912, 79.89338919261249), 'connections': [3,5], 'name' : 'Rajagiriya', 'type': 0, 'routeNo': 177, 'hValue': 1},
5: {'pos': (6.906663916178293, 79.90205413217801), 'connections': [4,6], 'name' : 'HSBC Rajagiriya', 'type': 0, 'routeNo': 177, 'hValue': 1},
6: {'pos': (6.90333333857459, 79.90747047529919), 'connections': [5,7], 'name' : 'Ethulkotte New', 'type': 0, 'routeNo': 177, 'hValue': 1},
7: {'pos': (6.903185701293392, 79.91168232658337), 'connections': [6,8], 'name' : 'Parliament Junction', 'type': 0, 'routeNo': 177, 'hValue': 1},
8: {'pos': (6.902102452411621, 79.91741047710077), 'connections': [7,9], 'name' : 'Battaramulla Junction', 'type': 0, 'routeNo': 177, 'hValue': 1},
9: {'pos': (6.90431022366131, 79.92400480782847), 'connections': [8,10], 'name' : 'Ganahena', 'type': 0, 'routeNo': 177, 'hValue': 1},
10: {'pos': (6.906173952520986, 79.92862087153598), 'connections': [9,11], 'name' : 'Koswatta', 'type': 0, 'routeNo': 177, 'hValue': 1},
11: {'pos': (6.9084657304543455, 79.9383708894408), 'connections': [10,12], 'name' : 'Kotte-Bope', 'type': 0, 'routeNo': 177, 'hValue': 1},
12: {'pos': (6.9085023402918155, 79.94425286198016), 'connections': [11,13], 'name' : 'Thalahena Junction', 'type': 0, 'routeNo': 177, 'hValue': 1},
13: {'pos': (6.903962700873259, 79.95430199947661), 'connections': [12,14], 'name' : 'Malabe', 'type': 0, 'routeNo': 177, 'hValue': 1},
14: {'pos': (6.933539686667202, 79.85005389798111), 'connections': [15], 'name' : 'Fort_TR', 'type': 1, 'routeNo': 8717, 'hValue': 1},
15: {'pos': (6.923619774894732, 79.84965509086771), 'connections': [14,16], 'name' : 'Kompannavidiya_TR', 'type': 1, 'routeNo': 8717, 'hValue': 1},
16: {'pos': (6.911282166657041, 79.84821747831087), 'connections': [15,1,17], 'name' : 'Kollupitiya_TR', 'type': 1, 'routeNo': 8717, 'hValue': 1},
17: {'pos': (6.893710110662125, 79.85300590028642), 'connections': [16,18], 'name' : 'Bambalapitiya_TR', 'type': 1, 'routeNo': 8717, 'hValue': 1},
18: {'pos': (6.875030063532378, 79.85744793142631), 'connections': [17,19], 'name' : 'Wellawatte_TR', 'type': 1, 'routeNo': 8717, 'hValue': 1},
19: {'pos': (6.850915755796403, 79.8620969312958), 'connections': [18], 'name' : 'Dehiwala_TR', 'type': 1, 'routeNo': 8717, 'hValue': 1},
}
class Map:
def __init__(self, G):
self._graph = G
self.intersections = nx.get_node_attributes(G, "pos")
self.routeNo = nx.get_node_attributes(G, "routeNo")
self.type = nx.get_node_attributes(G, "type")
self.roads = [list(G[node]) for node in G.nodes()]
def save(self, filename):
with open(filename, 'wb') as f:
pickle.dump(self._graph, f)
def load_map_graph(map_dict):
G = nx.Graph()
for node in map_dict.keys():
G.add_node(node, pos=map_dict[node]['pos'], type=map_dict[node]['type'],routeNo=map_dict[node]['routeNo'])
for node in map_dict.keys():
for con_node in map_dict[node]['connections']:
G.add_edge(node, con_node)
return G
def load_map_b(map_dict):
# G = nx.Graph()
# for node in map_dict.keys():
# #nodeValue =
# if map_dict[node]['type'] != 1:
# continue
# else:
# G.add_node(node, pos=map_dict[node]['pos'], type=map_dict[node]['type'],routeNo=map_dict[node]['routeNo'])
G = nx.Graph()
for node in map_dict.keys():
G.add_node(node, pos=map_dict[node]['pos'], type=map_dict[node]['type'],routeNo=map_dict[node]['routeNo'])
# for node in map_dict.keys():
# for con_node in map_dict[node]['connections']:
# if map_dict[con_node]['type'] != 1:
# continue
# else:
# G.add_edge(node, con_node)
for node in map_dict.keys():
for con_node in map_dict[node]['connections']:
if map_dict[node]['type'] != 1:
continue
elif map_dict[con_node]['type'] != 1:
continue
else:
G.add_edge(node, con_node)
return G
#map for train
def load_map_t(map_dict):
G = nx.Graph()
for node in map_dict.keys():
G.add_node(node, pos=map_dict[node]['pos'], type=map_dict[node]['type'],routeNo=map_dict[node]['routeNo'])
for node in map_dict.keys():
for con_node in map_dict[node]['connections']:
if map_dict[node]['type'] == 1:
continue
elif map_dict[con_node]['type'] == 1:
continue
else:
G.add_edge(node, con_node)
return G
def load_map_test():
G = load_map_graph(map_test)
return Map(G)
def load_map_bus():
G = load_map_b(map_test)
return Map(G)
def load_map_train():
G = load_map_t(map_test)
return Map(G)
import networkx as nx
import pickle
from chart_studio import plotly as py
#import plotly.plotly as py
import random
from plotly.graph_objs import *
from plotly.offline import init_notebook_mode, plot, iplot
init_notebook_mode(connected=True)
map_10_dict = {
0: {'pos': (0.7798606835438107, 0.6922727646627362), 'connections': [7, 6, 5]},
1: {'pos': (0.7647837074641568, 0.3252670836724646), 'connections': [4, 3, 2]},
2: {'pos': (0.7155217893995438, 0.20026498027300055), 'connections': [4, 3, 1]},
3: {'pos': (0.7076566826610747, 0.3278339270610988), 'connections': [5, 4, 1, 2]},
4: {'pos': (0.8325506249953353, 0.02310946309985762), 'connections': [1, 2, 3]},
5: {'pos': (0.49016747075266875, 0.5464878695400415), 'connections': [7, 0, 3]},
6: {'pos': (0.8820353070895344, 0.6791919587749445), 'connections': [0]},
7: {'pos': (0.46247219371675075, 0.6258061621642713), 'connections': [0, 5]},
8: {'pos': (0.11622158839385677, 0.11236327488812581), 'connections': [9]},
9: {'pos': (0.1285377678230034, 0.3285840695698353), 'connections': [8]}
}
class Map:
def __init__(self, G):
self._graph = G
self.intersections = nx.get_node_attributes(G, "pos")
self.roads = [list(G[node]) for node in G.nodes()]
def save(self, filename):
with open(filename, 'wb') as f:
pickle.dump(self._graph, f)
def load_map_graph(map_dict):
G = nx.Graph()
for node in map_dict.keys():
G.add_node(node, pos=map_dict[node]['pos'])
for node in map_dict.keys():
for con_node in map_dict[node]['connections']:
G.add_edge(node, con_node)
return G
def load_map_10():
G = load_map_graph(map_10_dict)
return Map(G)
def load_map_40():
G = load_map_graph(map_40_dict)
return Map(G)
def show_map(M, start=None, goal=None, path=None):
G = M._graph
pos = nx.get_node_attributes(G, 'pos')
edge_trace = Scatter(
x=[],
y=[],
line=Line(width=0.5,color='#888'),
hoverinfo='none',
mode='lines')
for edge in G.edges():
x0, y0 = G.node[edge[0]]['pos']
x1, y1 = G.node[edge[1]]['pos']
edge_trace['x'] += [x0, x1, None]
edge_trace['y'] += [y0, y1, None]
node_trace = Scatter(
x=[],
y=[],
text=[],
mode='markers',
hoverinfo='text',
marker=Marker(
showscale=False,
# colorscale options
# 'Greys' | 'Greens' | 'Bluered' | 'Hot' | 'Picnic' | 'Portland' |
# Jet' | 'RdBu' | 'Blackbody' | 'Earth' | 'Electric' | 'YIOrRd' | 'YIGnBu'
colorscale='Hot',
reversescale=True,
color=[],
size=10,
colorbar=dict(
thickness=15,
title='Node Connections',
xanchor='left',
titleside='right'
),
line=dict(width=2)))
for node in G.nodes():
x, y = G.node[node]['pos']
node_trace['x'].append(x)
node_trace['y'].append(y)
for node, adjacencies in enumerate(G.adjacency_list()):
color = 0
if path and node in path:
color = 2
if node == start:
color = 3
elif node == goal:
color = 1
# node_trace['marker']['color'].append(len(adjacencies))
node_trace['marker']['color'].append(color)
node_info = "Intersection " + str(node)
node_trace['text'].append(node_info)
fig = Figure(data=Data([edge_trace, node_trace]),
layout=Layout(
title='<br>Network graph made with Python',
titlefont=dict(size=16),
showlegend=False,
hovermode='closest',
margin=dict(b=20,l=5,r=5,t=40),
xaxis=XAxis(showgrid=False, zeroline=False, showticklabels=False),
yaxis=YAxis(showgrid=False, zeroline=False, showticklabels=False)))
iplot(fig)
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from maps import Map, load_map_10, show_map\n",
"import math"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"map_10 = load_map_10()\n",
"show_map(map_10)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"map_10.intersections\n",
"#map_10.intersections[0][0]\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# this shows that intersection 0 connects to intersections 7, 6, and 5\n",
"map_10.roads[0] "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# This shows the full connectivity of the map\n",
"map_10.roads"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# parameters in the function\n",
"show_map(map_10, start=7, goal=2, path=[7,5,5])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Planner\n",
"class PathPlanner():\n",
" \"\"\" PathPlanner Object \"\"\"\n",
" def __init__(self, M, start=None, goal=None):\n",
" \n",
" self.map = M\n",
" self.start= start\n",
" self.goal = goal\n",
" self.closedSet = self.create_closedSet() if goal != None and start != None else None\n",
" self.openSet = self.create_openSet() if goal != None and start != None else None\n",
" self.cameFrom = self.create_cameFrom() if goal != None and start != None else None\n",
" self.gScore = self.create_gScore() if goal != None and start != None else None\n",
" self.fScore = self.create_fScore() if goal != None and start != None else None\n",
" self.path = self.run_search() if self.map and self.start != None and self.goal != None else None\n",
" \n",
" def reconstruct_path(self, current):\n",
" total_path = [current]\n",
" while current in self.cameFrom.keys():\n",
" current = self.cameFrom[current]\n",
" total_path.append(current)\n",
" return total_path\n",
" \n",
" def _reset(self):\n",
" self.closedSet = None\n",
" self.openSet = None\n",
" self.cameFrom = None\n",
" self.gScore = None\n",
" self.fScore = None\n",
" self.path = self.run_search() if self.map and self.start and self.goal else None\n",
"\n",
" def run_search(self):\n",
" \"\"\" \"\"\"\n",
" if self.map == None:\n",
" raise(ValueError, \"Must create map before running search\")\n",
" if self.goal == None:\n",
" raise(ValueError, \"Must create goal node before running search\")\n",
" if self.start == None:\n",
" raise(ValueError, \"Must create start node before running search\")\n",
"\n",
" self.closedSet = self.closedSet if self.closedSet != None else self.create_closedSet()\n",
" self.openSet = self.openSet if self.openSet != None else self.create_openSet()\n",
" self.cameFrom = self.cameFrom if self.cameFrom != None else self.create_cameFrom()\n",
" self.gScore = self.gScore if self.gScore != None else self.create_gScore()\n",
" self.fScore = self.fScore if self.fScore != None else self.create_fScore()\n",
"\n",
" while not self.is_open_empty():\n",
" current = self.get_current_node()\n",
"\n",
" if current == self.goal:\n",
" self.path = [x for x in reversed(self.reconstruct_path(current))]\n",
" return self.path\n",
" else:\n",
" self.openSet.remove(current)\n",
" self.closedSet.add(current)\n",
"\n",
" for neighbor in self.get_neighbors(current):\n",
" if neighbor in self.closedSet:\n",
" continue # Ignore the neighbor which is already evaluated.\n",
"\n",
" if not neighbor in self.openSet: # Discover a new node\n",
" self.openSet.add(neighbor)\n",
" \n",
" # The distance from start to a neighbor\n",
" #the \"dist_between\" function may vary as per the solution requirements.\n",
" if self.get_tentative_gScore(current, neighbor) >= self.get_gScore(neighbor):\n",
" continue \n",
" \n",
" self.record_best_path_to(current, neighbor)\n",
" print(\"No Path Found\")\n",
" self.path = None\n",
" return False"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def create_closedSet(self):\n",
" \"\"\" Creates and returns a data structure suitable to hold the set of nodes already evaluated\"\"\"\n",
" # EXAMPLE: return a data structure suitable to hold the set of nodes already evaluated\n",
" return set()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def create_openSet(self):\n",
" if self.start != None:\n",
" # TODO: return a data structure suitable to hold the set of currently discovered nodes \n",
" # that are not evaluated yet. Make sure to include the start node.\n",
" openSet = set()\n",
" openSet.add(self.start)\n",
" return openSet\n",
" \n",
" raise(ValueError, \"Must create start node before creating an open set. Try running PathPlanner.set_start(start_node)\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def create_cameFrom(self):\n",
" # TODO: return a data structure that shows which node can most efficiently be reached from another,\n",
" # for each node. \n",
" cameFrom = {}\n",
" return cameFrom"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def create_gScore(self):\n",
" # TODO: return a data structure that holds the cost of getting from the start node to that node, for each node.\n",
" # for each node. The cost of going from start to start is zero. The rest of the node's values should \n",
" # be set to infinity.\n",
" if self.start != None:\n",
" gScore = {}\n",
" for node in self.map.intersections.keys():\n",
" if node == self.start:\n",
" gScore[node] = 0\n",
" else: gScore[node] = float('inf')\n",
" return gScore\n",
" raise(ValueError, \"Must create start node before creating gScore. Try running PathPlanner.set_start(start_node)\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def create_fScore(self):\n",
" # TODO: return a data structure that holds the total cost of getting from the start node to the goal\n",
" # by passing by that node, for each node. That value is partly known, partly heuristic.\n",
" # For the first node, that value is completely heuristic. The rest of the node's value should be \n",
" # set to infinity.\n",
" if self.start != None:\n",
" fScore = {}\n",
" for node in self.map.intersections.keys():\n",
" if node == self.start:\n",
" fScore[node] = self.heuristic_cost_estimate(self.start)\n",
" else: fScore[node] = float('inf')\n",
" return fScore\n",
" raise(ValueError, \"Must create start node before creating fScore. Try running PathPlanner.set_start(start_node)\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def set_map(self, M):\n",
" \"\"\"Method used to set map attribute \"\"\"\n",
" self._reset(self)\n",
" self.start = None\n",
" self.goal = None\n",
" # TODO: Set map to new value. \n",
" self.map = M"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def set_start(self, start):\n",
" \"\"\"Method used to set start attribute \"\"\"\n",
" self._reset(self)\n",
" # TODO: Set start value. Remember to remove goal, closedSet, openSet, cameFrom, gScore, fScore, \n",
" # and path attributes' values.\n",
" self.start = start\n",
" self.goal = None\n",
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def set_goal(self, goal):\n",
" \"\"\"Method used to set goal attribute \"\"\"\n",
" self._reset(self)\n",
" # TODO: Set goal value. \n",
" self.goal = goal\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def is_open_empty(self):\n",
" \"\"\"returns True if the open set is empty. False otherwise. \"\"\"\n",
" # TODO: Return True if the open set is empty. False otherwise.\n",
" return not bool(self.openSet)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def get_current_node(self):\n",
" \"\"\" Returns the node in the open set with the lowest value of f(node).\"\"\"\n",
" # TODO: Return the node in the open set with the lowest value of f(node).\n",
" current = None\n",
" minim = float('inf')\n",
" for node in self.openSet:\n",
" if self.fScore[node] < minim:\n",
" minim = self.fScore[node]\n",
" current = node\n",
" return current \n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def get_neighbors(self, node):\n",
" \"\"\"Returns the neighbors of a node\"\"\"\n",
" # TODO: Return the neighbors of a node\n",
" return set(self.map.roads[node]) \n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Scores\n",
"\n",
"def get_gScore(self, node):\n",
" \"\"\"Returns the g Score of a node\"\"\"\n",
" # TODO: Return the g Score of a node\n",
" return self.gScore[node]\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def distance(self, node_1, node_2):\n",
" \"\"\" Computes the Euclidean L2 Distance\"\"\"\n",
" # TODO: Compute and return the Euclidean L2 Distance\n",
" x1 = self.map.intersections[node_1][0]\n",
" y1 = self.map.intersections[node_1][1]\n",
" x2 = self.map.intersections[node_2][0]\n",
" y2 = self.map.intersections[node_2][1]\n",
" dist = math.sqrt( (x2-x1)**2 + (y2-y1)**2 )\n",
" return dist\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def get_tentative_gScore(self, current, neighbor):\n",
" \"\"\"Returns the tentative g Score of a node\"\"\"\n",
" # TODO: Return the g Score of the current node \n",
" # plus distance from the current node to it's neighbors\n",
" g_score_current = self.get_gScore(current)\n",
" dist_current_neighbor = self.distance(current,neighbor)\n",
" return g_score_current+dist_current_neighbor\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def heuristic_cost_estimate(self, node):\n",
" \"\"\" Returns the heuristic cost estimate of a node \"\"\"\n",
" # TODO: Return the heuristic cost estimate of a node\n",
" if self.goal != None:\n",
" heuristic_estimate = self.distance(node,self.goal)\n",
" return heuristic_estimate\n",
" raise(ValueError, \"Must create goal node before calculating huristic estimate. Try running PathPlanner.set_goal(goal_node)\")\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def calculate_fscore(self, node):\n",
" \"\"\"Calculate the f score of a node. \"\"\"\n",
" # TODO: Calculate and returns the f score of a node. \n",
" # REMEMBER F = G + H\n",
" f_score = self.get_gScore(node) + self.heuristic_cost_estimate(node)\n",
" return f_score\n",
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def record_best_path_to(self, current, neighbor):\n",
" \"\"\"Record the best path to a node \"\"\"\n",
" # TODO: Record the best path to a node, by updating cameFrom, gScore, and fScore\n",
" self.cameFrom[neighbor] = current\n",
" self.gScore[neighbor] = self.get_tentative_gScore(current,neighbor)\n",
" self.fScore[neighbor] = self.gScore[neighbor] + self.heuristic_cost_estimate(neighbor)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Associates implemented functions with PathPlanner class\n",
"PathPlanner.create_closedSet = create_closedSet\n",
"PathPlanner.create_openSet = create_openSet\n",
"PathPlanner.create_cameFrom = create_cameFrom\n",
"PathPlanner.create_gScore = create_gScore\n",
"PathPlanner.create_fScore = create_fScore\n",
"PathPlanner.set_map = set_map\n",
"PathPlanner.set_start = set_start\n",
"PathPlanner.set_goal = set_goal\n",
"PathPlanner.is_open_empty = is_open_empty\n",
"PathPlanner.get_current_node = get_current_node\n",
"PathPlanner.get_neighbors = get_neighbors\n",
"PathPlanner.get_gScore = get_gScore\n",
"PathPlanner.distance = distance\n",
"PathPlanner.get_tentative_gScore = get_tentative_gScore\n",
"PathPlanner.heuristic_cost_estimate = heuristic_cost_estimate\n",
"PathPlanner.calculate_fscore = calculate_fscore\n",
"PathPlanner.record_best_path_to = record_best_path_to"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Visualize result\n",
"start = 7\n",
"goal = 5\n",
"\n",
"show_map(map_10, start=start, goal=goal, path=PathPlanner(map_10, start, goal).path)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.4"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
from helpers import load_map_test
MAP_ANSWERS = [
(5, 34, [5, 16, 37, 12, 34]),
(5, 5, [5]),
(8, 24, [8, 14, 16, 37, 12, 17, 10, 24])
]
def test(shortest_path_function):
map = load_map_test()
correct = 0
for start, goal, answer_path in MAP_ANSWERS:
path = shortest_path_function(map, start, goal).path
if path == answer_path:
correct += 1
print("For start:", start,
"Goal: ", goal,
"Your path:", path,
"Correct: ", answer_path)
else:
print("Error Testing faild !!!" )
if correct == len(MAP_ANSWERS):
print("All tests pass ")
else:
print("Only passed", correct, "/", len(MAP_ANSWERS), "test cases")
\ No newline at end of file
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = "Travelle"
include ':app'
import time
import paho.mqtt.client as paho
from cryptography.fernet import Fernet
broker = "broker.hivemq.com"
# broker="192.168.1.206"
# define callback
def on_log(client, userdata, level, buf):
print("log: ", buf)
def on_message(client, userdata, message):
# time.sleep(1)
print("receive payload ", message.payload)
decrypted_message = cipher.decrypt(message.payload) # decrypted_message = cipher.decrypt(encrypted_message)
print("\nreceived message =", str(decrypted_message.decode("utf-8")))
client = paho.Client(
"client-001") # create client object client1.on_publish = on_publish #assign function
# to callback client1.connect(broker,port) #establish connection client1.publish(
# "house/bulb1","on")
client.on_log = on_log
######
client.on_message = on_message
#####encryption
cipher_key = b'WDrevvK8ZrPn8gmiNFjcOp2xovBr40TCwJlZOyI94IY='
cipher = Fernet(cipher_key)
print("connecting to broker ", broker)
client.connect(broker) # connect
client.loop_start() # start loop to process received messages
print("subscribing ")
client.subscribe("house/bulb1") # subscribe
count = 0
while count < 60:
time.sleep(1)
count += 1
client.disconnect() # disconnect
client.loop_stop() # stop loop
// This is a basic Flutter widget test.
//
// To perform an interaction with a widget in your test, use the WidgetTester
// utility that Flutter provides. For example, you can send tap and scroll
// gestures. You can also use WidgetTester to find child widgets in the widget
// tree, read text, and verify that the values of widget properties are correct.
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter_cubit/main.dart';
void main() {
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
// Build our app and trigger a frame.
await tester.pumpWidget(const MyApp());
// Verify that our counter starts at 0.
expect(find.text('0'), findsOneWidget);
expect(find.text('1'), findsNothing);
// Tap the '+' icon and trigger a frame.
await tester.tap(find.byIcon(Icons.add));
await tester.pump();
// Verify that our counter has incremented.
expect(find.text('0'), findsNothing);
expect(find.text('1'), findsOneWidget);
});
}
from bs4 import BeautifulSoup
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
def weather(city):
city = city.replace(" ", "+")
res = requests.get(
f'https://www.google.com/search?q={city}&oq={city}&aqs=chrome.0.35i39l2j0l4j46j69i60.6128j1j7&sourceid=chrome&ie=UTF-8', headers=headers)
soup = BeautifulSoup(res.text, 'html.parser')
location = soup.select('#wob_loc')[0].getText().strip()
time = soup.select('#wob_dts')[0].getText().strip()
info = soup.select('#wob_dc')[0].getText().strip()
weather = soup.select('#wob_tm')[0].getText().strip()
return weather
<!DOCTYPE html>
<html>
<head>
<!--
If you are serving your web app in a path other than the root, change the
href value below to reflect the base path you are serving from.
The path provided below has to start and end with a slash "/" in order for
it to work correctly.
For more details:
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base
This is a placeholder for base href that will be replaced by the value of
the `--base-href` argument provided to `flutter build`.
-->
<base href="$FLUTTER_BASE_HREF">
<meta charset="UTF-8">
<meta content="IE=Edge" http-equiv="X-UA-Compatible">
<meta name="description" content="A new Flutter project.">
<!-- iOS meta tags & icons -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="flutter_cubit">
<link rel="apple-touch-icon" href="icons/Icon-192.png">
<title>flutter_cubit</title>
<link rel="manifest" href="manifest.json">
</head>
<body>
<!-- This script installs service_worker.js to provide PWA functionality to
application. For more information, see:
https://developers.google.com/web/fundamentals/primers/service-workers -->
<script>
var serviceWorkerVersion = null;
var scriptLoaded = false;
function loadMainDartJs() {
if (scriptLoaded) {
return;
}
scriptLoaded = true;
var scriptTag = document.createElement('script');
scriptTag.src = 'main.dart.js';
scriptTag.type = 'application/javascript';
document.body.append(scriptTag);
}
if ('serviceWorker' in navigator) {
// Service workers are supported. Use them.
window.addEventListener('load', function () {
// Wait for registration to finish before dropping the <script> tag.
// Otherwise, the browser will load the script multiple times,
// potentially different versions.
var serviceWorkerUrl = 'flutter_service_worker.js?v=' + serviceWorkerVersion;
navigator.serviceWorker.register(serviceWorkerUrl)
.then((reg) => {
function waitForActivation(serviceWorker) {
serviceWorker.addEventListener('statechange', () => {
if (serviceWorker.state == 'activated') {
console.log('Installed new service worker.');
loadMainDartJs();
}
});
}
if (!reg.active && (reg.installing || reg.waiting)) {
// No active web worker and we have installed or are installing
// one for the first time. Simply wait for it to activate.
waitForActivation(reg.installing || reg.waiting);
} else if (!reg.active.scriptURL.endsWith(serviceWorkerVersion)) {
// When the app updates the serviceWorkerVersion changes, so we
// need to ask the service worker to update.
console.log('New service worker available.');
reg.update();
waitForActivation(reg.installing);
} else {
// Existing service worker is still good.
console.log('Loading app from service worker.');
loadMainDartJs();
}
});
// If service worker doesn't succeed in a reasonable amount of time,
// fallback to plaint <script> tag.
setTimeout(() => {
if (!scriptLoaded) {
console.warn(
'Failed to load app from service worker. Falling back to plain <script> tag.',
);
loadMainDartJs();
}
}, 4000);
});
} else {
// Service workers not supported. Just drop the <script> tag.
loadMainDartJs();
}
</script>
</body>
</html>
{
"name": "flutter_cubit",
"short_name": "flutter_cubit",
"start_url": ".",
"display": "standalone",
"background_color": "#0175C2",
"theme_color": "#0175C2",
"description": "A new Flutter project.",
"orientation": "portrait-primary",
"prefer_related_applications": false,
"icons": [
{
"src": "icons/Icon-192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "icons/Icon-512.png",
"sizes": "512x512",
"type": "image/png"
},
{
"src": "icons/Icon-maskable-192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "icons/Icon-maskable-512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
}
]
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment