├── .gitignore ├── .metadata ├── README.md ├── android ├── .gitignore ├── app │ ├── build.gradle │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── geektutor │ │ │ │ └── wewe │ │ │ │ └── MainActivity.java │ │ └── res │ │ │ ├── drawable │ │ │ ├── ic_launcher.png │ │ │ └── launch_background.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── values │ │ │ └── styles.xml │ │ │ └── xml │ │ │ └── filepaths.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties ├── key.properties ├── settings.gradle └── settings_aar.gradle ├── assets ├── 017-foggy.png ├── 020-foggy.png ├── 032-lightning.png ├── 041-snowflake.png ├── 044-storm.png ├── 049-thermometer.png ├── 058-wind.png ├── Subtract.png ├── WeWe.png ├── artem-militonian-UYW6FZLlnL8-unsplash.jpg ├── autumn.jpg ├── clody icon.png ├── clodyicon.png ├── coming.png ├── default.jpg ├── drizzle.png ├── humidity 1.png ├── lightning.jpg ├── rain.jpg ├── rainny.png ├── sea.jpg ├── shifaaz-shamoon-oR0uERTVyD0-unsplash.jpg ├── snow.jpg ├── sun.jpg ├── tornado.jpg └── wind.jpg ├── facts.json ├── ios ├── .gitignore ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings └── Runner │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── Icon-App-1024x1024@1x.png │ │ ├── Icon-App-20x20@1x.png │ │ ├── Icon-App-20x20@2x.png │ │ ├── Icon-App-20x20@3x.png │ │ ├── Icon-App-29x29@1x.png │ │ ├── Icon-App-29x29@2x.png │ │ ├── Icon-App-29x29@3x.png │ │ ├── Icon-App-40x40@1x.png │ │ ├── Icon-App-40x40@2x.png │ │ ├── Icon-App-40x40@3x.png │ │ ├── Icon-App-60x60@2x.png │ │ ├── Icon-App-60x60@3x.png │ │ ├── Icon-App-76x76@1x.png │ │ ├── Icon-App-76x76@2x.png │ │ └── Icon-App-83.5x83.5@2x.png │ └── LaunchImage.imageset │ │ ├── Contents.json │ │ ├── LaunchImage.png │ │ ├── LaunchImage@2x.png │ │ ├── LaunchImage@3x.png │ │ └── README.md │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── Info.plist │ └── main.m ├── lib ├── api.dart ├── home.dart ├── main.dart ├── myapp.dart ├── soon.dart ├── theme.dart ├── weather_facts.dart └── widgets │ ├── appbar.dart │ └── spacing.dart ├── pubspec.lock ├── pubspec.yaml └── test └── widget_test.dart /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | .dart_tool/ 26 | .flutter-plugins 27 | .flutter-plugins-dependencies 28 | .packages 29 | .pub-cache/ 30 | .pub/ 31 | /build/ 32 | 33 | # Web related 34 | lib/generated_plugin_registrant.dart 35 | 36 | # Symbolication related 37 | app.*.symbols 38 | 39 | # Obfuscation related 40 | app.*.map.json 41 | 42 | # Exceptions to above rules. 43 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 44 | -------------------------------------------------------------------------------- /.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: e6b34c2b5c96bb95325269a29a84e83ed8909b5f 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # wewe 2 | 3 | A new Flutter application. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | def flutterRoot = localProperties.getProperty('flutter.sdk') 10 | if (flutterRoot == null) { 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 12 | } 13 | 14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | def keystoreProperties = new Properties() 25 | def keystorePropertiesFile = rootProject.file('key.properties') 26 | if (keystorePropertiesFile.exists()) { 27 | keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) 28 | } 29 | 30 | 31 | apply plugin: 'com.android.application' 32 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 33 | 34 | android { 35 | compileSdkVersion 28 36 | 37 | lintOptions { 38 | disable 'InvalidPackage' 39 | } 40 | 41 | defaultConfig { 42 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 43 | applicationId "geektutor.wewe" 44 | minSdkVersion 16 45 | targetSdkVersion 28 46 | versionCode flutterVersionCode.toInteger() 47 | versionName flutterVersionName 48 | } 49 | signingConfigs { 50 | release { 51 | keyAlias keystoreProperties['keyAlias'] 52 | keyPassword keystoreProperties['keyPassword'] 53 | storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null 54 | storePassword keystoreProperties['storePassword'] 55 | } 56 | } 57 | buildTypes { 58 | release { 59 | signingConfig signingConfigs.release 60 | } 61 | } 62 | } 63 | 64 | flutter { 65 | source '../..' 66 | } 67 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 4 | 9 | 10 | 14 | 21 | 25 | 29 | 34 | 38 | 39 | 40 | 41 | 42 | 43 | 45 | 48 | 54 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /android/app/src/main/java/geektutor/wewe/MainActivity.java: -------------------------------------------------------------------------------- 1 | package geektutor.wewe; 2 | 3 | import io.flutter.embedding.android.FlutterActivity; 4 | 5 | public class MainActivity extends FlutterActivity { 6 | } 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/android/app/src/main/res/drawable/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/main/res/xml/filepaths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | google() 4 | jcenter() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:3.5.0' 9 | } 10 | } 11 | 12 | allprojects { 13 | repositories { 14 | google() 15 | jcenter() 16 | } 17 | } 18 | 19 | rootProject.buildDir = '../build' 20 | subprojects { 21 | project.buildDir = "${rootProject.buildDir}/${project.name}" 22 | } 23 | subprojects { 24 | project.evaluationDependsOn(':app') 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.enableR8=true 3 | android.useAndroidX=true 4 | android.enableJetifier=true 5 | android.bundle.enableUncompressedNativeLibs=false -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip 7 | -------------------------------------------------------------------------------- /android/key.properties: -------------------------------------------------------------------------------- 1 | storePassword=android 2 | keyPassword=android 3 | keyAlias=key 4 | storeFile=/key.jks -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /android/settings_aar.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /assets/017-foggy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/017-foggy.png -------------------------------------------------------------------------------- /assets/020-foggy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/020-foggy.png -------------------------------------------------------------------------------- /assets/032-lightning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/032-lightning.png -------------------------------------------------------------------------------- /assets/041-snowflake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/041-snowflake.png -------------------------------------------------------------------------------- /assets/044-storm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/044-storm.png -------------------------------------------------------------------------------- /assets/049-thermometer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/049-thermometer.png -------------------------------------------------------------------------------- /assets/058-wind.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/058-wind.png -------------------------------------------------------------------------------- /assets/Subtract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/Subtract.png -------------------------------------------------------------------------------- /assets/WeWe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/WeWe.png -------------------------------------------------------------------------------- /assets/artem-militonian-UYW6FZLlnL8-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/artem-militonian-UYW6FZLlnL8-unsplash.jpg -------------------------------------------------------------------------------- /assets/autumn.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/autumn.jpg -------------------------------------------------------------------------------- /assets/clody icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/clody icon.png -------------------------------------------------------------------------------- /assets/clodyicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/clodyicon.png -------------------------------------------------------------------------------- /assets/coming.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/coming.png -------------------------------------------------------------------------------- /assets/default.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/default.jpg -------------------------------------------------------------------------------- /assets/drizzle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/drizzle.png -------------------------------------------------------------------------------- /assets/humidity 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/humidity 1.png -------------------------------------------------------------------------------- /assets/lightning.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/lightning.jpg -------------------------------------------------------------------------------- /assets/rain.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/rain.jpg -------------------------------------------------------------------------------- /assets/rainny.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/rainny.png -------------------------------------------------------------------------------- /assets/sea.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/sea.jpg -------------------------------------------------------------------------------- /assets/shifaaz-shamoon-oR0uERTVyD0-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/shifaaz-shamoon-oR0uERTVyD0-unsplash.jpg -------------------------------------------------------------------------------- /assets/snow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/snow.jpg -------------------------------------------------------------------------------- /assets/sun.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/sun.jpg -------------------------------------------------------------------------------- /assets/tornado.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/tornado.jpg -------------------------------------------------------------------------------- /assets/wind.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/assets/wind.jpg -------------------------------------------------------------------------------- /facts.json: -------------------------------------------------------------------------------- 1 | { "facts": [ 2 | "The wind doesn’t make a sound until it blows against an object", 3 | "For each minute of the day, 1 billion tonnes of rain falls on the Earth", 4 | "A molecule of water will stay in the Earth’s atmosphere for an average duration of 10-12 days", 5 | "The fastest speed a falling raindrop can hit you is 18 mph", 6 | "It was so cold in 1684 that the Thames River in England froze solid for two months", 7 | "Mawsynram in Meghalaya, India is the wettest place on Earth with an annual rainfall of more than 11 meters", 8 | "Highest Temperature Recorded on Earth is 56.7°C (134°F) at Greenland Ranch in Death Valley, California, on July 10, 1913", 9 | "Lowest Temperature Recorded on Earth is -89.2°C (-128.5°F) at Vostok, Antarctica on July 21, 1983", 10 | "In 1899, it was so cold that the Mississippi river froze over its entire length", 11 | "The air located around a lightning bolt is heated to around 30,000°C. This is 5 times hotter than the surface of the sun", 12 | "The average width of a tornado’s funnel averages about 100 to 200 yards, but it may be as wide as a mile", 13 | "Snowflakes falling at 2-4 mph can take up to 1 hour to reach the ground", 14 | "The country most affected by tornadoes is the USA which faces on average 1200 tornadoes every year", 15 | "Commonwealth Bay, Antarctica is the windiest place on Earth with winds of 200mph been recorded", 16 | "Dirt mixed with wind can make dust storms called black blizzards", 17 | "Mild autumn weather often means bigger spiders in our homes", 18 | "A mudslide can carry rocks, trees, vehicles and entire buildings", 19 | "About 2,000 thunderstorms rain down on Earth every minute", 20 | "A heatwave can make train tracks bend!", 21 | "Lightning often follows a volcanic eruption", 22 | "Raindrops can be the size of a housefly and fall at more than 30kmph", 23 | "In July 2001 the rainfall in Kerala, India, was blood red!", 24 | "Blizzards can make snowflakes feel like pellets hitting your face", 25 | "A hurricane in Florida, USA, caused 900 captive pythons to escape", 26 | "Worms wriggle up from underground when a flood is coming", 27 | "A thunderstorm can produce 160kmph winds!", 28 | "In Antarctica, snow can fall so hard you can’t see your hand in front of your face", 29 | "In 1972, a blizzard dumped 8m of snowfall on Iran, burying 200 villages", 30 | "Some frogs get noisier just before it rains", 31 | "In 525 BC a sandstorm buried hundreds of soldiers in an Egyptian desert", 32 | "Waterspouts, or rotating columns of air over water, can make sea creatures rain down from the sky", 33 | "Cats and dogs have been known to sense when a tornado is approaching", 34 | "Clouds can be categorized into a number of different types; these include cumulus, stratus and cirrus", 35 | "Lightening can strike twice in the same spot", 36 | "The Sunshine State(Florida) is Less Sunny than Arizona", 37 | "Tornadoes Threaten a Larger Area than Just Tornado Alley", 38 | "Tornados last no more than 15 minutes", 39 | "Snow has another colors than white", 40 | "The Empire State Building gets struck by lightning on the average of 500 a year", 41 | "One lightning bolt has enough electricity to service 200 000 homes", 42 | "Baseball sized hail killed 246 people in India in 1888", 43 | "Rain has a smell", 44 | "Raindrops are spherical in shape", 45 | "On an average speed of 14mph and an average cloud height of 2,500 feet, it would take two minutes for a raindrop to hit the floor", 46 | "Rainfall amount can be predicted from types of cloud", 47 | "Not all raindrops are made of water" 48 | ] 49 | } 50 | -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | *.mode1v3 2 | *.mode2v3 3 | *.moved-aside 4 | *.pbxuser 5 | *.perspectivev3 6 | **/*sync/ 7 | .sconsign.dblite 8 | .tags* 9 | **/.vagrant/ 10 | **/DerivedData/ 11 | Icon? 12 | **/Pods/ 13 | **/.symlinks/ 14 | profile 15 | xcuserdata 16 | **/.generated/ 17 | Flutter/App.framework 18 | Flutter/Flutter.framework 19 | Flutter/Flutter.podspec 20 | Flutter/Generated.xcconfig 21 | Flutter/app.flx 22 | Flutter/app.zip 23 | Flutter/flutter_assets/ 24 | Flutter/flutter_export_environment.sh 25 | ServiceDefinitions.json 26 | Runner/GeneratedPluginRegistrant.* 27 | 28 | # Exceptions to above rules. 29 | !default.mode1v3 30 | !default.mode2v3 31 | !default.pbxuser 32 | !default.perspectivev3 33 | -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 11 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 12 | 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; 13 | 97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; }; 14 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 15 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 16 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 17 | /* End PBXBuildFile section */ 18 | 19 | /* Begin PBXCopyFilesBuildPhase section */ 20 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = { 21 | isa = PBXCopyFilesBuildPhase; 22 | buildActionMask = 2147483647; 23 | dstPath = ""; 24 | dstSubfolderSpec = 10; 25 | files = ( 26 | ); 27 | name = "Embed Frameworks"; 28 | runOnlyForDeploymentPostprocessing = 0; 29 | }; 30 | /* End PBXCopyFilesBuildPhase section */ 31 | 32 | /* Begin PBXFileReference section */ 33 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 34 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 35 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 36 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 37 | 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 38 | 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 39 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 40 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 41 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 42 | 97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 43 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 44 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 45 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 46 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 47 | /* End PBXFileReference section */ 48 | 49 | /* Begin PBXFrameworksBuildPhase section */ 50 | 97C146EB1CF9000F007C117D /* Frameworks */ = { 51 | isa = PBXFrameworksBuildPhase; 52 | buildActionMask = 2147483647; 53 | files = ( 54 | ); 55 | runOnlyForDeploymentPostprocessing = 0; 56 | }; 57 | /* End PBXFrameworksBuildPhase section */ 58 | 59 | /* Begin PBXGroup section */ 60 | 9740EEB11CF90186004384FC /* Flutter */ = { 61 | isa = PBXGroup; 62 | children = ( 63 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 64 | 9740EEB21CF90195004384FC /* Debug.xcconfig */, 65 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 66 | 9740EEB31CF90195004384FC /* Generated.xcconfig */, 67 | ); 68 | name = Flutter; 69 | sourceTree = ""; 70 | }; 71 | 97C146E51CF9000F007C117D = { 72 | isa = PBXGroup; 73 | children = ( 74 | 9740EEB11CF90186004384FC /* Flutter */, 75 | 97C146F01CF9000F007C117D /* Runner */, 76 | 97C146EF1CF9000F007C117D /* Products */, 77 | CF3B75C9A7D2FA2A4C99F110 /* Frameworks */, 78 | ); 79 | sourceTree = ""; 80 | }; 81 | 97C146EF1CF9000F007C117D /* Products */ = { 82 | isa = PBXGroup; 83 | children = ( 84 | 97C146EE1CF9000F007C117D /* Runner.app */, 85 | ); 86 | name = Products; 87 | sourceTree = ""; 88 | }; 89 | 97C146F01CF9000F007C117D /* Runner */ = { 90 | isa = PBXGroup; 91 | children = ( 92 | 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */, 93 | 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */, 94 | 97C146FA1CF9000F007C117D /* Main.storyboard */, 95 | 97C146FD1CF9000F007C117D /* Assets.xcassets */, 96 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 97 | 97C147021CF9000F007C117D /* Info.plist */, 98 | 97C146F11CF9000F007C117D /* Supporting Files */, 99 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 100 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 101 | ); 102 | path = Runner; 103 | sourceTree = ""; 104 | }; 105 | 97C146F11CF9000F007C117D /* Supporting Files */ = { 106 | isa = PBXGroup; 107 | children = ( 108 | 97C146F21CF9000F007C117D /* main.m */, 109 | ); 110 | name = "Supporting Files"; 111 | sourceTree = ""; 112 | }; 113 | /* End PBXGroup section */ 114 | 115 | /* Begin PBXNativeTarget section */ 116 | 97C146ED1CF9000F007C117D /* Runner */ = { 117 | isa = PBXNativeTarget; 118 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; 119 | buildPhases = ( 120 | 9740EEB61CF901F6004384FC /* Run Script */, 121 | 97C146EA1CF9000F007C117D /* Sources */, 122 | 97C146EB1CF9000F007C117D /* Frameworks */, 123 | 97C146EC1CF9000F007C117D /* Resources */, 124 | 9705A1C41CF9048500538489 /* Embed Frameworks */, 125 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 126 | ); 127 | buildRules = ( 128 | ); 129 | dependencies = ( 130 | ); 131 | name = Runner; 132 | productName = Runner; 133 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */; 134 | productType = "com.apple.product-type.application"; 135 | }; 136 | /* End PBXNativeTarget section */ 137 | 138 | /* Begin PBXProject section */ 139 | 97C146E61CF9000F007C117D /* Project object */ = { 140 | isa = PBXProject; 141 | attributes = { 142 | LastUpgradeCheck = 1020; 143 | ORGANIZATIONNAME = ""; 144 | TargetAttributes = { 145 | 97C146ED1CF9000F007C117D = { 146 | CreatedOnToolsVersion = 7.3.1; 147 | }; 148 | }; 149 | }; 150 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; 151 | compatibilityVersion = "Xcode 9.3"; 152 | developmentRegion = en; 153 | hasScannedForEncodings = 0; 154 | knownRegions = ( 155 | en, 156 | Base, 157 | ); 158 | mainGroup = 97C146E51CF9000F007C117D; 159 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */; 160 | projectDirPath = ""; 161 | projectRoot = ""; 162 | targets = ( 163 | 97C146ED1CF9000F007C117D /* Runner */, 164 | ); 165 | }; 166 | /* End PBXProject section */ 167 | 168 | /* Begin PBXResourcesBuildPhase section */ 169 | 97C146EC1CF9000F007C117D /* Resources */ = { 170 | isa = PBXResourcesBuildPhase; 171 | buildActionMask = 2147483647; 172 | files = ( 173 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 174 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 175 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 176 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 177 | ); 178 | runOnlyForDeploymentPostprocessing = 0; 179 | }; 180 | /* End PBXResourcesBuildPhase section */ 181 | 182 | /* Begin PBXShellScriptBuildPhase section */ 183 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 184 | isa = PBXShellScriptBuildPhase; 185 | buildActionMask = 2147483647; 186 | files = ( 187 | ); 188 | inputPaths = ( 189 | ); 190 | name = "Thin Binary"; 191 | outputPaths = ( 192 | ); 193 | runOnlyForDeploymentPostprocessing = 0; 194 | shellPath = /bin/sh; 195 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; 196 | }; 197 | 9740EEB61CF901F6004384FC /* Run Script */ = { 198 | isa = PBXShellScriptBuildPhase; 199 | buildActionMask = 2147483647; 200 | files = ( 201 | ); 202 | inputPaths = ( 203 | ); 204 | name = "Run Script"; 205 | outputPaths = ( 206 | ); 207 | runOnlyForDeploymentPostprocessing = 0; 208 | shellPath = /bin/sh; 209 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; 210 | }; 211 | /* End PBXShellScriptBuildPhase section */ 212 | 213 | /* Begin PBXSourcesBuildPhase section */ 214 | 97C146EA1CF9000F007C117D /* Sources */ = { 215 | isa = PBXSourcesBuildPhase; 216 | buildActionMask = 2147483647; 217 | files = ( 218 | 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */, 219 | 97C146F31CF9000F007C117D /* main.m in Sources */, 220 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, 221 | ); 222 | runOnlyForDeploymentPostprocessing = 0; 223 | }; 224 | /* End PBXSourcesBuildPhase section */ 225 | 226 | /* Begin PBXVariantGroup section */ 227 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = { 228 | isa = PBXVariantGroup; 229 | children = ( 230 | 97C146FB1CF9000F007C117D /* Base */, 231 | ); 232 | name = Main.storyboard; 233 | sourceTree = ""; 234 | }; 235 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { 236 | isa = PBXVariantGroup; 237 | children = ( 238 | 97C147001CF9000F007C117D /* Base */, 239 | ); 240 | name = LaunchScreen.storyboard; 241 | sourceTree = ""; 242 | }; 243 | /* End PBXVariantGroup section */ 244 | 245 | /* Begin XCBuildConfiguration section */ 246 | 249021D3217E4FDB00AE95B9 /* Profile */ = { 247 | isa = XCBuildConfiguration; 248 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 249 | buildSettings = { 250 | ALWAYS_SEARCH_USER_PATHS = NO; 251 | CLANG_ANALYZER_NONNULL = YES; 252 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 253 | CLANG_CXX_LIBRARY = "libc++"; 254 | CLANG_ENABLE_MODULES = YES; 255 | CLANG_ENABLE_OBJC_ARC = YES; 256 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 257 | CLANG_WARN_BOOL_CONVERSION = YES; 258 | CLANG_WARN_COMMA = YES; 259 | CLANG_WARN_CONSTANT_CONVERSION = YES; 260 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 261 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 262 | CLANG_WARN_EMPTY_BODY = YES; 263 | CLANG_WARN_ENUM_CONVERSION = YES; 264 | CLANG_WARN_INFINITE_RECURSION = YES; 265 | CLANG_WARN_INT_CONVERSION = YES; 266 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 267 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 268 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 269 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 270 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 271 | CLANG_WARN_STRICT_PROTOTYPES = YES; 272 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 273 | CLANG_WARN_UNREACHABLE_CODE = YES; 274 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 275 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 276 | COPY_PHASE_STRIP = NO; 277 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 278 | ENABLE_NS_ASSERTIONS = NO; 279 | ENABLE_STRICT_OBJC_MSGSEND = YES; 280 | GCC_C_LANGUAGE_STANDARD = gnu99; 281 | GCC_NO_COMMON_BLOCKS = YES; 282 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 283 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 284 | GCC_WARN_UNDECLARED_SELECTOR = YES; 285 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 286 | GCC_WARN_UNUSED_FUNCTION = YES; 287 | GCC_WARN_UNUSED_VARIABLE = YES; 288 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 289 | MTL_ENABLE_DEBUG_INFO = NO; 290 | SDKROOT = iphoneos; 291 | SUPPORTED_PLATFORMS = iphoneos; 292 | TARGETED_DEVICE_FAMILY = "1,2"; 293 | VALIDATE_PRODUCT = YES; 294 | }; 295 | name = Profile; 296 | }; 297 | 249021D4217E4FDB00AE95B9 /* Profile */ = { 298 | isa = XCBuildConfiguration; 299 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 300 | buildSettings = { 301 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 302 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 303 | ENABLE_BITCODE = NO; 304 | FRAMEWORK_SEARCH_PATHS = ( 305 | "$(inherited)", 306 | "$(PROJECT_DIR)/Flutter", 307 | ); 308 | INFOPLIST_FILE = Runner/Info.plist; 309 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 310 | LIBRARY_SEARCH_PATHS = ( 311 | "$(inherited)", 312 | "$(PROJECT_DIR)/Flutter", 313 | ); 314 | PRODUCT_BUNDLE_IDENTIFIER = geektutor.wewe; 315 | PRODUCT_NAME = "$(TARGET_NAME)"; 316 | VERSIONING_SYSTEM = "apple-generic"; 317 | }; 318 | name = Profile; 319 | }; 320 | 97C147031CF9000F007C117D /* Debug */ = { 321 | isa = XCBuildConfiguration; 322 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 323 | buildSettings = { 324 | ALWAYS_SEARCH_USER_PATHS = NO; 325 | CLANG_ANALYZER_NONNULL = YES; 326 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 327 | CLANG_CXX_LIBRARY = "libc++"; 328 | CLANG_ENABLE_MODULES = YES; 329 | CLANG_ENABLE_OBJC_ARC = YES; 330 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 331 | CLANG_WARN_BOOL_CONVERSION = YES; 332 | CLANG_WARN_COMMA = YES; 333 | CLANG_WARN_CONSTANT_CONVERSION = YES; 334 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 335 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 336 | CLANG_WARN_EMPTY_BODY = YES; 337 | CLANG_WARN_ENUM_CONVERSION = YES; 338 | CLANG_WARN_INFINITE_RECURSION = YES; 339 | CLANG_WARN_INT_CONVERSION = YES; 340 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 341 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 342 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 343 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 344 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 345 | CLANG_WARN_STRICT_PROTOTYPES = YES; 346 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 347 | CLANG_WARN_UNREACHABLE_CODE = YES; 348 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 349 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 350 | COPY_PHASE_STRIP = NO; 351 | DEBUG_INFORMATION_FORMAT = dwarf; 352 | ENABLE_STRICT_OBJC_MSGSEND = YES; 353 | ENABLE_TESTABILITY = YES; 354 | GCC_C_LANGUAGE_STANDARD = gnu99; 355 | GCC_DYNAMIC_NO_PIC = NO; 356 | GCC_NO_COMMON_BLOCKS = YES; 357 | GCC_OPTIMIZATION_LEVEL = 0; 358 | GCC_PREPROCESSOR_DEFINITIONS = ( 359 | "DEBUG=1", 360 | "$(inherited)", 361 | ); 362 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 363 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 364 | GCC_WARN_UNDECLARED_SELECTOR = YES; 365 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 366 | GCC_WARN_UNUSED_FUNCTION = YES; 367 | GCC_WARN_UNUSED_VARIABLE = YES; 368 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 369 | MTL_ENABLE_DEBUG_INFO = YES; 370 | ONLY_ACTIVE_ARCH = YES; 371 | SDKROOT = iphoneos; 372 | TARGETED_DEVICE_FAMILY = "1,2"; 373 | }; 374 | name = Debug; 375 | }; 376 | 97C147041CF9000F007C117D /* Release */ = { 377 | isa = XCBuildConfiguration; 378 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 379 | buildSettings = { 380 | ALWAYS_SEARCH_USER_PATHS = NO; 381 | CLANG_ANALYZER_NONNULL = YES; 382 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 383 | CLANG_CXX_LIBRARY = "libc++"; 384 | CLANG_ENABLE_MODULES = YES; 385 | CLANG_ENABLE_OBJC_ARC = YES; 386 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 387 | CLANG_WARN_BOOL_CONVERSION = YES; 388 | CLANG_WARN_COMMA = YES; 389 | CLANG_WARN_CONSTANT_CONVERSION = YES; 390 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 391 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 392 | CLANG_WARN_EMPTY_BODY = YES; 393 | CLANG_WARN_ENUM_CONVERSION = YES; 394 | CLANG_WARN_INFINITE_RECURSION = YES; 395 | CLANG_WARN_INT_CONVERSION = YES; 396 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 397 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 398 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 399 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 400 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 401 | CLANG_WARN_STRICT_PROTOTYPES = YES; 402 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 403 | CLANG_WARN_UNREACHABLE_CODE = YES; 404 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 405 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 406 | COPY_PHASE_STRIP = NO; 407 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 408 | ENABLE_NS_ASSERTIONS = NO; 409 | ENABLE_STRICT_OBJC_MSGSEND = YES; 410 | GCC_C_LANGUAGE_STANDARD = gnu99; 411 | GCC_NO_COMMON_BLOCKS = YES; 412 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 413 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 414 | GCC_WARN_UNDECLARED_SELECTOR = YES; 415 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 416 | GCC_WARN_UNUSED_FUNCTION = YES; 417 | GCC_WARN_UNUSED_VARIABLE = YES; 418 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 419 | MTL_ENABLE_DEBUG_INFO = NO; 420 | SDKROOT = iphoneos; 421 | SUPPORTED_PLATFORMS = iphoneos; 422 | TARGETED_DEVICE_FAMILY = "1,2"; 423 | VALIDATE_PRODUCT = YES; 424 | }; 425 | name = Release; 426 | }; 427 | 97C147061CF9000F007C117D /* Debug */ = { 428 | isa = XCBuildConfiguration; 429 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 430 | buildSettings = { 431 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 432 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 433 | ENABLE_BITCODE = NO; 434 | FRAMEWORK_SEARCH_PATHS = ( 435 | "$(inherited)", 436 | "$(PROJECT_DIR)/Flutter", 437 | ); 438 | INFOPLIST_FILE = Runner/Info.plist; 439 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 440 | LIBRARY_SEARCH_PATHS = ( 441 | "$(inherited)", 442 | "$(PROJECT_DIR)/Flutter", 443 | ); 444 | PRODUCT_BUNDLE_IDENTIFIER = geektutor.wewe; 445 | PRODUCT_NAME = "$(TARGET_NAME)"; 446 | VERSIONING_SYSTEM = "apple-generic"; 447 | }; 448 | name = Debug; 449 | }; 450 | 97C147071CF9000F007C117D /* Release */ = { 451 | isa = XCBuildConfiguration; 452 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 453 | buildSettings = { 454 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 455 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 456 | ENABLE_BITCODE = NO; 457 | FRAMEWORK_SEARCH_PATHS = ( 458 | "$(inherited)", 459 | "$(PROJECT_DIR)/Flutter", 460 | ); 461 | INFOPLIST_FILE = Runner/Info.plist; 462 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 463 | LIBRARY_SEARCH_PATHS = ( 464 | "$(inherited)", 465 | "$(PROJECT_DIR)/Flutter", 466 | ); 467 | PRODUCT_BUNDLE_IDENTIFIER = geektutor.wewe; 468 | PRODUCT_NAME = "$(TARGET_NAME)"; 469 | VERSIONING_SYSTEM = "apple-generic"; 470 | }; 471 | name = Release; 472 | }; 473 | /* End XCBuildConfiguration section */ 474 | 475 | /* Begin XCConfigurationList section */ 476 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { 477 | isa = XCConfigurationList; 478 | buildConfigurations = ( 479 | 97C147031CF9000F007C117D /* Debug */, 480 | 97C147041CF9000F007C117D /* Release */, 481 | 249021D3217E4FDB00AE95B9 /* Profile */, 482 | ); 483 | defaultConfigurationIsVisible = 0; 484 | defaultConfigurationName = Release; 485 | }; 486 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { 487 | isa = XCConfigurationList; 488 | buildConfigurations = ( 489 | 97C147061CF9000F007C117D /* Debug */, 490 | 97C147071CF9000F007C117D /* Release */, 491 | 249021D4217E4FDB00AE95B9 /* Profile */, 492 | ); 493 | defaultConfigurationIsVisible = 0; 494 | defaultConfigurationName = Release; 495 | }; 496 | /* End XCConfigurationList section */ 497 | }; 498 | rootObject = 97C146E61CF9000F007C117D /* Project object */; 499 | } 500 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #import "AppDelegate.h" 2 | #import "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application 7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 8 | [GeneratedPluginRegistrant registerWithRegistry:self]; 9 | // Override point for customization after application launch. 10 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | 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. -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | wewe 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | $(FLUTTER_BUILD_NAME) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UIViewControllerBasedStatusBarAppearance 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/api.dart: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/geektutor/wewe/6564330586e9ee27b342216a068a3980036e51e6/lib/api.dart -------------------------------------------------------------------------------- /lib/home.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:http/http.dart' as http; 4 | import 'dart:convert' as convert; 5 | import 'package:google_fonts/google_fonts.dart'; 6 | 7 | 8 | class MyHomePage extends StatefulWidget { 9 | @override 10 | _MyHomePageState createState() => _MyHomePageState(); 11 | } 12 | 13 | class _MyHomePageState extends State { 14 | var temp, humidity, visibility, description; 15 | var wind; 16 | var url, data, response, city, date, tempValue; 17 | var mainWeather = 'assets/Subtract.png'; 18 | 19 | bool isLoading = false; 20 | 21 | weWeather(String value) async { 22 | setState(() { 23 | isLoading = true; 24 | }); 25 | url = 26 | 'http://api.openweathermap.org/data/2.5/weather?q=$value&units=metric&APPID=0c1b6d71bec35b22e23b31daa3645823'; 27 | response = await http.get(url); 28 | setState(() { 29 | if (response.statusCode == 200) { 30 | data = convert.jsonDecode(response.body); 31 | isLoading = false; 32 | temp = data['main']['temp_max']; 33 | description = data['weather'][0]['description']; 34 | mainWeather = data['weather'][0]['main']; 35 | if (mainWeather == 'Clouds') { 36 | mainWeather = 'assets/clody icon.png'; 37 | } else if (mainWeather == 'Rain') { 38 | mainWeather = 'assets/rainny.png'; 39 | } else if (mainWeather == 'Clear') { 40 | mainWeather = 'assets/Subtract.png'; 41 | } else if (mainWeather == 'Snow') { 42 | mainWeather = 'assets/041-snowflake.png'; 43 | } else if (mainWeather == 'Thunderstorm') { 44 | mainWeather = 'assets/044-storm.png'; 45 | } else if (mainWeather == 'Drizzle') { 46 | mainWeather = 'assets/drizzle.png'; 47 | } else if (mainWeather == 'Atmosphere') { 48 | mainWeather = 'assets/017-foggy.png'; 49 | } else { 50 | mainWeather = 'assets/Subtract.png'; 51 | } 52 | tempValue = data['main']['temp'].toString(); 53 | humidity = data['main']['humidity']; 54 | wind = data['wind']['speed']; 55 | visibility = data['visibility']; 56 | city = data['name']; 57 | int dateCalc = data['dt'] * 1000; 58 | date = DateTime.fromMillisecondsSinceEpoch(dateCalc, isUtc: true); 59 | date = date.year.toString() + 60 | '-' + 61 | date.month.toString().padLeft(2, '0') + 62 | '-' + 63 | date.day.toString(); 64 | } else { 65 | isLoading = true; 66 | } 67 | }); 68 | } 69 | 70 | @override 71 | Widget build(BuildContext context) { 72 | Size screenSize = MediaQuery.of(context).size; 73 | return SingleChildScrollView( 74 | child: ConstrainedBox( 75 | constraints: BoxConstraints.tight(screenSize), 76 | child: Column( 77 | mainAxisSize: MainAxisSize.max, 78 | mainAxisAlignment: MainAxisAlignment.spaceAround, 79 | children: [ 80 | SizedBox( 81 | height: kToolbarHeight + 20, 82 | ), 83 | Spacer( 84 | flex: 1, 85 | ), 86 | Container( 87 | width: 250, 88 | height: 50, 89 | child: TextField( 90 | decoration: InputDecoration( 91 | filled: true, 92 | labelText: 'Enter City', 93 | contentPadding: EdgeInsets.only(left: 16), 94 | enabledBorder: OutlineInputBorder( 95 | borderRadius: BorderRadius.all(Radius.circular(20)), 96 | borderSide: BorderSide( 97 | color: Color(0xFFC4C4C4), 98 | ), 99 | ), 100 | ), 101 | onSubmitted: (value) { 102 | weWeather(value); 103 | }, 104 | ), 105 | ), 106 | Spacer( 107 | flex: 1, 108 | ), 109 | isLoading 110 | ? Container(child: CircularProgressIndicator()) 111 | : Container( 112 | margin: EdgeInsets.all(20), 113 | width: 72, 114 | height: 72, 115 | child: Image( 116 | image: AssetImage('$mainWeather'), 117 | ), 118 | ), 119 | Text( 120 | '$tempValue\u00B0' == 'null\u00B0' 121 | ? '0\u00B0' 122 | : '$tempValue\u00B0', 123 | style: GoogleFonts.ubuntu( 124 | textStyle: 125 | TextStyle(fontSize: 48, fontWeight: FontWeight.bold), 126 | ), 127 | ), 128 | Text( 129 | '$description' == 'null' ? '' : '$description', 130 | style: GoogleFonts.ubuntu( 131 | textStyle: 132 | TextStyle(fontSize: 18, fontWeight: FontWeight.w500), 133 | ), 134 | ), 135 | Text( 136 | '$city' == 'null' ? '' : '$city', 137 | style: GoogleFonts.nunito( 138 | textStyle: TextStyle(fontSize: 24), 139 | ), 140 | ), 141 | Text( 142 | '$date' == 'null' ? ' ' : '$date', 143 | style: GoogleFonts.nunito( 144 | textStyle: TextStyle(fontSize: 14), 145 | ), 146 | ), 147 | Spacer( 148 | flex: 1, 149 | ), 150 | Row( 151 | mainAxisAlignment: MainAxisAlignment.center, 152 | children: [ 153 | Result( 154 | 'assets/049-thermometer.png', 155 | 'Temperature', 156 | '$temp\u00B0' == 'null\u00B0' 157 | ? '0\u00B0' 158 | : '$temp\u00B0'), 159 | SizedBox( 160 | width: 10, 161 | ), 162 | Result('assets/humidity 1.png', 'Humidity', 163 | '$humidity %' == 'null %' ? '0 %' : '$humidity%'), 164 | ], 165 | ), 166 | Spacer( 167 | flex: 1, 168 | ), 169 | Row( 170 | mainAxisAlignment: MainAxisAlignment.center, 171 | children: [ 172 | Result('assets/058-wind.png', 'Wind', 173 | '$wind m/h' == 'null m/h' ? '0 m/h' : '$wind m/h'), 174 | SizedBox( 175 | width: 10, 176 | ), 177 | Result( 178 | 'assets/020-foggy.png', 179 | 'Visibility', 180 | '$visibility km' == 'null km' 181 | ? '0 km' 182 | : '$visibility km'), 183 | ], 184 | ), 185 | Spacer( 186 | flex: 2, 187 | ), 188 | ], 189 | )), 190 | ); 191 | } 192 | } 193 | 194 | class Result extends StatelessWidget { 195 | Result(this.imageShow, this.name, this.response); 196 | String imageShow, name, response; 197 | double height; 198 | double width; 199 | @override 200 | Widget build(BuildContext context) { 201 | return Container( 202 | width: 139, 203 | height: 139, 204 | child: Card( 205 | shape: RoundedRectangleBorder( 206 | borderRadius: BorderRadius.circular(20.0), 207 | ), 208 | elevation: 10, 209 | child: Column( 210 | crossAxisAlignment: CrossAxisAlignment.center, 211 | mainAxisSize: MainAxisSize.min, 212 | children: [ 213 | Container( 214 | margin: EdgeInsets.all(20), 215 | child: Image( 216 | image: AssetImage(imageShow), 217 | height: 30, 218 | ), 219 | ), 220 | Text( 221 | name, 222 | style: GoogleFonts.montserrat( 223 | textStyle: TextStyle(fontSize: 16, fontWeight: FontWeight.w600), 224 | ), 225 | ), 226 | Text( 227 | response, 228 | style: GoogleFonts.nunito( 229 | textStyle: TextStyle(fontSize: 18, fontWeight: FontWeight.w600), 230 | ), 231 | ), 232 | ], 233 | ), 234 | ), 235 | ); 236 | } 237 | } 238 | -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'myapp.dart'; 4 | 5 | void main() { 6 | runApp(MyApp()); 7 | } 8 | -------------------------------------------------------------------------------- /lib/myapp.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:wewe/widgets/appbar.dart'; 4 | import 'home.dart'; 5 | import 'theme.dart'; 6 | import 'package:google_fonts/google_fonts.dart'; 7 | import 'package:animated_theme_switcher/animated_theme_switcher.dart'; 8 | 9 | class MyApp extends StatelessWidget { 10 | // This widget is the root of your application. 11 | @override 12 | Widget build(BuildContext context) { 13 | final isPlatformDark = 14 | WidgetsBinding.instance.window.platformBrightness == Brightness.dark; 15 | final initTheme = isPlatformDark ? darkTheme : lighterTheme; 16 | return ThemeProvider( 17 | initTheme: initTheme, 18 | child: Builder(builder: (context) { 19 | return MaterialApp( 20 | theme: ThemeProvider.of(context), 21 | 22 | home: HomePage(), 23 | ); 24 | }), 25 | ); 26 | } 27 | } 28 | 29 | class HomePage extends StatefulWidget { 30 | @override 31 | _HomePageState createState() => _HomePageState(); 32 | } 33 | 34 | class _HomePageState extends State { 35 | @override 36 | Widget build(BuildContext context) { 37 | return AppBarTop( 38 | child: MyHomePage(), 39 | ); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /lib/soon.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter/cupertino.dart'; 3 | import 'package:google_fonts/google_fonts.dart'; 4 | import 'theme.dart'; 5 | import 'package:animated_theme_switcher/animated_theme_switcher.dart'; 6 | 7 | class ComingSoonTop extends StatelessWidget { 8 | @override 9 | Widget build(BuildContext context) { 10 | return ThemeSwitchingArea( 11 | child: Scaffold( 12 | appBar: AppBar( 13 | elevation: 0, 14 | centerTitle: true, 15 | title: Padding( 16 | padding: const EdgeInsets.all(20.0), 17 | child: RichText( 18 | text: TextSpan( 19 | text: 'We', 20 | style: GoogleFonts.nunito( 21 | textStyle: TextStyle(fontSize: 20), 22 | color: Colors.blue, 23 | ), 24 | children: [ 25 | TextSpan( 26 | text: 'We', 27 | style: GoogleFonts.nunito( 28 | textStyle: TextStyle(fontSize: 20), 29 | color: Colors.green, 30 | ), 31 | ) 32 | ], 33 | ), 34 | ), 35 | ), 36 | actions: [ 37 | ThemeSwitcher( 38 | builder: (context) { 39 | return IconButton( 40 | icon: Icon(Icons.brightness_3, size: 25), 41 | onPressed: () { 42 | ThemeSwitcher.of(context).changeTheme( 43 | theme: ThemeProvider.of(context).brightness == 44 | Brightness.light 45 | ? darkTheme 46 | : lighterTheme, 47 | ); 48 | }, 49 | ); 50 | }, 51 | ), 52 | ], 53 | ), 54 | body: ComingSoon(), 55 | ), 56 | ); 57 | } 58 | } 59 | 60 | class ComingSoon extends StatelessWidget { 61 | @override 62 | Widget build(BuildContext context) { 63 | return Container( 64 | width: double.infinity, 65 | height: double.infinity, 66 | child: Column( 67 | mainAxisAlignment: MainAxisAlignment.spaceEvenly, 68 | children: [ 69 | Text( 70 | 'Coming Soon', 71 | style: GoogleFonts.nunito( 72 | textStyle: TextStyle(fontSize: 18), 73 | fontWeight: FontWeight.bold, 74 | ), 75 | ), 76 | Image.asset('assets/coming.png'), 77 | Text( 78 | 'There’s a special surprise for our users.\nWe are cooking up something very exciting.', 79 | style: GoogleFonts.nunito( 80 | textStyle: TextStyle(fontSize: 14), 81 | ), 82 | ), 83 | ], 84 | ), 85 | ); 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /lib/theme.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:google_fonts/google_fonts.dart'; 3 | 4 | Color geekColor = Color(0xFFFFFFFF); 5 | Color geekBlackColor = Color(0xFF00C35E); 6 | 7 | ThemeData lightTheme = ThemeData.light(); 8 | ThemeData darkThemeReal = ThemeData.dark(); 9 | TextTheme _textTheme = TextTheme( 10 | bodyText1: GoogleFonts.nunito( 11 | textStyle: TextStyle( 12 | fontSize: 22, 13 | ))); 14 | 15 | ThemeData darkTheme = darkThemeReal.copyWith( 16 | buttonColor: geekBlackColor, 17 | primaryIconTheme: IconThemeData( 18 | color: Colors.white, 19 | ), 20 | textTheme: TextTheme( 21 | bodyText1: _textTheme.bodyText1.copyWith(color: Colors.white))); 22 | 23 | ThemeData lighterTheme = lightTheme.copyWith( 24 | primaryColor: Color(0xFFF1F1F1), 25 | primaryIconTheme: IconThemeData( 26 | color: Colors.black, 27 | ), 28 | canvasColor: Color(0xFF00C35E), 29 | buttonColor: geekColor, 30 | textTheme: TextTheme( 31 | bodyText1: _textTheme.bodyText1.copyWith(color: Colors.black))); 32 | 33 | ThemeData pinkTheme = lightTheme.copyWith( 34 | primaryColor: Color(0xFFF1F1F1), 35 | scaffoldBackgroundColor: Color(0xFFFAF8F0), 36 | floatingActionButtonTheme: FloatingActionButtonThemeData( 37 | foregroundColor: Color(0xFF24737c), 38 | backgroundColor: Color(0xFFA6E0DE), 39 | ), 40 | textTheme: TextTheme( 41 | body1: TextStyle( 42 | color: Colors.black87, 43 | ), 44 | ), 45 | ); 46 | 47 | ThemeData halloweenTheme = lightTheme.copyWith( 48 | primaryColor: Color(0xFF55705A), 49 | scaffoldBackgroundColor: Color(0xFFE48873), 50 | floatingActionButtonTheme: FloatingActionButtonThemeData( 51 | foregroundColor: Color(0xFFea8e71), 52 | backgroundColor: Color(0xFF2b2119), 53 | ), 54 | ); 55 | 56 | ThemeData darkBlueTheme = ThemeData.dark().copyWith( 57 | primaryColor: Color(0xFF1E1E2C), 58 | scaffoldBackgroundColor: Color(0xFF2D2D44), 59 | textTheme: TextTheme( 60 | body1: TextStyle( 61 | color: Color(0xFF33E1Ed), 62 | ), 63 | ), 64 | ); 65 | -------------------------------------------------------------------------------- /lib/weather_facts.dart: -------------------------------------------------------------------------------- 1 | import 'dart:convert'; 2 | 3 | import 'package:animated_theme_switcher/animated_theme_switcher.dart'; 4 | import 'package:flutter/material.dart'; 5 | import 'package:social_share/social_share.dart'; 6 | import 'package:wewe/widgets/appbar.dart'; 7 | import 'package:http/http.dart' as http; 8 | import 'package:wewe/widgets/spacing.dart'; 9 | 10 | 11 | class WeatherFacts extends StatefulWidget { 12 | 13 | const WeatherFacts({Key key}) : super(key: key); 14 | 15 | @override 16 | _WeatherFactsState createState() => _WeatherFactsState(); 17 | } 18 | 19 | class _WeatherFactsState extends State { 20 | PageController _pageViewController = new PageController( 21 | viewportFraction: 0.8 22 | ); 23 | @override 24 | void initState() { 25 | super.initState(); 26 | } 27 | 28 | 29 | @override 30 | Widget build(BuildContext context) { 31 | return 32 | AppBarTop( 33 | child: SingleChildScrollView( 34 | child: Column( 35 | children: [ 36 | Row( 37 | mainAxisAlignment: MainAxisAlignment.center, 38 | children: [ 39 | Text( 40 | "Interesting Weather Facts", 41 | style: Theme.of(context).textTheme.bodyText1, 42 | ), 43 | ], 44 | ), 45 | YMargin(50), 46 | FutureBuilder( 47 | future: http.get("https://raw.githubusercontent.com/geektutor/wewe/master/facts.json"), 48 | builder: (context, snapshot){ 49 | switch (snapshot.connectionState){ 50 | case ConnectionState.waiting: { 51 | return Row( 52 | mainAxisAlignment: MainAxisAlignment.center, 53 | children: [ 54 | Container( 55 | padding: EdgeInsets.all(30), 56 | height: 100, 57 | width: 100, 58 | child: CircularProgressIndicator(), 59 | ) 60 | ], 61 | ); 62 | } 63 | break; 64 | 65 | case ConnectionState.done:{ 66 | if (snapshot.hasError){ 67 | return Row( 68 | mainAxisAlignment: MainAxisAlignment.center, 69 | children: [ 70 | Text( 71 | "An error occured!", 72 | style: Theme.of(context).textTheme.bodyText1.copyWith( 73 | color: Colors.red, 74 | fontSize: 30 75 | ), 76 | ) 77 | ], 78 | ); 79 | } 80 | else{ 81 | List facts = (jsonDecode(snapshot.data.body) as Map)["facts"]; 82 | print(snapshot.data.body); 83 | return Container( 84 | height: getScreenHeight(context) * 0.8, 85 | child: PageView( 86 | controller: _pageViewController, 87 | children: facts.map((fact){ 88 | return WeatherFactPage( 89 | fact: fact, 90 | ); 91 | }).toList(), 92 | ), 93 | ); 94 | } 95 | } 96 | break; 97 | } 98 | } 99 | ) 100 | ], 101 | ), 102 | ), 103 | ); 104 | } 105 | } 106 | 107 | class WeatherFactAssets { 108 | String imagePath; 109 | Color bgColor; 110 | 111 | WeatherFactAssets({@required imagePath, @required bgColor}){ 112 | this.imagePath = imagePath; 113 | this.bgColor = bgColor; 114 | } 115 | 116 | WeatherFactAssets.fromFact(String fact){ 117 | if (fact.toLowerCase().contains("rain")){ 118 | this.imagePath = "assets/rain.jpg"; 119 | this.bgColor = Colors.grey[200]; 120 | } 121 | else if (fact.toLowerCase().contains("sun")){ 122 | this.imagePath = "assets/sun.jpg"; 123 | this.bgColor = Colors.yellow[100]; 124 | } 125 | else if (fact.toLowerCase().contains("wind")){ 126 | this.imagePath = "assets/wind.jpg"; 127 | this.bgColor = Colors.blue[100]; 128 | } 129 | else if (fact.toLowerCase().contains("water")){ 130 | this.imagePath = "assets/sea.jpg"; 131 | this.bgColor = Colors.blue[100]; 132 | } 133 | else if (fact.toLowerCase().contains("lightning") || fact.contains("thunder")){ 134 | this.imagePath = "assets/lightning.jpg"; 135 | this.bgColor = Colors.blue[100]; 136 | } 137 | else if (fact.toLowerCase().contains("snow")){ 138 | this.imagePath = "assets/snow.jpg"; 139 | this.bgColor = Colors.blue[100]; 140 | } 141 | else if (fact.toLowerCase().contains("autumn")){ 142 | this.imagePath = "assets/autumn.jpg"; 143 | this.bgColor = Colors.orange[100]; 144 | } 145 | else if (fact.toLowerCase().contains("tornado")){ 146 | this.imagePath = "assets/tornado.jpg"; 147 | this.bgColor = Colors.orange[100]; 148 | } 149 | else { 150 | this.imagePath = "assets/default.jpg"; 151 | this.bgColor = Colors.blue[100]; // or 100 152 | } 153 | } 154 | 155 | 156 | } 157 | 158 | 159 | class WeatherFactPage extends StatelessWidget { 160 | final String fact; 161 | WeatherFactPage({Key key, this.fact}); 162 | @override 163 | Widget build(BuildContext context) { 164 | WeatherFactAssets _weatherFactAssets = WeatherFactAssets.fromFact(this.fact); 165 | return Column( 166 | children: [ 167 | Container( 168 | margin: EdgeInsets.only(right:20), 169 | height: 500, 170 | width:300, 171 | 172 | child: Column( 173 | children: [ 174 | Container( 175 | height: 250, 176 | width: 300, 177 | decoration: BoxDecoration( 178 | borderRadius: BorderRadius.only(topLeft: Radius.circular(20), topRight: Radius.circular(20)), 179 | 180 | ), 181 | child: ClipRRect( 182 | borderRadius: BorderRadius.only(topLeft: Radius.circular(20), topRight: Radius.circular(20)), 183 | child: FadeInImage( 184 | placeholder: AssetImage( 185 | "assets/WeWe.png" 186 | ), 187 | image: AssetImage( 188 | _weatherFactAssets.imagePath, 189 | ), 190 | fit: BoxFit.cover, 191 | ), 192 | ), 193 | ), 194 | Expanded( 195 | child: Container( 196 | width: 300, 197 | decoration: BoxDecoration( 198 | color: _weatherFactAssets.bgColor, 199 | borderRadius: BorderRadius.only(bottomLeft: Radius.circular(20), bottomRight: Radius.circular(20)), 200 | ), 201 | child: Container( 202 | padding: EdgeInsets.symmetric(vertical: 20, horizontal: 20), 203 | child: Column( 204 | crossAxisAlignment: CrossAxisAlignment.center, 205 | children: [ 206 | Text( 207 | "Do you know?", 208 | style: Theme.of(context).textTheme.bodyText1.copyWith( 209 | color: Colors.black, 210 | fontWeight: FontWeight.w600, 211 | fontSize: 20, 212 | 213 | ), 214 | ), 215 | YMargin(25), 216 | Text( 217 | fact, 218 | textAlign: TextAlign.center, 219 | style: Theme.of(context).textTheme.bodyText1.copyWith( 220 | color: Colors.black, 221 | fontWeight: FontWeight.w400, 222 | fontSize: 19, 223 | height: 1.5 224 | ), 225 | ), 226 | ], 227 | ), 228 | ), 229 | ), 230 | ) 231 | ], 232 | ), 233 | 234 | ), 235 | YMargin(20), 236 | FlatButton( 237 | onPressed: (){ 238 | SocialShare.shareOptions("Did you know?\n\n" + fact + "\n\nFind out more on WeWe: https://play.google.com/store/apps/details?id=geektutor.wewe&hl=en"); 239 | }, 240 | padding: EdgeInsets.symmetric(horizontal: 30, vertical: 20), 241 | color: Color(0xffD1F2E1), 242 | shape: RoundedRectangleBorder( 243 | borderRadius: BorderRadius.circular(10) 244 | ), 245 | child: Text( 246 | "Share Flashcard", 247 | style: Theme.of(context).textTheme.bodyText1.copyWith( 248 | fontSize: 18, 249 | color: Color(0xff19BF69) 250 | ), 251 | ) 252 | ) 253 | ], 254 | ); 255 | } 256 | } 257 | 258 | -------------------------------------------------------------------------------- /lib/widgets/appbar.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter/cupertino.dart'; 3 | import 'package:google_fonts/google_fonts.dart'; 4 | import 'package:wewe/soon.dart'; 5 | import 'package:wewe/weather_facts.dart'; 6 | import 'package:animated_theme_switcher/animated_theme_switcher.dart'; 7 | 8 | import '../theme.dart'; 9 | import 'spacing.dart'; 10 | 11 | class AppBarTop extends StatelessWidget { 12 | final Widget child; 13 | final Widget drawer; 14 | 15 | const AppBarTop({Key key, this.child, this.drawer}) : super(key: key); 16 | @override 17 | Widget build(BuildContext context) { 18 | return ThemeSwitchingArea( 19 | child: Scaffold( 20 | //extendBodyBehindAppBar: true, 21 | drawer: Drawer( 22 | child: ListView( 23 | // Important: Remove any padding from the ListView. 24 | padding: EdgeInsets.zero, 25 | children: [ 26 | DrawerHeader( 27 | child: Text(''), 28 | decoration: BoxDecoration(), 29 | ), 30 | ListTile( 31 | leading: Icon( 32 | Icons.home, 33 | color: Theme.of(context).buttonColor, 34 | ), 35 | title: Text( 36 | 'Home', 37 | style: TextStyle( 38 | color: Theme.of(context).buttonColor, 39 | ), 40 | ), 41 | onTap: () { 42 | // Update the state of the app. 43 | // ... 44 | Navigator.pop(context); 45 | }, 46 | ), 47 | ListTile( 48 | leading: Icon( 49 | Icons.explore, 50 | color: Theme.of(context).buttonColor, 51 | ), 52 | title: Text( 53 | 'Weather Explorer', 54 | style: TextStyle( 55 | color: Theme.of(context).buttonColor, 56 | ), 57 | ), 58 | onTap: () { 59 | // Update the state of the app. 60 | // ... 61 | Navigator.pop(context); 62 | }, 63 | ), 64 | ListTile( 65 | leading: Icon( 66 | Icons.error_outline, 67 | color: Theme.of(context).buttonColor, 68 | ), 69 | title: Text( 70 | 'Interesting Facts', 71 | style: TextStyle( 72 | color: Theme.of(context).buttonColor, 73 | ), 74 | ), 75 | onTap: () { 76 | // Update the state of the app. 77 | // ... 78 | Navigator.push( 79 | context, 80 | MaterialPageRoute(builder: (context) => WeatherFacts()), 81 | ); 82 | }, 83 | ), 84 | ListTile( 85 | leading: Icon( 86 | Icons.settings, 87 | color: Theme.of(context).buttonColor, 88 | ), 89 | title: Text( 90 | 'Settings', 91 | style: TextStyle( 92 | color: Theme.of(context).buttonColor, 93 | ), 94 | ), 95 | onTap: () { 96 | // Update the state of the app. 97 | // ... 98 | Navigator.push( 99 | context, 100 | MaterialPageRoute(builder: (context) => ComingSoonTop()), 101 | ); 102 | }, 103 | ), 104 | ListTile( 105 | leading: Icon( 106 | Icons.chat_bubble_outline, 107 | color: Theme.of(context).buttonColor, 108 | ), 109 | title: Text( 110 | 'Help & Feedback', 111 | style: TextStyle( 112 | color: Theme.of(context).buttonColor, 113 | ), 114 | ), 115 | onTap: () { 116 | // Update the state of the app. 117 | // ... 118 | Navigator.pop(context); 119 | }, 120 | ), 121 | ], 122 | ), 123 | ), 124 | appBar: CustomAppBar(), 125 | body: child, 126 | ), 127 | ); 128 | } 129 | } 130 | 131 | class CustomAppBar extends StatelessWidget implements PreferredSizeWidget{ 132 | @override 133 | Widget build(BuildContext context) { 134 | return Padding( 135 | padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 10), 136 | child: AppBar( 137 | backgroundColor: Colors.transparent, 138 | elevation: 0, 139 | centerTitle: true, 140 | leading: InkWell( 141 | borderRadius: BorderRadius.only(bottomRight: Radius.circular(30)), 142 | onTap: (){ 143 | print("clicked"); 144 | Scaffold.of(context).openDrawer(); 145 | }, 146 | child: Container( 147 | padding: EdgeInsets.only(left: 10), 148 | height: 50, 149 | child: Column( 150 | mainAxisAlignment: MainAxisAlignment.center, 151 | crossAxisAlignment: CrossAxisAlignment.start, 152 | children: [ 153 | Container( 154 | height: 3, 155 | width: 30, 156 | decoration: BoxDecoration( 157 | color: Theme.of(context).primaryIconTheme.color, 158 | borderRadius: BorderRadius.circular(20) 159 | ), 160 | ), 161 | YMargin(10), 162 | Container( 163 | height: 3, 164 | width: 20, 165 | decoration: BoxDecoration( 166 | color: Theme.of(context).primaryIconTheme.color, 167 | borderRadius: BorderRadius.circular(20) 168 | ), 169 | ), 170 | ], 171 | ), 172 | ), 173 | ), 174 | title: Padding( 175 | padding: const EdgeInsets.all(20.0), 176 | child: Text( 177 | "WeWe", 178 | style: GoogleFonts.nunito( 179 | textStyle: TextStyle(fontSize: 28), 180 | color: Color(0xff19BF69), 181 | fontWeight: FontWeight.bold, 182 | ), 183 | ), 184 | ), 185 | actions: [ 186 | ThemeSwitcher( 187 | builder: (context) { 188 | return IconButton( 189 | icon: Icon(Icons.brightness_3, size: 25), 190 | onPressed: () { 191 | ThemeSwitcher.of(context).changeTheme( 192 | theme: ThemeProvider.of(context).brightness == 193 | Brightness.light 194 | ? darkTheme 195 | : lighterTheme, 196 | ); 197 | }, 198 | ); 199 | }, 200 | ), 201 | IconButton( 202 | icon: Icon(Icons.search), 203 | onPressed: () { 204 | showSearch( 205 | context: context, 206 | delegate: CustomSearchDelegate(), 207 | ); 208 | }, 209 | ), 210 | ], 211 | ), 212 | ); 213 | } 214 | 215 | @override 216 | // TODO: implement preferredSize 217 | Size get preferredSize => Size.fromHeight(kToolbarHeight + 50); 218 | } 219 | 220 | class CustomSearchDelegate extends SearchDelegate { 221 | @override 222 | List buildActions(BuildContext context) { 223 | // TODO: implement buildActions 224 | return [ 225 | IconButton( 226 | icon: Icon(Icons.clear), 227 | onPressed: () { 228 | query = ''; 229 | }, 230 | ), 231 | ]; 232 | } 233 | 234 | @override 235 | Widget buildLeading(BuildContext context) { 236 | // TODO: implement buildLeading 237 | return IconButton( 238 | icon: Icon(Icons.arrow_back), 239 | onPressed: () { 240 | close(context, null); 241 | }, 242 | ); 243 | } 244 | 245 | @override 246 | Widget buildResults(BuildContext context) { 247 | // TODO: implement buildResults 248 | if (query.length < 3) { 249 | return Container( 250 | alignment: Alignment.center, 251 | child: Text( 252 | "Search term must be longer than two letters.", 253 | ), 254 | ); 255 | } 256 | } 257 | 258 | @override 259 | Widget buildSuggestions(BuildContext context) { 260 | // TODO: implement buildSuggestions 261 | return Container( 262 | child: Text('E good o'), 263 | ); 264 | } 265 | } 266 | -------------------------------------------------------------------------------- /lib/widgets/spacing.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class XMargin extends StatelessWidget { 4 | final double width; 5 | const XMargin(this.width); 6 | @override 7 | Widget build(BuildContext context) { 8 | return SizedBox( 9 | width: width, 10 | ); 11 | } 12 | } 13 | 14 | class YMargin extends StatelessWidget { 15 | final double height; 16 | const YMargin(this.height); 17 | @override 18 | Widget build(BuildContext context) { 19 | return SizedBox( 20 | height: height, 21 | ); 22 | } 23 | } 24 | 25 | double getScreenWidth(BuildContext context){ 26 | return MediaQuery.of(context).size.width; 27 | } 28 | 29 | double getScreenHeight(BuildContext context){ 30 | return MediaQuery.of(context).size.height; 31 | } -------------------------------------------------------------------------------- /pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | animated_theme_switcher: 5 | dependency: "direct main" 6 | description: 7 | name: animated_theme_switcher 8 | url: "https://pub.dartlang.org" 9 | source: hosted 10 | version: "1.0.6" 11 | archive: 12 | dependency: transitive 13 | description: 14 | name: archive 15 | url: "https://pub.dartlang.org" 16 | source: hosted 17 | version: "2.0.13" 18 | args: 19 | dependency: transitive 20 | description: 21 | name: args 22 | url: "https://pub.dartlang.org" 23 | source: hosted 24 | version: "1.6.0" 25 | async: 26 | dependency: transitive 27 | description: 28 | name: async 29 | url: "https://pub.dartlang.org" 30 | source: hosted 31 | version: "2.4.1" 32 | boolean_selector: 33 | dependency: transitive 34 | description: 35 | name: boolean_selector 36 | url: "https://pub.dartlang.org" 37 | source: hosted 38 | version: "2.0.0" 39 | charcode: 40 | dependency: transitive 41 | description: 42 | name: charcode 43 | url: "https://pub.dartlang.org" 44 | source: hosted 45 | version: "1.1.3" 46 | collection: 47 | dependency: transitive 48 | description: 49 | name: collection 50 | url: "https://pub.dartlang.org" 51 | source: hosted 52 | version: "1.14.12" 53 | convert: 54 | dependency: transitive 55 | description: 56 | name: convert 57 | url: "https://pub.dartlang.org" 58 | source: hosted 59 | version: "2.1.1" 60 | crypto: 61 | dependency: transitive 62 | description: 63 | name: crypto 64 | url: "https://pub.dartlang.org" 65 | source: hosted 66 | version: "2.1.4" 67 | cupertino_icons: 68 | dependency: "direct main" 69 | description: 70 | name: cupertino_icons 71 | url: "https://pub.dartlang.org" 72 | source: hosted 73 | version: "0.1.3" 74 | file: 75 | dependency: transitive 76 | description: 77 | name: file 78 | url: "https://pub.dartlang.org" 79 | source: hosted 80 | version: "5.2.0" 81 | flutter: 82 | dependency: "direct main" 83 | description: flutter 84 | source: sdk 85 | version: "0.0.0" 86 | flutter_test: 87 | dependency: "direct dev" 88 | description: flutter 89 | source: sdk 90 | version: "0.0.0" 91 | google_fonts: 92 | dependency: "direct main" 93 | description: 94 | name: google_fonts 95 | url: "https://pub.dartlang.org" 96 | source: hosted 97 | version: "1.1.0" 98 | http: 99 | dependency: "direct main" 100 | description: 101 | name: http 102 | url: "https://pub.dartlang.org" 103 | source: hosted 104 | version: "0.12.1" 105 | http_parser: 106 | dependency: transitive 107 | description: 108 | name: http_parser 109 | url: "https://pub.dartlang.org" 110 | source: hosted 111 | version: "3.1.4" 112 | image: 113 | dependency: transitive 114 | description: 115 | name: image 116 | url: "https://pub.dartlang.org" 117 | source: hosted 118 | version: "2.1.12" 119 | intl: 120 | dependency: transitive 121 | description: 122 | name: intl 123 | url: "https://pub.dartlang.org" 124 | source: hosted 125 | version: "0.16.1" 126 | matcher: 127 | dependency: transitive 128 | description: 129 | name: matcher 130 | url: "https://pub.dartlang.org" 131 | source: hosted 132 | version: "0.12.6" 133 | meta: 134 | dependency: transitive 135 | description: 136 | name: meta 137 | url: "https://pub.dartlang.org" 138 | source: hosted 139 | version: "1.1.8" 140 | path: 141 | dependency: transitive 142 | description: 143 | name: path 144 | url: "https://pub.dartlang.org" 145 | source: hosted 146 | version: "1.6.4" 147 | path_provider: 148 | dependency: transitive 149 | description: 150 | name: path_provider 151 | url: "https://pub.dartlang.org" 152 | source: hosted 153 | version: "1.6.10" 154 | path_provider_linux: 155 | dependency: transitive 156 | description: 157 | name: path_provider_linux 158 | url: "https://pub.dartlang.org" 159 | source: hosted 160 | version: "0.0.1+1" 161 | path_provider_macos: 162 | dependency: transitive 163 | description: 164 | name: path_provider_macos 165 | url: "https://pub.dartlang.org" 166 | source: hosted 167 | version: "0.0.4+3" 168 | path_provider_platform_interface: 169 | dependency: transitive 170 | description: 171 | name: path_provider_platform_interface 172 | url: "https://pub.dartlang.org" 173 | source: hosted 174 | version: "1.0.2" 175 | pedantic: 176 | dependency: transitive 177 | description: 178 | name: pedantic 179 | url: "https://pub.dartlang.org" 180 | source: hosted 181 | version: "1.9.0" 182 | petitparser: 183 | dependency: transitive 184 | description: 185 | name: petitparser 186 | url: "https://pub.dartlang.org" 187 | source: hosted 188 | version: "2.4.0" 189 | platform: 190 | dependency: transitive 191 | description: 192 | name: platform 193 | url: "https://pub.dartlang.org" 194 | source: hosted 195 | version: "2.2.1" 196 | plugin_platform_interface: 197 | dependency: transitive 198 | description: 199 | name: plugin_platform_interface 200 | url: "https://pub.dartlang.org" 201 | source: hosted 202 | version: "1.0.2" 203 | process: 204 | dependency: transitive 205 | description: 206 | name: process 207 | url: "https://pub.dartlang.org" 208 | source: hosted 209 | version: "3.0.13" 210 | quiver: 211 | dependency: transitive 212 | description: 213 | name: quiver 214 | url: "https://pub.dartlang.org" 215 | source: hosted 216 | version: "2.1.3" 217 | sky_engine: 218 | dependency: transitive 219 | description: flutter 220 | source: sdk 221 | version: "0.0.99" 222 | social_share: 223 | dependency: "direct main" 224 | description: 225 | name: social_share 226 | url: "https://pub.dartlang.org" 227 | source: hosted 228 | version: "2.0.5" 229 | source_span: 230 | dependency: transitive 231 | description: 232 | name: source_span 233 | url: "https://pub.dartlang.org" 234 | source: hosted 235 | version: "1.7.0" 236 | stack_trace: 237 | dependency: transitive 238 | description: 239 | name: stack_trace 240 | url: "https://pub.dartlang.org" 241 | source: hosted 242 | version: "1.9.3" 243 | stream_channel: 244 | dependency: transitive 245 | description: 246 | name: stream_channel 247 | url: "https://pub.dartlang.org" 248 | source: hosted 249 | version: "2.0.0" 250 | string_scanner: 251 | dependency: transitive 252 | description: 253 | name: string_scanner 254 | url: "https://pub.dartlang.org" 255 | source: hosted 256 | version: "1.0.5" 257 | term_glyph: 258 | dependency: transitive 259 | description: 260 | name: term_glyph 261 | url: "https://pub.dartlang.org" 262 | source: hosted 263 | version: "1.1.0" 264 | test_api: 265 | dependency: transitive 266 | description: 267 | name: test_api 268 | url: "https://pub.dartlang.org" 269 | source: hosted 270 | version: "0.2.15" 271 | typed_data: 272 | dependency: transitive 273 | description: 274 | name: typed_data 275 | url: "https://pub.dartlang.org" 276 | source: hosted 277 | version: "1.1.6" 278 | vector_math: 279 | dependency: transitive 280 | description: 281 | name: vector_math 282 | url: "https://pub.dartlang.org" 283 | source: hosted 284 | version: "2.0.8" 285 | xdg_directories: 286 | dependency: transitive 287 | description: 288 | name: xdg_directories 289 | url: "https://pub.dartlang.org" 290 | source: hosted 291 | version: "0.1.0" 292 | xml: 293 | dependency: transitive 294 | description: 295 | name: xml 296 | url: "https://pub.dartlang.org" 297 | source: hosted 298 | version: "3.6.1" 299 | sdks: 300 | dart: ">=2.7.0 <3.0.0" 301 | flutter: ">=1.17.0 <2.0.0" 302 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: wewe 2 | description: Weather application 3 | 4 | publish_to: 'none' # Remove this line if you wish to publish to pub.dev 5 | 6 | version: 1.0.0+1 7 | 8 | environment: 9 | sdk: ">=2.7.0 <3.0.0" 10 | 11 | dependencies: 12 | flutter: 13 | sdk: flutter 14 | animated_theme_switcher: ^1.0.6 15 | cupertino_icons: ^0.1.3 16 | http: ^0.12.1 17 | google_fonts: ^1.1.0 18 | social_share: ^2.0.5 19 | 20 | dev_dependencies: 21 | flutter_test: 22 | sdk: flutter 23 | 24 | flutter: 25 | 26 | uses-material-design: true 27 | 28 | assets: 29 | - assets/ 30 | 31 | 32 | # fonts: 33 | # - family: Schyler 34 | # fonts: 35 | # - asset: fonts/Schyler-Regular.ttf 36 | # - asset: fonts/Schyler-Italic.ttf 37 | # style: italic 38 | # - family: Trajan Pro 39 | # fonts: 40 | # - asset: fonts/TrajanPro.ttf 41 | # - asset: fonts/TrajanPro_Bold.ttf 42 | # weight: 700 43 | # 44 | # For details regarding fonts from package dependencies, 45 | # see https://flutter.dev/custom-fonts/#from-packages 46 | -------------------------------------------------------------------------------- /test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:wewe/main.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | //await tester.pumpWidget(MyApp()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | --------------------------------------------------------------------------------