├── .gitignore ├── .metadata ├── README.md ├── android ├── app │ ├── build.gradle │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── iconicto │ │ │ │ └── everything_flutter │ │ │ │ └── MainActivity.kt │ │ └── res │ │ │ ├── drawable │ │ │ └── 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 │ │ └── profile │ │ └── AndroidManifest.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties └── settings.gradle ├── assets ├── fonts │ ├── circular_std_black.otf │ ├── circular_std_black_italic.otf │ ├── circular_std_bold.otf │ ├── circular_std_bold_italic.otf │ ├── circular_std_book.otf │ ├── circular_std_book_italic.otf │ ├── circular_std_medium.otf │ └── circular_std_medium_italic.otf └── images │ ├── dashboard_community.jpg │ ├── dashboard_customize.jpg │ ├── dashboard_hero.jpg │ ├── dashboard_widgets.jpg │ ├── flutter_4.jpg │ ├── flutter_5.jpg │ ├── lightBlue.jpg │ ├── sample.png │ ├── wallpaper.jpg │ └── widgetOfTheWeek.jpg ├── ios ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ ├── Release.xcconfig │ └── flutter_export_environment.sh ├── Podfile ├── Podfile.lock ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ └── contents.xcworkspacedata └── Runner │ ├── AppDelegate.swift │ ├── 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 │ └── Runner-Bridging-Header.h ├── lib ├── bloc │ ├── blocs.dart │ ├── home │ │ ├── home_bloc.dart │ │ ├── home_event.dart │ │ └── home_state.dart │ ├── simple_bloc_delegate.dart │ ├── tutorial │ │ ├── tutorial_bloc.dart │ │ ├── tutorial_event.dart │ │ └── tutorial_state.dart │ └── widget │ │ ├── widget_bloc.dart │ │ ├── widget_event.dart │ │ └── widget_state.dart ├── constants │ ├── app_colors.dart │ ├── route_paths.dart │ ├── strings.dart │ ├── test_data.dart │ ├── text_size.dart │ ├── text_styles.dart │ └── theme_data.dart ├── helpers │ ├── screen_util.dart │ ├── simple_logger.dart │ └── utils.dart ├── locator.dart ├── main.dart ├── model │ ├── community.dart │ ├── event.dart │ ├── news.dart │ ├── tutorial.dart │ └── widget.dart ├── router.dart ├── services │ ├── navigation.dart │ ├── network.dart │ └── repository.dart └── ui │ ├── pages │ ├── event.dart │ ├── home.dart │ ├── news.dart │ ├── pages.dart │ ├── tutorial.dart │ └── widget.dart │ └── widgets │ ├── menu_card.dart │ ├── news_item.dart │ └── test.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 | # Visual Studio Code related 19 | .vscode/ 20 | 21 | # Flutter/Dart/Pub related 22 | **/doc/api/ 23 | .dart_tool/ 24 | .flutter-plugins 25 | .packages 26 | .pub-cache/ 27 | .pub/ 28 | /build/ 29 | 30 | # Android related 31 | **/android/**/gradle-wrapper.jar 32 | **/android/.gradle 33 | **/android/captures/ 34 | **/android/gradlew 35 | **/android/gradlew.bat 36 | **/android/local.properties 37 | **/android/**/GeneratedPluginRegistrant.java 38 | 39 | # iOS/XCode related 40 | **/ios/**/*.mode1v3 41 | **/ios/**/*.mode2v3 42 | **/ios/**/*.moved-aside 43 | **/ios/**/*.pbxuser 44 | **/ios/**/*.perspectivev3 45 | **/ios/**/*sync/ 46 | **/ios/**/.sconsign.dblite 47 | **/ios/**/.tags* 48 | **/ios/**/.vagrant/ 49 | **/ios/**/DerivedData/ 50 | **/ios/**/Icon? 51 | **/ios/**/Pods/ 52 | **/ios/**/.symlinks/ 53 | **/ios/**/profile 54 | **/ios/**/xcuserdata 55 | **/ios/.generated/ 56 | **/ios/Flutter/App.framework 57 | **/ios/Flutter/Flutter.framework 58 | **/ios/Flutter/Generated.xcconfig 59 | **/ios/Flutter/app.flx 60 | **/ios/Flutter/app.zip 61 | **/ios/Flutter/flutter_assets/ 62 | **/ios/ServiceDefinitions.json 63 | **/ios/Runner/GeneratedPluginRegistrant.* 64 | 65 | # Exceptions to above rules. 66 | !**/ios/**/default.mode1v3 67 | !**/ios/**/default.mode2v3 68 | !**/ios/**/default.pbxuser 69 | !**/ios/**/default.perspectivev3 70 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 71 | -------------------------------------------------------------------------------- /.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: 7a4c33425ddd78c54aba07d86f3f9a4a0051769b 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Everything Flutter 2 | Hey guys, 3 | We are team AsyncIO and we made Everything Flutter just for you! 4 | 5 | So what is the significance of Everything Flutter? 6 | Unlike any platform, Everything Flutter provides you with every kind of support you need to become a pro in Flutter. You may be a beginner, Intermediate or even maybe an expert, you can benefit a lot using Everything Flutter. 7 | 8 | Our main approach is to use "For developers by developers" as much as possible. So if you are an expert, you can help people with your knowledge writing articles, answering questions etc, and all the others can benefit from your knowledge as well. 9 | 10 | And we are planing to launch a fully functioning platform as soon as possible! And the best part is.... It's open source! 11 | 12 | You can see what we came up with during [#Hack19](https://www.facebook.com/hashtag/hack19?source=feed_text&epa=HASHTAG) here. 13 | [https://bit.ly/2ERPy9d](https://l.facebook.com/l.php?u=https%3A%2F%2Fbit.ly%2F2ERPy9d%3Ffbclid%3DIwAR1uRY4QMqxO1KUrenqi2QXLxosgC6H_3-cw_Qml5WdHtMeolKOrsflVh_0&h=AT2fMSKymqmQwnJ_J6puwdiVGX7myf5up6QDBxG_oVZ3QUfMeaSP5DJ8OHvvbg68-VGVxFQKpj9N8t3GLi7wAHUpSlLkGYx2QtiG2GYGUsSM887ovJgC-XNapPeoh9GXemupgwW9D6vnZV6QkE9nYQCkgJeEX7tdRCoxMJ2t) 14 | 15 | See you on the other side. 16 | Godspeed! 17 | 18 | Team AsyncIO 19 | 20 | 21 | ## Building 22 | 23 | You can follow these instructions to build Everything Flutter 24 | and install it onto your device. 25 | 26 | ### Prerequisites 27 | 28 | If you are new to Flutter, please first follow 29 | the [Flutter Setup](https://flutter.dev/setup/) guide. 30 | 31 | ### Building and installing the Flutter app 32 | 33 | * `cd $FLUTTER_ROOT/examples/everything-flutter 34 | * `flutter pub get` 35 | * `flutter run --release` 36 | 37 | The `flutter run --release` command both builds and installs the Flutter app. 38 | 39 | # [![Flutter logo][]][flutter.dev] 40 | 41 | Flutter is Google's mobile app SDK for crafting high-quality native interfaces 42 | on iOS and Android in record time. Flutter works with existing code, is used by 43 | developers and organizations around the world, and is free and open source. 44 | 45 | ## Documentation 46 | 47 | * [Install Flutter](https://flutter.dev/get-started/) 48 | * [Flutter documentation](https://flutter.dev/docs) 49 | * [Development wiki](https://github.com/flutter/flutter/wiki) 50 | * [Contributing to Flutter](https://github.com/flutter/flutter/blob/master/CONTRIBUTING.md) 51 | 52 | For announcements about new releases and breaking changes, follow the 53 | [flutter-announce@googlegroups.com](https://groups.google.com/forum/#!forum/flutter-announce) 54 | mailing list. 55 | 56 | ## About Flutter 57 | 58 | We think Flutter will help you create beautiful, fast apps, with a productive, 59 | extensible and open development model. 60 | 61 | We want to enable designers to deliver their full creative vision without being 62 | forced to water it down due to limitations of the underlying framework. 63 | Flutter's [layered architecture] gives you control over every pixel on the 64 | screen, and its powerful compositing capabilities let you overlay and animate 65 | graphics, video, text and controls without limitation. Flutter includes a full 66 | [set of widgets][widget catalog] that deliver pixel-perfect experiences on both 67 | iOS and Android. 68 | 69 | Flutter is fast. It's powered by the same hardware-accelerated [Skia] 2D 70 | graphics library that underpins Chrome and Android. We architected Flutter to 71 | support glitch-free, jank-free graphics at the native speed of your device. 72 | Flutter code is powered by the world-class [Dart platform], which enables 73 | compilation to native 32-bit and 64-bit ARM code for iOS and Android. 74 | 75 | Flutter offers stateful hot reload, allowing you to make changes to your code 76 | and see the results instantly without restarting your app or losing its state. 77 | 78 | [![Hot reload animation][]][Hot reload] 79 | 80 | ## Screenshots 81 | 82 | Here are some screenshots from our latest version 83 | 84 | ## Contributing 85 | 86 | Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**. 87 | 88 | User Interface for the project can be seen [here](https://www.figma.com/file/8ReCkE45Mi9meASYDq283b/Everything-Flutter-v3?node-id=0%3A1) 89 | 90 | 91 | 1. Fork the Project 92 | 2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) 93 | 3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) 94 | 4. Push to the Branch (`git push origin feature/AmazingFeature`) 95 | 5. Open a Pull Request 96 | 97 | 98 | [Flutter logo]: https://flutter.dev/assets/flutter-lockup-4cb0ee072ab312e59784d9fbf4fb7ad42688a7fdaea1270ccf6bbf4f34b7e03f.svg 99 | [flutter.dev]: https://flutter.dev 100 | [Gitter Channel]: https://badges.gitter.im/flutter/flutter.svg 101 | [Gitter badge]: https://gitter.im/flutter/flutter?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge 102 | [layered architecture]: https://flutter.dev/docs/resources/inside-flutter 103 | [widget catalog]: https://flutter.dev/widgets/ 104 | [Reflectly hero image]: https://github.com/flutter/website/blob/master/src/images/homepage/reflectly-hero-600px.png 105 | [Skia]: https://skia.org/ 106 | [Dart platform]: https://dart.dev/ 107 | [Hot reload animation]: https://raw.githubusercontent.com/flutter/website/master/src/_assets/image/tools/android-studio/hot-reload.gif 108 | [Hot reload]: https://flutter.dev/docs/development/tools/hot-reload 109 | [Visual Studio Code]: https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter 110 | [IntelliJ / Android Studio]: https://plugins.jetbrains.com/plugin/9212-flutter 111 | [Flutter packages]: https://pub.dev/flutter 112 | [interop example]: https://github.com/flutter/flutter/tree/master/examples/platform_channel 113 | -------------------------------------------------------------------------------- /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 | apply plugin: 'com.android.application' 25 | apply plugin: 'kotlin-android' 26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 27 | 28 | android { 29 | compileSdkVersion 28 30 | 31 | sourceSets { 32 | main.java.srcDirs += 'src/main/kotlin' 33 | } 34 | 35 | lintOptions { 36 | disable 'InvalidPackage' 37 | } 38 | 39 | defaultConfig { 40 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 41 | applicationId "com.iconicto.everything_flutter" 42 | minSdkVersion 16 43 | targetSdkVersion 28 44 | versionCode flutterVersionCode.toInteger() 45 | versionName flutterVersionName 46 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 47 | } 48 | 49 | buildTypes { 50 | release { 51 | // TODO: Add your own signing config for the release build. 52 | // Signing with the debug keys for now, so `flutter run --release` works. 53 | signingConfig signingConfigs.debug 54 | } 55 | } 56 | } 57 | 58 | flutter { 59 | source '../..' 60 | } 61 | 62 | dependencies { 63 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 64 | testImplementation 'junit:junit:4.12' 65 | androidTestImplementation 'androidx.test:runner:1.1.1' 66 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' 67 | } 68 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 9 | 13 | 20 | 24 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /android/app/src/main/kotlin/com/iconicto/everything_flutter/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.iconicto.everything_flutter 2 | 3 | import android.os.Bundle 4 | 5 | import io.flutter.app.FlutterActivity 6 | import io.flutter.plugins.GeneratedPluginRegistrant 7 | 8 | class MainActivity: FlutterActivity() { 9 | override fun onCreate(savedInstanceState: Bundle?) { 10 | super.onCreate(savedInstanceState) 11 | GeneratedPluginRegistrant.registerWith(this) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.2.71' 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:3.2.1' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | jcenter() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | } 25 | subprojects { 26 | project.evaluationDependsOn(':app') 27 | } 28 | 29 | task clean(type: Delete) { 30 | delete rootProject.buildDir 31 | } 32 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | 3 | android.useAndroidX=true 4 | android.enableJetifier=true 5 | android.enableR8=true 6 | -------------------------------------------------------------------------------- /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-4.10.2-all.zip 7 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /assets/fonts/circular_std_black.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/assets/fonts/circular_std_black.otf -------------------------------------------------------------------------------- /assets/fonts/circular_std_black_italic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/assets/fonts/circular_std_black_italic.otf -------------------------------------------------------------------------------- /assets/fonts/circular_std_bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/assets/fonts/circular_std_bold.otf -------------------------------------------------------------------------------- /assets/fonts/circular_std_bold_italic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/assets/fonts/circular_std_bold_italic.otf -------------------------------------------------------------------------------- /assets/fonts/circular_std_book.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/assets/fonts/circular_std_book.otf -------------------------------------------------------------------------------- /assets/fonts/circular_std_book_italic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/assets/fonts/circular_std_book_italic.otf -------------------------------------------------------------------------------- /assets/fonts/circular_std_medium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/assets/fonts/circular_std_medium.otf -------------------------------------------------------------------------------- /assets/fonts/circular_std_medium_italic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/assets/fonts/circular_std_medium_italic.otf -------------------------------------------------------------------------------- /assets/images/dashboard_community.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/assets/images/dashboard_community.jpg -------------------------------------------------------------------------------- /assets/images/dashboard_customize.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/assets/images/dashboard_customize.jpg -------------------------------------------------------------------------------- /assets/images/dashboard_hero.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/assets/images/dashboard_hero.jpg -------------------------------------------------------------------------------- /assets/images/dashboard_widgets.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/assets/images/dashboard_widgets.jpg -------------------------------------------------------------------------------- /assets/images/flutter_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/assets/images/flutter_4.jpg -------------------------------------------------------------------------------- /assets/images/flutter_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/assets/images/flutter_5.jpg -------------------------------------------------------------------------------- /assets/images/lightBlue.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/assets/images/lightBlue.jpg -------------------------------------------------------------------------------- /assets/images/sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/assets/images/sample.png -------------------------------------------------------------------------------- /assets/images/wallpaper.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/assets/images/wallpaper.jpg -------------------------------------------------------------------------------- /assets/images/widgetOfTheWeek.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/assets/images/widgetOfTheWeek.jpg -------------------------------------------------------------------------------- /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 "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Flutter/flutter_export_environment.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # This is a generated file; do not edit or check into version control. 3 | export "FLUTTER_ROOT=/Users/suvink/Documents/Installed Software/flutter" 4 | export "FLUTTER_APPLICATION_PATH=/Users/suvink/Documents/Workspace/EF/everything-flutter" 5 | export "FLUTTER_TARGET=/Users/suvink/Documents/Workspace/EF/everything-flutter/lib/main.dart" 6 | export "FLUTTER_BUILD_DIR=build" 7 | export "SYMROOT=${SOURCE_ROOT}/../build/ios" 8 | export "FLUTTER_FRAMEWORK_DIR=/Users/suvink/Documents/Installed Software/flutter/bin/cache/artifacts/engine/ios" 9 | export "FLUTTER_BUILD_NAME=1.0.0" 10 | export "FLUTTER_BUILD_NUMBER=1" 11 | -------------------------------------------------------------------------------- /ios/Podfile: -------------------------------------------------------------------------------- 1 | # Using a CDN with CocoaPods 1.7.2 or later can save a lot of time on pod installation, but it's experimental rather than the default. 2 | # source 'https://cdn.cocoapods.org/' 3 | 4 | # Uncomment this line to define a global platform for your project 5 | # platform :ios, '9.0' 6 | 7 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency. 8 | ENV['COCOAPODS_DISABLE_STATS'] = 'true' 9 | 10 | project 'Runner', { 11 | 'Debug' => :debug, 12 | 'Profile' => :release, 13 | 'Release' => :release, 14 | } 15 | 16 | def parse_KV_file(file, separator='=') 17 | file_abs_path = File.expand_path(file) 18 | if !File.exists? file_abs_path 19 | return []; 20 | end 21 | pods_ary = [] 22 | skip_line_start_symbols = ["#", "/"] 23 | File.foreach(file_abs_path) { |line| 24 | next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } 25 | plugin = line.split(pattern=separator) 26 | if plugin.length == 2 27 | podname = plugin[0].strip() 28 | path = plugin[1].strip() 29 | podpath = File.expand_path("#{path}", file_abs_path) 30 | pods_ary.push({:name => podname, :path => podpath}); 31 | else 32 | puts "Invalid plugin specification: #{line}" 33 | end 34 | } 35 | return pods_ary 36 | end 37 | 38 | target 'Runner' do 39 | use_frameworks! 40 | 41 | # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock 42 | # referring to absolute paths on developers' machines. 43 | system('rm -rf .symlinks') 44 | system('mkdir -p .symlinks/plugins') 45 | 46 | # Flutter Pods 47 | generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig') 48 | if generated_xcode_build_settings.empty? 49 | puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first." 50 | end 51 | generated_xcode_build_settings.map { |p| 52 | if p[:name] == 'FLUTTER_FRAMEWORK_DIR' 53 | symlink = File.join('.symlinks', 'flutter') 54 | File.symlink(File.dirname(p[:path]), symlink) 55 | pod 'Flutter', :path => File.join(symlink, File.basename(p[:path])) 56 | end 57 | } 58 | 59 | # Plugin Pods 60 | plugin_pods = parse_KV_file('../.flutter-plugins') 61 | plugin_pods.map { |p| 62 | symlink = File.join('.symlinks', 'plugins', p[:name]) 63 | File.symlink(p[:path], symlink) 64 | pod p[:name], :path => File.join(symlink, 'ios') 65 | } 66 | end 67 | 68 | # Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system. 69 | install! 'cocoapods', :disable_input_output_paths => true 70 | 71 | post_install do |installer| 72 | installer.pods_project.targets.each do |target| 73 | target.build_configurations.each do |config| 74 | config.build_settings['ENABLE_BITCODE'] = 'NO' 75 | end 76 | end 77 | end 78 | -------------------------------------------------------------------------------- /ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - drawerbehavior (0.0.1): 3 | - Flutter 4 | - Flutter (1.0.0) 5 | - url_launcher (0.0.1): 6 | - Flutter 7 | 8 | DEPENDENCIES: 9 | - drawerbehavior (from `.symlinks/plugins/drawerbehavior/ios`) 10 | - Flutter (from `.symlinks/flutter/ios`) 11 | - url_launcher (from `.symlinks/plugins/url_launcher/ios`) 12 | 13 | EXTERNAL SOURCES: 14 | drawerbehavior: 15 | :path: ".symlinks/plugins/drawerbehavior/ios" 16 | Flutter: 17 | :path: ".symlinks/flutter/ios" 18 | url_launcher: 19 | :path: ".symlinks/plugins/url_launcher/ios" 20 | 21 | SPEC CHECKSUMS: 22 | drawerbehavior: 688832bffec482cabacd8db3248ba582e1c2ea92 23 | Flutter: 0e3d915762c693b495b44d77113d4970485de6ec 24 | url_launcher: 0067ddb8f10d36786672aa0722a21717dba3a298 25 | 26 | PODFILE CHECKSUM: 10ae9c18d12c9ffc2275c9a159a3b1e281990db0 27 | 28 | COCOAPODS: 1.7.2 29 | -------------------------------------------------------------------------------- /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 | 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; 13 | 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 14 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 15 | 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; 16 | 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 17 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 18 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 19 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 20 | D7973CCBD4AD462FD6CE6240 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD132FC781B6426ADAC96197 /* Pods_Runner.framework */; }; 21 | /* End PBXBuildFile section */ 22 | 23 | /* Begin PBXCopyFilesBuildPhase section */ 24 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = { 25 | isa = PBXCopyFilesBuildPhase; 26 | buildActionMask = 2147483647; 27 | dstPath = ""; 28 | dstSubfolderSpec = 10; 29 | files = ( 30 | 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */, 31 | 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */, 32 | ); 33 | name = "Embed Frameworks"; 34 | runOnlyForDeploymentPostprocessing = 0; 35 | }; 36 | /* End PBXCopyFilesBuildPhase section */ 37 | 38 | /* Begin PBXFileReference section */ 39 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 40 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 41 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 42 | 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; 43 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 44 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 45 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 46 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 47 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 48 | 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; 49 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 50 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 51 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 52 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 53 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 54 | C6850C412EB70D09FB8390BE /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 55 | CEBB36ADAF037B7B5E542208 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 56 | DD132FC781B6426ADAC96197 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 57 | F7410BFD19B01CF8ED947630 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 58 | /* End PBXFileReference section */ 59 | 60 | /* Begin PBXFrameworksBuildPhase section */ 61 | 97C146EB1CF9000F007C117D /* Frameworks */ = { 62 | isa = PBXFrameworksBuildPhase; 63 | buildActionMask = 2147483647; 64 | files = ( 65 | 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, 66 | 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, 67 | D7973CCBD4AD462FD6CE6240 /* Pods_Runner.framework in Frameworks */, 68 | ); 69 | runOnlyForDeploymentPostprocessing = 0; 70 | }; 71 | /* End PBXFrameworksBuildPhase section */ 72 | 73 | /* Begin PBXGroup section */ 74 | 5597577BF984A6BB19603B2D /* Pods */ = { 75 | isa = PBXGroup; 76 | children = ( 77 | CEBB36ADAF037B7B5E542208 /* Pods-Runner.debug.xcconfig */, 78 | F7410BFD19B01CF8ED947630 /* Pods-Runner.release.xcconfig */, 79 | C6850C412EB70D09FB8390BE /* Pods-Runner.profile.xcconfig */, 80 | ); 81 | name = Pods; 82 | path = Pods; 83 | sourceTree = ""; 84 | }; 85 | 9740EEB11CF90186004384FC /* Flutter */ = { 86 | isa = PBXGroup; 87 | children = ( 88 | 3B80C3931E831B6300D905FE /* App.framework */, 89 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 90 | 9740EEBA1CF902C7004384FC /* Flutter.framework */, 91 | 9740EEB21CF90195004384FC /* Debug.xcconfig */, 92 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 93 | 9740EEB31CF90195004384FC /* Generated.xcconfig */, 94 | ); 95 | name = Flutter; 96 | sourceTree = ""; 97 | }; 98 | 97C146E51CF9000F007C117D = { 99 | isa = PBXGroup; 100 | children = ( 101 | 9740EEB11CF90186004384FC /* Flutter */, 102 | 97C146F01CF9000F007C117D /* Runner */, 103 | 97C146EF1CF9000F007C117D /* Products */, 104 | 5597577BF984A6BB19603B2D /* Pods */, 105 | AA92F2E0B4E8CBDB95E4D8FF /* Frameworks */, 106 | ); 107 | sourceTree = ""; 108 | }; 109 | 97C146EF1CF9000F007C117D /* Products */ = { 110 | isa = PBXGroup; 111 | children = ( 112 | 97C146EE1CF9000F007C117D /* Runner.app */, 113 | ); 114 | name = Products; 115 | sourceTree = ""; 116 | }; 117 | 97C146F01CF9000F007C117D /* Runner */ = { 118 | isa = PBXGroup; 119 | children = ( 120 | 97C146FA1CF9000F007C117D /* Main.storyboard */, 121 | 97C146FD1CF9000F007C117D /* Assets.xcassets */, 122 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 123 | 97C147021CF9000F007C117D /* Info.plist */, 124 | 97C146F11CF9000F007C117D /* Supporting Files */, 125 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 126 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 127 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, 128 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, 129 | ); 130 | path = Runner; 131 | sourceTree = ""; 132 | }; 133 | 97C146F11CF9000F007C117D /* Supporting Files */ = { 134 | isa = PBXGroup; 135 | children = ( 136 | ); 137 | name = "Supporting Files"; 138 | sourceTree = ""; 139 | }; 140 | AA92F2E0B4E8CBDB95E4D8FF /* Frameworks */ = { 141 | isa = PBXGroup; 142 | children = ( 143 | DD132FC781B6426ADAC96197 /* Pods_Runner.framework */, 144 | ); 145 | name = Frameworks; 146 | sourceTree = ""; 147 | }; 148 | /* End PBXGroup section */ 149 | 150 | /* Begin PBXNativeTarget section */ 151 | 97C146ED1CF9000F007C117D /* Runner */ = { 152 | isa = PBXNativeTarget; 153 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; 154 | buildPhases = ( 155 | CF61B812868CDD47BDB8FDC3 /* [CP] Check Pods Manifest.lock */, 156 | 9740EEB61CF901F6004384FC /* Run Script */, 157 | 97C146EA1CF9000F007C117D /* Sources */, 158 | 97C146EB1CF9000F007C117D /* Frameworks */, 159 | 97C146EC1CF9000F007C117D /* Resources */, 160 | 9705A1C41CF9048500538489 /* Embed Frameworks */, 161 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 162 | 3CD59CB48BB2C6A5362A962A /* [CP] Embed Pods Frameworks */, 163 | ); 164 | buildRules = ( 165 | ); 166 | dependencies = ( 167 | ); 168 | name = Runner; 169 | productName = Runner; 170 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */; 171 | productType = "com.apple.product-type.application"; 172 | }; 173 | /* End PBXNativeTarget section */ 174 | 175 | /* Begin PBXProject section */ 176 | 97C146E61CF9000F007C117D /* Project object */ = { 177 | isa = PBXProject; 178 | attributes = { 179 | LastUpgradeCheck = 1020; 180 | ORGANIZATIONNAME = "The Chromium Authors"; 181 | TargetAttributes = { 182 | 97C146ED1CF9000F007C117D = { 183 | CreatedOnToolsVersion = 7.3.1; 184 | LastSwiftMigration = 0910; 185 | }; 186 | }; 187 | }; 188 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; 189 | compatibilityVersion = "Xcode 3.2"; 190 | developmentRegion = en; 191 | hasScannedForEncodings = 0; 192 | knownRegions = ( 193 | en, 194 | Base, 195 | ); 196 | mainGroup = 97C146E51CF9000F007C117D; 197 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */; 198 | projectDirPath = ""; 199 | projectRoot = ""; 200 | targets = ( 201 | 97C146ED1CF9000F007C117D /* Runner */, 202 | ); 203 | }; 204 | /* End PBXProject section */ 205 | 206 | /* Begin PBXResourcesBuildPhase section */ 207 | 97C146EC1CF9000F007C117D /* Resources */ = { 208 | isa = PBXResourcesBuildPhase; 209 | buildActionMask = 2147483647; 210 | files = ( 211 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 212 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 213 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 214 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 215 | ); 216 | runOnlyForDeploymentPostprocessing = 0; 217 | }; 218 | /* End PBXResourcesBuildPhase section */ 219 | 220 | /* Begin PBXShellScriptBuildPhase section */ 221 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 222 | isa = PBXShellScriptBuildPhase; 223 | buildActionMask = 2147483647; 224 | files = ( 225 | ); 226 | inputPaths = ( 227 | ); 228 | name = "Thin Binary"; 229 | outputPaths = ( 230 | ); 231 | runOnlyForDeploymentPostprocessing = 0; 232 | shellPath = /bin/sh; 233 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin"; 234 | }; 235 | 3CD59CB48BB2C6A5362A962A /* [CP] Embed Pods Frameworks */ = { 236 | isa = PBXShellScriptBuildPhase; 237 | buildActionMask = 2147483647; 238 | files = ( 239 | ); 240 | inputPaths = ( 241 | ); 242 | name = "[CP] Embed Pods Frameworks"; 243 | outputPaths = ( 244 | ); 245 | runOnlyForDeploymentPostprocessing = 0; 246 | shellPath = /bin/sh; 247 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; 248 | showEnvVarsInLog = 0; 249 | }; 250 | 9740EEB61CF901F6004384FC /* Run Script */ = { 251 | isa = PBXShellScriptBuildPhase; 252 | buildActionMask = 2147483647; 253 | files = ( 254 | ); 255 | inputPaths = ( 256 | ); 257 | name = "Run Script"; 258 | outputPaths = ( 259 | ); 260 | runOnlyForDeploymentPostprocessing = 0; 261 | shellPath = /bin/sh; 262 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; 263 | }; 264 | CF61B812868CDD47BDB8FDC3 /* [CP] Check Pods Manifest.lock */ = { 265 | isa = PBXShellScriptBuildPhase; 266 | buildActionMask = 2147483647; 267 | files = ( 268 | ); 269 | inputFileListPaths = ( 270 | ); 271 | inputPaths = ( 272 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 273 | "${PODS_ROOT}/Manifest.lock", 274 | ); 275 | name = "[CP] Check Pods Manifest.lock"; 276 | outputFileListPaths = ( 277 | ); 278 | outputPaths = ( 279 | "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", 280 | ); 281 | runOnlyForDeploymentPostprocessing = 0; 282 | shellPath = /bin/sh; 283 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 284 | showEnvVarsInLog = 0; 285 | }; 286 | /* End PBXShellScriptBuildPhase section */ 287 | 288 | /* Begin PBXSourcesBuildPhase section */ 289 | 97C146EA1CF9000F007C117D /* Sources */ = { 290 | isa = PBXSourcesBuildPhase; 291 | buildActionMask = 2147483647; 292 | files = ( 293 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 294 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, 295 | ); 296 | runOnlyForDeploymentPostprocessing = 0; 297 | }; 298 | /* End PBXSourcesBuildPhase section */ 299 | 300 | /* Begin PBXVariantGroup section */ 301 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = { 302 | isa = PBXVariantGroup; 303 | children = ( 304 | 97C146FB1CF9000F007C117D /* Base */, 305 | ); 306 | name = Main.storyboard; 307 | sourceTree = ""; 308 | }; 309 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { 310 | isa = PBXVariantGroup; 311 | children = ( 312 | 97C147001CF9000F007C117D /* Base */, 313 | ); 314 | name = LaunchScreen.storyboard; 315 | sourceTree = ""; 316 | }; 317 | /* End PBXVariantGroup section */ 318 | 319 | /* Begin XCBuildConfiguration section */ 320 | 249021D3217E4FDB00AE95B9 /* Profile */ = { 321 | isa = XCBuildConfiguration; 322 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.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-with-dsym"; 352 | ENABLE_NS_ASSERTIONS = NO; 353 | ENABLE_STRICT_OBJC_MSGSEND = YES; 354 | GCC_C_LANGUAGE_STANDARD = gnu99; 355 | GCC_NO_COMMON_BLOCKS = YES; 356 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 357 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 358 | GCC_WARN_UNDECLARED_SELECTOR = YES; 359 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 360 | GCC_WARN_UNUSED_FUNCTION = YES; 361 | GCC_WARN_UNUSED_VARIABLE = YES; 362 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 363 | MTL_ENABLE_DEBUG_INFO = NO; 364 | SDKROOT = iphoneos; 365 | SUPPORTED_PLATFORMS = iphoneos; 366 | TARGETED_DEVICE_FAMILY = "1,2"; 367 | VALIDATE_PRODUCT = YES; 368 | }; 369 | name = Profile; 370 | }; 371 | 249021D4217E4FDB00AE95B9 /* Profile */ = { 372 | isa = XCBuildConfiguration; 373 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 374 | buildSettings = { 375 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 376 | CLANG_ENABLE_MODULES = YES; 377 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 378 | ENABLE_BITCODE = NO; 379 | FRAMEWORK_SEARCH_PATHS = ( 380 | "$(inherited)", 381 | "$(PROJECT_DIR)/Flutter", 382 | ); 383 | INFOPLIST_FILE = Runner/Info.plist; 384 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 385 | LIBRARY_SEARCH_PATHS = ( 386 | "$(inherited)", 387 | "$(PROJECT_DIR)/Flutter", 388 | ); 389 | PRODUCT_BUNDLE_IDENTIFIER = com.iconicto.everythingFlutter; 390 | PRODUCT_NAME = "$(TARGET_NAME)"; 391 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 392 | SWIFT_VERSION = 4.0; 393 | VERSIONING_SYSTEM = "apple-generic"; 394 | }; 395 | name = Profile; 396 | }; 397 | 97C147031CF9000F007C117D /* Debug */ = { 398 | isa = XCBuildConfiguration; 399 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 400 | buildSettings = { 401 | ALWAYS_SEARCH_USER_PATHS = NO; 402 | CLANG_ANALYZER_NONNULL = YES; 403 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 404 | CLANG_CXX_LIBRARY = "libc++"; 405 | CLANG_ENABLE_MODULES = YES; 406 | CLANG_ENABLE_OBJC_ARC = YES; 407 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 408 | CLANG_WARN_BOOL_CONVERSION = YES; 409 | CLANG_WARN_COMMA = YES; 410 | CLANG_WARN_CONSTANT_CONVERSION = YES; 411 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 412 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 413 | CLANG_WARN_EMPTY_BODY = YES; 414 | CLANG_WARN_ENUM_CONVERSION = YES; 415 | CLANG_WARN_INFINITE_RECURSION = YES; 416 | CLANG_WARN_INT_CONVERSION = YES; 417 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 418 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 419 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 420 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 421 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 422 | CLANG_WARN_STRICT_PROTOTYPES = YES; 423 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 424 | CLANG_WARN_UNREACHABLE_CODE = YES; 425 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 426 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 427 | COPY_PHASE_STRIP = NO; 428 | DEBUG_INFORMATION_FORMAT = dwarf; 429 | ENABLE_STRICT_OBJC_MSGSEND = YES; 430 | ENABLE_TESTABILITY = YES; 431 | GCC_C_LANGUAGE_STANDARD = gnu99; 432 | GCC_DYNAMIC_NO_PIC = NO; 433 | GCC_NO_COMMON_BLOCKS = YES; 434 | GCC_OPTIMIZATION_LEVEL = 0; 435 | GCC_PREPROCESSOR_DEFINITIONS = ( 436 | "DEBUG=1", 437 | "$(inherited)", 438 | ); 439 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 440 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 441 | GCC_WARN_UNDECLARED_SELECTOR = YES; 442 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 443 | GCC_WARN_UNUSED_FUNCTION = YES; 444 | GCC_WARN_UNUSED_VARIABLE = YES; 445 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 446 | MTL_ENABLE_DEBUG_INFO = YES; 447 | ONLY_ACTIVE_ARCH = YES; 448 | SDKROOT = iphoneos; 449 | TARGETED_DEVICE_FAMILY = "1,2"; 450 | }; 451 | name = Debug; 452 | }; 453 | 97C147041CF9000F007C117D /* Release */ = { 454 | isa = XCBuildConfiguration; 455 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 456 | buildSettings = { 457 | ALWAYS_SEARCH_USER_PATHS = NO; 458 | CLANG_ANALYZER_NONNULL = YES; 459 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 460 | CLANG_CXX_LIBRARY = "libc++"; 461 | CLANG_ENABLE_MODULES = YES; 462 | CLANG_ENABLE_OBJC_ARC = YES; 463 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 464 | CLANG_WARN_BOOL_CONVERSION = YES; 465 | CLANG_WARN_COMMA = YES; 466 | CLANG_WARN_CONSTANT_CONVERSION = YES; 467 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 468 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 469 | CLANG_WARN_EMPTY_BODY = YES; 470 | CLANG_WARN_ENUM_CONVERSION = YES; 471 | CLANG_WARN_INFINITE_RECURSION = YES; 472 | CLANG_WARN_INT_CONVERSION = YES; 473 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 474 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 475 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 476 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 477 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 478 | CLANG_WARN_STRICT_PROTOTYPES = YES; 479 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 480 | CLANG_WARN_UNREACHABLE_CODE = YES; 481 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 482 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 483 | COPY_PHASE_STRIP = NO; 484 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 485 | ENABLE_NS_ASSERTIONS = NO; 486 | ENABLE_STRICT_OBJC_MSGSEND = YES; 487 | GCC_C_LANGUAGE_STANDARD = gnu99; 488 | GCC_NO_COMMON_BLOCKS = YES; 489 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 490 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 491 | GCC_WARN_UNDECLARED_SELECTOR = YES; 492 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 493 | GCC_WARN_UNUSED_FUNCTION = YES; 494 | GCC_WARN_UNUSED_VARIABLE = YES; 495 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 496 | MTL_ENABLE_DEBUG_INFO = NO; 497 | SDKROOT = iphoneos; 498 | SUPPORTED_PLATFORMS = iphoneos; 499 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 500 | TARGETED_DEVICE_FAMILY = "1,2"; 501 | VALIDATE_PRODUCT = YES; 502 | }; 503 | name = Release; 504 | }; 505 | 97C147061CF9000F007C117D /* Debug */ = { 506 | isa = XCBuildConfiguration; 507 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 508 | buildSettings = { 509 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 510 | CLANG_ENABLE_MODULES = YES; 511 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 512 | ENABLE_BITCODE = NO; 513 | FRAMEWORK_SEARCH_PATHS = ( 514 | "$(inherited)", 515 | "$(PROJECT_DIR)/Flutter", 516 | ); 517 | INFOPLIST_FILE = Runner/Info.plist; 518 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 519 | LIBRARY_SEARCH_PATHS = ( 520 | "$(inherited)", 521 | "$(PROJECT_DIR)/Flutter", 522 | ); 523 | PRODUCT_BUNDLE_IDENTIFIER = com.iconicto.everythingFlutter; 524 | PRODUCT_NAME = "$(TARGET_NAME)"; 525 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 526 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 527 | SWIFT_VERSION = 4.0; 528 | VERSIONING_SYSTEM = "apple-generic"; 529 | }; 530 | name = Debug; 531 | }; 532 | 97C147071CF9000F007C117D /* Release */ = { 533 | isa = XCBuildConfiguration; 534 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 535 | buildSettings = { 536 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 537 | CLANG_ENABLE_MODULES = YES; 538 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 539 | ENABLE_BITCODE = NO; 540 | FRAMEWORK_SEARCH_PATHS = ( 541 | "$(inherited)", 542 | "$(PROJECT_DIR)/Flutter", 543 | ); 544 | INFOPLIST_FILE = Runner/Info.plist; 545 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 546 | LIBRARY_SEARCH_PATHS = ( 547 | "$(inherited)", 548 | "$(PROJECT_DIR)/Flutter", 549 | ); 550 | PRODUCT_BUNDLE_IDENTIFIER = com.iconicto.everythingFlutter; 551 | PRODUCT_NAME = "$(TARGET_NAME)"; 552 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 553 | SWIFT_VERSION = 4.0; 554 | VERSIONING_SYSTEM = "apple-generic"; 555 | }; 556 | name = Release; 557 | }; 558 | /* End XCBuildConfiguration section */ 559 | 560 | /* Begin XCConfigurationList section */ 561 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { 562 | isa = XCConfigurationList; 563 | buildConfigurations = ( 564 | 97C147031CF9000F007C117D /* Debug */, 565 | 97C147041CF9000F007C117D /* Release */, 566 | 249021D3217E4FDB00AE95B9 /* Profile */, 567 | ); 568 | defaultConfigurationIsVisible = 0; 569 | defaultConfigurationName = Release; 570 | }; 571 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { 572 | isa = XCConfigurationList; 573 | buildConfigurations = ( 574 | 97C147061CF9000F007C117D /* Debug */, 575 | 97C147071CF9000F007C117D /* Release */, 576 | 249021D4217E4FDB00AE95B9 /* Profile */, 577 | ); 578 | defaultConfigurationIsVisible = 0; 579 | defaultConfigurationName = Release; 580 | }; 581 | /* End XCConfigurationList section */ 582 | }; 583 | rootObject = 97C146E61CF9000F007C117D /* Project object */; 584 | } 585 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /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 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 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/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/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/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/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/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/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/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/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/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/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/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/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/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/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/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/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/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/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/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/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/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/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/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/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/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/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/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/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/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/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/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Colombo-Flutter-Meetup/everything-flutter/5d103f84eb19c81ef7532a48a732e8e5acd715f7/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 | everything_flutter 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/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" -------------------------------------------------------------------------------- /lib/bloc/blocs.dart: -------------------------------------------------------------------------------- 1 | export 'home/home_bloc.dart'; 2 | export 'tutorial/tutorial_bloc.dart'; 3 | -------------------------------------------------------------------------------- /lib/bloc/home/home_bloc.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:bloc/bloc.dart'; 4 | import 'package:equatable/equatable.dart'; 5 | import 'package:everything_flutter/model/news.dart'; 6 | import 'package:everything_flutter/services/repository.dart'; 7 | import 'package:flutter/material.dart'; 8 | import 'package:meta/meta.dart'; 9 | 10 | part 'home_event.dart'; 11 | part 'home_state.dart'; 12 | 13 | class HomeBloc extends Bloc { 14 | final _repository = Repository(); 15 | 16 | @override 17 | HomeState get initialState => InitialHomeState(); 18 | 19 | @override 20 | Stream mapEventToState(HomeEvent event) async* { 21 | if (event is FetchNewsData) { 22 | yield* _mapFetchNewsDataToState(); 23 | } 24 | } 25 | 26 | Stream _mapFetchNewsDataToState() async* { 27 | yield NetworkBusyHomeState(); 28 | try { 29 | // network call 30 | List newsList = await _repository.fetchAllNews(); 31 | 32 | yield NewsFetchedHomeState(newsList: newsList); 33 | } catch (error, stacktrace) { 34 | // handle network call error 35 | print(stacktrace); 36 | yield NetworkErrorHomeState(error: error.toString()); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lib/bloc/home/home_event.dart: -------------------------------------------------------------------------------- 1 | part of 'home_bloc.dart'; 2 | 3 | @immutable 4 | abstract class HomeEvent extends Equatable { 5 | HomeEvent([List props = const []]) : super(props); 6 | } 7 | 8 | class FetchNewsData extends HomeEvent {} 9 | -------------------------------------------------------------------------------- /lib/bloc/home/home_state.dart: -------------------------------------------------------------------------------- 1 | part of 'home_bloc.dart'; 2 | 3 | @immutable 4 | abstract class HomeState extends Equatable { 5 | HomeState([List props = const []]) : super(props); 6 | } 7 | 8 | class InitialHomeState extends HomeState { 9 | @override 10 | String toString() => 'InitialHomeState'; 11 | } 12 | 13 | class NetworkBusyHomeState extends HomeState { 14 | @override 15 | String toString() => 'NetworkBusyHomeState'; 16 | } 17 | 18 | class NetworkErrorHomeState extends HomeState { 19 | final String error; 20 | 21 | NetworkErrorHomeState({this.error}); 22 | 23 | @override 24 | String toString() => 'NetworkErrorHomeState'; 25 | } 26 | 27 | class NewsFetchedHomeState extends HomeState { 28 | final List newsList; 29 | 30 | NewsFetchedHomeState({this.newsList = const []}) : super([newsList]); 31 | 32 | bool get hasData => newsList.length > 0; 33 | 34 | @override 35 | String toString() => 'NewsFetchedHomeState'; 36 | } 37 | -------------------------------------------------------------------------------- /lib/bloc/simple_bloc_delegate.dart: -------------------------------------------------------------------------------- 1 | import 'package:bloc/bloc.dart'; 2 | 3 | class SimpleBlocDelegate extends BlocDelegate { 4 | @override 5 | void onTransition(Bloc bloc, Transition transition) { 6 | super.onTransition(bloc, transition); 7 | print(transition); 8 | } 9 | 10 | @override 11 | void onError(Bloc bloc, Object error, StackTrace stacktrace) { 12 | super.onError(bloc, error, stacktrace); 13 | print("$error \n $stacktrace"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /lib/bloc/tutorial/tutorial_bloc.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:bloc/bloc.dart'; 4 | import 'package:equatable/equatable.dart'; 5 | import 'package:everything_flutter/model/tutorial.dart'; 6 | import 'package:meta/meta.dart'; 7 | 8 | part 'tutorial_event.dart'; 9 | part 'tutorial_state.dart'; 10 | 11 | class TutorialBloc extends Bloc { 12 | @override 13 | TutorialState get initialState => InitialTutorialState(); 14 | 15 | @override 16 | Stream mapEventToState(TutorialEvent event) async* { 17 | // TODO: Add your event logic 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /lib/bloc/tutorial/tutorial_event.dart: -------------------------------------------------------------------------------- 1 | part of 'tutorial_bloc.dart'; 2 | 3 | @immutable 4 | abstract class TutorialEvent extends Equatable { 5 | TutorialEvent([List props = const []]) : super(props); 6 | } 7 | 8 | class FetchTutorialsData extends TutorialEvent {} 9 | -------------------------------------------------------------------------------- /lib/bloc/tutorial/tutorial_state.dart: -------------------------------------------------------------------------------- 1 | part of 'tutorial_bloc.dart'; 2 | 3 | @immutable 4 | abstract class TutorialState extends Equatable { 5 | TutorialState([List props = const []]) : super(props); 6 | } 7 | 8 | class InitialTutorialState extends TutorialState { 9 | @override 10 | String toString() => 'InitialTutorialState'; 11 | } 12 | 13 | class NetworkBusyTutorialState extends TutorialState { 14 | @override 15 | String toString() => 'NetworkBusyTutorialState'; 16 | } 17 | 18 | class NetworkErrorTutorialState extends TutorialState { 19 | final String error; 20 | 21 | NetworkErrorTutorialState({this.error}); 22 | 23 | @override 24 | String toString() => 'NetworkErrorTutorialState'; 25 | } 26 | 27 | class TutorialsFetchTutorialState extends TutorialState { 28 | final List tutorialList; 29 | 30 | TutorialsFetchTutorialState({this.tutorialList = const []}) 31 | : super([tutorialList]); 32 | 33 | bool get hasData => tutorialList.length > 0; 34 | 35 | @override 36 | String toString() => 'TutorialsFetchTutorialState'; 37 | } 38 | -------------------------------------------------------------------------------- /lib/bloc/widget/widget_bloc.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:bloc/bloc.dart'; 4 | import 'package:meta/meta.dart'; 5 | 6 | part 'widget_event.dart'; 7 | part 'widget_state.dart'; 8 | 9 | class WidgetBloc extends Bloc { 10 | @override 11 | WidgetState get initialState => InitialWidgetState(); 12 | 13 | @override 14 | Stream mapEventToState(WidgetEvent event) async* { 15 | // TODO: Add your event logic 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lib/bloc/widget/widget_event.dart: -------------------------------------------------------------------------------- 1 | part of 'widget_bloc.dart'; 2 | 3 | @immutable 4 | abstract class WidgetEvent {} 5 | -------------------------------------------------------------------------------- /lib/bloc/widget/widget_state.dart: -------------------------------------------------------------------------------- 1 | part of 'widget_bloc.dart'; 2 | 3 | @immutable 4 | abstract class WidgetState {} 5 | 6 | class InitialWidgetState extends WidgetState {} 7 | -------------------------------------------------------------------------------- /lib/constants/app_colors.dart: -------------------------------------------------------------------------------- 1 | import 'dart:ui'; 2 | 3 | class AppColors { 4 | static const Color BLUE = Color(0xFF40ACF9); 5 | 6 | static List pastelColors = [ 7 | Color(0xFFfd987c), 8 | Color(0xFF55DFDE), 9 | Color(0xFFbaed91), 10 | Color(0xFFB290FC), 11 | ]; 12 | 13 | static List titleColors = [ 14 | Color(0xFFFB886D), 15 | Color(0xFF3FE6EF), 16 | Color(0xFF91ECB7), 17 | Color(0xFF7B8CFA), 18 | ]; 19 | 20 | static List buttonColors = [ 21 | Color(0xFFFB957C), 22 | Color(0xFF54F0F8), 23 | Color(0xFF9BEFC7), 24 | Color(0xFF8DA5FA), 25 | ]; 26 | } 27 | -------------------------------------------------------------------------------- /lib/constants/route_paths.dart: -------------------------------------------------------------------------------- 1 | const String HomePageRoute = 'Home'; 2 | const String EventsPageRoute = 'Events'; 3 | const String NewsPageRoute = 'News'; 4 | const String WidgetsPageRoute = 'Widgets'; 5 | const String TutorialsPageRoute = 'Tutorials'; 6 | const String GroupsPageRoute = 'Groups'; 7 | -------------------------------------------------------------------------------- /lib/constants/strings.dart: -------------------------------------------------------------------------------- 1 | List menuCardTitles = [ 2 | "Events", 3 | "Widgets", 4 | "Communities", 5 | "Tutorials", 6 | ]; 7 | 8 | List imageAssets = [ 9 | 'assets/images/dashboard_hero.jpg', 10 | 'assets/images/dashboard_widgets.jpg', 11 | 'assets/images/dashboard_community.jpg', 12 | 'assets/images/dashboard_customize.jpg', 13 | ]; 14 | 15 | 16 | List eventCardTitles = [ 17 | "Hack '19", 18 | "Flutter Everywhere", 19 | "Communities", 20 | "Tutorials", 21 | ]; 22 | 23 | List eventCardSubtitles = [ 24 | "First Flutter Hackathon", 25 | "First Flutter Meetup", 26 | "First Flutter Hackathon", 27 | "First Flutter Hackathon", 28 | ]; -------------------------------------------------------------------------------- /lib/constants/test_data.dart: -------------------------------------------------------------------------------- 1 | import 'package:everything_flutter/model/news.dart'; 2 | 3 | News newsItem = News( 4 | title: "How we built Flutter app presented at MWC'19 in one month", 5 | time: DateTime.now().subtract( 6 | Duration(minutes: 55), 7 | ), 8 | image: "https://blog.codemagic.io/uploads/2019/02/CM-Flutter-experience.jpg", 9 | source: Source(name: "MEDIUM"), 10 | ); 11 | 12 | News newsItemTwo = News( 13 | title: "A Lookback Into Flutter 1.5 – The Biggest Google Release of 2019", 14 | time: DateTime.parse("2019-06-30T22:45:52.326000+05:30"), 15 | image: "https://cdn.iconicto.com/EverythingFlutter/media/News/ef1.png", 16 | link: "https://appinventiv.com/blog/flutter-1-5-highlights/", 17 | source: Source(name: "Appinventiv"), 18 | ); 19 | 20 | News newsItemThree = News( 21 | title: "Google’s Flutter framework spreads its wings and goes multi-platform", 22 | time: DateTime.parse("2019-06-30T22:49:51.764000+05:30"), 23 | link: 24 | "https://techcrunch.com/2019/05/07/googles-flutter-framework-spreads-its-wings-and-goes-multi-platform/", 25 | image: "https://cdn.iconicto.com/EverythingFlutter/media/News/ef3.jpg", 26 | source: Source(name: "Techcrunch"), 27 | ); 28 | -------------------------------------------------------------------------------- /lib/constants/text_size.dart: -------------------------------------------------------------------------------- 1 | 2 | 3 | class TextSize { 4 | static double title = 12.5; 5 | static double miniTitle = 11.5; 6 | static double cardTitle = 11; 7 | static double subtitle = 9; 8 | } 9 | -------------------------------------------------------------------------------- /lib/constants/text_styles.dart: -------------------------------------------------------------------------------- 1 | import 'package:everything_flutter/constants/app_colors.dart'; 2 | import 'package:everything_flutter/constants/text_size.dart'; 3 | import 'package:everything_flutter/helpers/screen_util.dart'; 4 | import 'package:flutter/material.dart'; 5 | 6 | class TextStyles { 7 | static final TextStyle title = TextStyle( 8 | fontWeight: FontWeight.bold, 9 | fontSize: ScreenUtil.getTextSize(TextSize.title), 10 | ); 11 | 12 | static final TextStyle miniTitle = TextStyle( 13 | fontWeight: FontWeight.bold, 14 | fontSize: ScreenUtil.getTextSize(TextSize.miniTitle), 15 | ); 16 | 17 | static final TextStyle cardTitle = TextStyle( 18 | fontWeight: FontWeight.bold, 19 | fontSize: ScreenUtil.getTextSize(TextSize.cardTitle), 20 | ); 21 | 22 | static final TextStyle subtitle = TextStyle( 23 | fontWeight: FontWeight.w300, 24 | fontSize: ScreenUtil.getTextSize(TextSize.subtitle), 25 | color: Colors.black54, 26 | ); 27 | 28 | static final TextStyle blueSubtitle = TextStyle( 29 | fontWeight: FontWeight.w500, 30 | fontSize: ScreenUtil.getTextSize(TextSize.subtitle), 31 | color: AppColors.BLUE, 32 | ); 33 | } 34 | -------------------------------------------------------------------------------- /lib/constants/theme_data.dart: -------------------------------------------------------------------------------- 1 | export 'app_colors.dart'; 2 | export 'text_size.dart'; 3 | export 'text_styles.dart'; 4 | -------------------------------------------------------------------------------- /lib/helpers/screen_util.dart: -------------------------------------------------------------------------------- 1 | import 'dart:math'; 2 | 3 | import 'package:flutter/material.dart'; 4 | 5 | class ScreenUtil { 6 | static double _screenWidth; 7 | static double _screenHeight; 8 | 9 | void init(BuildContext context) { 10 | MediaQueryData mediaQuery = MediaQuery.of(context); 11 | _screenWidth = mediaQuery.size.width; 12 | _screenHeight = mediaQuery.size.height; 13 | } 14 | 15 | static const double _fixedWidth = 16 | 410; // Set to an Aspect Ratio of 2:1 (height:width) 17 | static const double _fixedHeight = 18 | 820; // Set to an Aspect Ratio of 2:1 (height:width) 19 | 20 | // Useful rounding method (solution -> https://stackoverflow.com/questions/28419255/how-do-you-round-a-double-in-dart-to-a-given-degree-of-precision-after-the-decim/53500405#53500405) 21 | static double roundToDecimals(double val, int decimalPlaces) { 22 | double mod = pow(10.0, decimalPlaces); 23 | return ((val * mod).round().toDouble() / mod); 24 | } 25 | 26 | static double getWidth(double width) { 27 | final int _decPlaces = 5; 28 | final double _fixedWidth = ScreenUtil._fixedWidth; 29 | 30 | _screenWidth = 31 | _screenWidth.floorToDouble(); // Extracts Device Screen maximum width. 32 | 33 | double _rsWidth = 0; 34 | if (_screenWidth == _fixedWidth) { 35 | // If input width matches fixedWidth then do normal scaling. 36 | _rsWidth = ScreenUtil.roundToDecimals( 37 | (_screenWidth * (width / 100)), _decPlaces); 38 | } else { 39 | // If input width !match fixedWidth then do adjustment factor scaling. 40 | double _scaleRatioWidth = 41 | ScreenUtil.roundToDecimals((_screenWidth / _fixedWidth), _decPlaces); 42 | double _scalerWidth = 43 | ((width + log(width + 1)) * pow(1, _scaleRatioWidth)) / 100; 44 | _rsWidth = 45 | ScreenUtil.roundToDecimals((_screenWidth * _scalerWidth), _decPlaces); 46 | } 47 | 48 | return _rsWidth; 49 | } 50 | 51 | static double getHeight(double height) { 52 | final int _decPlaces = 5; 53 | final double _fixedHeight = ScreenUtil._fixedHeight; 54 | 55 | _screenHeight = 56 | _screenHeight.floorToDouble(); // Extracts Device Screen maximum height. 57 | 58 | double _rsHeight = 0; 59 | if (_screenHeight == _fixedHeight) { 60 | // If input height matches fixedHeight then do normal scaling. 61 | _rsHeight = ScreenUtil.roundToDecimals( 62 | (_screenHeight * (height / 100)), _decPlaces); 63 | } else { 64 | // If input height !match fixedHeight then do adjustment factor scaling. 65 | double _scaleRatioHeight = ScreenUtil.roundToDecimals( 66 | (_screenHeight / _fixedHeight), _decPlaces); 67 | double _scalerHeight = 68 | ((height + log(height + 1)) * pow(1, _scaleRatioHeight)) / 100; 69 | _rsHeight = ScreenUtil.roundToDecimals( 70 | (_screenHeight * _scalerHeight), _decPlaces); 71 | } 72 | 73 | return _rsHeight; 74 | } 75 | 76 | static double getTextSize(double textSize) => 77 | textSize / 100 * (getHeight(textSize) + getWidth(textSize)); 78 | 79 | static double getFullScreen(double percent) => 80 | percent / 100 * (getHeight(percent) + getWidth(percent)); 81 | 82 | static EdgeInsetsGeometry getPadding(double height, double width) => 83 | EdgeInsets.fromLTRB(getWidth(width), getHeight(height), getWidth(width), 84 | getHeight(height)); 85 | 86 | static EdgeInsetsGeometry getPaddingLTRB( 87 | double left, double top, double right, double bottom) => 88 | EdgeInsets.fromLTRB( 89 | getWidth(left), getHeight(top), getWidth(right), getHeight(bottom)); 90 | 91 | static EdgeInsetsGeometry getPaddingAll(double all) => 92 | EdgeInsets.all(getFullScreen(all)); 93 | 94 | static BorderRadius getBorderRadiusCircular(double radius) => 95 | BorderRadius.circular(getFullScreen(radius)); 96 | } 97 | -------------------------------------------------------------------------------- /lib/helpers/simple_logger.dart: -------------------------------------------------------------------------------- 1 | import 'package:logger/logger.dart'; 2 | 3 | class SimplePrinterLogger extends LogPrinter { 4 | @override 5 | void log(LogEvent event) { 6 | // TODO: implement log 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /lib/helpers/utils.dart: -------------------------------------------------------------------------------- 1 | import 'package:url_launcher/url_launcher.dart'; 2 | 3 | class Utils { 4 | static void launchURL(String url) async { 5 | if (await canLaunch(url)) { 6 | await launch(url); 7 | } else { 8 | throw 'Could not launch $url'; 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lib/locator.dart: -------------------------------------------------------------------------------- 1 | import 'package:everything_flutter/services/navigation.dart'; 2 | import 'package:everything_flutter/services/network.dart'; 3 | import 'package:get_it/get_it.dart'; 4 | 5 | GetIt locator = GetIt.instance; 6 | 7 | void setupLocator() { 8 | locator.registerLazySingleton(() => NavigationService()); 9 | locator.registerLazySingleton(() => NetworkService()); 10 | } 11 | -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:everything_flutter/constants/app_colors.dart'; 2 | import 'package:everything_flutter/constants/route_paths.dart' as routes; 3 | import 'package:everything_flutter/locator.dart'; 4 | import 'package:everything_flutter/router.dart' as router; 5 | import 'package:flutter/material.dart'; 6 | import 'package:flutter/services.dart'; 7 | 8 | Future main() async { 9 | setupLocator(); 10 | SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light); 11 | runApp(MyApp()); 12 | } 13 | 14 | class MyApp extends StatelessWidget { 15 | static BuildContext context; 16 | 17 | final ThemeData _themeData = ThemeData( 18 | fontFamily: 'CircularStd', 19 | primaryColor: AppColors.BLUE, 20 | brightness: Brightness.light 21 | ); 22 | 23 | @override 24 | Widget build(BuildContext context) { 25 | context = context; 26 | return MaterialApp( 27 | debugShowCheckedModeBanner: false, 28 | title: 'Everything Flutter', 29 | theme: _themeData, 30 | onGenerateRoute: router.generateRoute, 31 | initialRoute: routes.HomePageRoute, 32 | ); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /lib/model/community.dart: -------------------------------------------------------------------------------- 1 | class Community {} 2 | -------------------------------------------------------------------------------- /lib/model/event.dart: -------------------------------------------------------------------------------- 1 | class Event {} 2 | -------------------------------------------------------------------------------- /lib/model/news.dart: -------------------------------------------------------------------------------- 1 | import 'dart:convert'; 2 | 3 | class NewsList { 4 | List data; 5 | 6 | NewsList({ 7 | this.data, 8 | }); 9 | 10 | factory NewsList.fromJson(String str) => NewsList.fromMap(json.decode(str)); 11 | 12 | String toJson() => json.encode(toMap()); 13 | 14 | factory NewsList.fromMap(Map json) => NewsList( 15 | data: json["news"] == null 16 | ? null 17 | : List.from(json["news"].map((x) => News.fromMap(x))), 18 | ); 19 | 20 | Map toMap() => { 21 | "news": data == null 22 | ? null 23 | : List.from(data.map((x) => x.toMap())), 24 | }; 25 | } 26 | 27 | class News { 28 | String title; 29 | DateTime time; 30 | String link; 31 | Source source; 32 | String image; 33 | 34 | News({ 35 | this.title, 36 | this.time, 37 | this.link, 38 | this.source, 39 | this.image, 40 | }); 41 | 42 | factory News.fromJson(String str) => News.fromMap(json.decode(str)); 43 | 44 | String toJson() => json.encode(toMap()); 45 | 46 | factory News.fromMap(Map json) => News( 47 | title: json["title"] == null ? null : json["title"], 48 | time: json["time"] == null ? null : DateTime.parse(json["time"]), 49 | link: json["link"] == null ? null : json["link"], 50 | source: json["source"] == null ? null : Source.fromMap(json["source"]), 51 | image: json["image"] == null ? null : json["image"], 52 | ); 53 | 54 | Map toMap() => { 55 | "title": title == null ? null : title, 56 | "time": time == null ? null : time.toIso8601String(), 57 | "link": link == null ? null : link, 58 | "source": source == null ? null : source.toMap(), 59 | "image": image == null ? null : image, 60 | }; 61 | } 62 | 63 | class Source { 64 | String name; 65 | String logo; 66 | 67 | Source({ 68 | this.name, 69 | this.logo, 70 | }); 71 | 72 | factory Source.fromJson(String str) => Source.fromMap(json.decode(str)); 73 | 74 | String toJson() => json.encode(toMap()); 75 | 76 | factory Source.fromMap(Map json) => Source( 77 | name: json["name"] == null ? null : json["name"], 78 | logo: json["logo"] == null ? null : json["logo"], 79 | ); 80 | 81 | Map toMap() => { 82 | "name": name == null ? null : name, 83 | "logo": logo == null ? null : logo, 84 | }; 85 | } 86 | -------------------------------------------------------------------------------- /lib/model/tutorial.dart: -------------------------------------------------------------------------------- 1 | class Tutorial {} 2 | -------------------------------------------------------------------------------- /lib/model/widget.dart: -------------------------------------------------------------------------------- 1 | class Widget {} 2 | -------------------------------------------------------------------------------- /lib/router.dart: -------------------------------------------------------------------------------- 1 | import 'package:everything_flutter/constants/route_paths.dart' as routes; 2 | import 'package:everything_flutter/ui/pages/event.dart'; 3 | import 'package:everything_flutter/ui/pages/pages.dart'; 4 | import 'package:everything_flutter/ui/widgets/test.dart'; 5 | import 'package:flutter/cupertino.dart'; 6 | import 'package:flutter/material.dart'; 7 | 8 | Route generateRoute(RouteSettings settings) { 9 | switch (settings.name) { 10 | case routes.HomePageRoute: 11 | return MaterialPageRoute( 12 | builder: (context) => HomePage(), 13 | ); 14 | case routes.EventsPageRoute: 15 | return MaterialPageRoute( 16 | builder: (context) => EventPage(), 17 | ); 18 | case routes.NewsPageRoute: 19 | return MaterialPageRoute( 20 | builder: (context) => NewsPage(), 21 | ); 22 | case routes.TutorialsPageRoute: 23 | return MaterialPageRoute( 24 | builder: (context) => TutorialPage(), 25 | ); 26 | case routes.WidgetsPageRoute: 27 | return MaterialPageRoute( 28 | builder: (context) => WidgetPage(), 29 | ); 30 | default: 31 | return MaterialPageRoute( 32 | builder: (context) => Scaffold( 33 | body: Center( 34 | child: Text('No path for ${settings.name}'), 35 | ), 36 | ), 37 | ); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /lib/services/navigation.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class NavigationService { 4 | final GlobalKey navigatorKey = 5 | new GlobalKey(); 6 | 7 | Future navigateTo(String routeName, {dynamic arguments}) { 8 | return navigatorKey.currentState.pushNamed(routeName, arguments: arguments); 9 | } 10 | 11 | bool goBack() { 12 | return navigatorKey.currentState.pop(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /lib/services/network.dart: -------------------------------------------------------------------------------- 1 | //https://everythingflutter.iconicto.com/api/communities 2 | //https://everythingflutter.iconicto.com/api/widgets 3 | //https://everythingflutter.iconicto.com/api/tutorials 4 | //https://everythingflutter.iconicto.com/api/events 5 | //https://everythingflutter.iconicto.com/api/news 6 | 7 | import 'package:dio/dio.dart'; 8 | import 'package:everything_flutter/model/Widget.dart'; 9 | import 'package:everything_flutter/model/community.dart'; 10 | import 'package:everything_flutter/model/event.dart'; 11 | import 'package:everything_flutter/model/news.dart'; 12 | import 'package:everything_flutter/model/tutorial.dart'; 13 | 14 | abstract class Api { 15 | Future> getAllNews(); 16 | 17 | List getAllCommunities(); 18 | 19 | List getAllEvents(); 20 | 21 | List getAllTutorials(); 22 | 23 | List getAllWidgets(); 24 | } 25 | 26 | class NetworkService extends Api { 27 | @override 28 | List getAllCommunities() { 29 | // TODO: implement getAllCommunities 30 | return null; 31 | } 32 | 33 | @override 34 | List getAllEvents() { 35 | // TODO: implement getAllEvents 36 | return null; 37 | } 38 | 39 | @override 40 | Future> getAllNews() async { 41 | final String _endpoint = 42 | "https://everythingflutter.iconicto.com/api/ui.widgets/"; 43 | final Dio _dio = Dio(); 44 | 45 | Response response = await _dio.get(_endpoint); 46 | 47 | return NewsList.fromMap(response.data).data; 48 | } 49 | 50 | @override 51 | List getAllTutorials() { 52 | // TODO: implement getAllTutorials 53 | return null; 54 | } 55 | 56 | @override 57 | List getAllWidgets() { 58 | final String _endpoint = 59 | "https://everythingflutter.iconicto.com/api/ui.widgets/"; 60 | final Dio _dio = Dio(); 61 | 62 | // Response response = await _dio.get(_endpoint); 63 | 64 | // return NewsList.fromMap(response.data).data; 65 | 66 | // _stateController.add(BusyHomeState()); 67 | // try { 68 | // Response response = await _dio.get(_endpoint); 69 | // print(response.data); 70 | // newsList = NewsList.fromMap(response.data).data; 71 | // _stateController.add(DataFetchedHomeState(data: newsList)); 72 | // } catch (error, stacktrace) { 73 | // print("Exception occured: $error stackTrace: $stacktrace"); 74 | // return _stateController.addError(error); 75 | // } 76 | return null; 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /lib/services/repository.dart: -------------------------------------------------------------------------------- 1 | import 'package:everything_flutter/model/news.dart'; 2 | import 'package:everything_flutter/services/network.dart'; 3 | 4 | class Repository { 5 | NetworkService networkService = new NetworkService(); 6 | 7 | Future> fetchAllNews() => networkService.getAllNews(); 8 | } 9 | -------------------------------------------------------------------------------- /lib/ui/pages/event.dart: -------------------------------------------------------------------------------- 1 | import 'package:everything_flutter/constants/strings.dart'; 2 | import 'package:everything_flutter/constants/text_styles.dart'; 3 | import 'package:everything_flutter/constants/theme_data.dart'; 4 | import 'package:everything_flutter/helpers/screen_util.dart'; 5 | import 'package:everything_flutter/ui/widgets/menu_card.dart'; 6 | import 'package:flutter/material.dart'; 7 | import 'package:functional_widget_annotation/functional_widget_annotation.dart'; 8 | import 'package:intl/intl.dart'; 9 | import 'package:snaplist/snaplist.dart'; 10 | 11 | class EventPage extends StatelessWidget { 12 | @override 13 | Widget build(BuildContext context) { 14 | return Scaffold( 15 | appBar: _buildAppBar(), 16 | body: _buildBody(), 17 | ); 18 | } 19 | } 20 | 21 | @widget 22 | Widget _buildBody() => SafeArea( 23 | child: SingleChildScrollView( 24 | child: Column( 25 | children: [ 26 | _eventsTitle, 27 | _buildMenuCards(), 28 | ], 29 | ), 30 | ), 31 | ); 32 | 33 | @widget 34 | Container _buildMenuCards() => Container( 35 | height: ScreenUtil.getHeight(35), 36 | width: double.infinity, 37 | child: SnapList( 38 | builder: (context, index, data) => MenuCard( 39 | height: ScreenUtil.getHeight(40), 40 | width: ScreenUtil.getWidth(65), 41 | margin: ScreenUtil.getPaddingLTRB(2, 1, 0, 0), 42 | borderRadius: ScreenUtil.getBorderRadiusCircular(12), 43 | imageAsset: imageAssets[index], 44 | color: AppColors.pastelColors[index], 45 | child: Align( 46 | alignment: Alignment.bottomCenter, 47 | child: Container( 48 | padding: ScreenUtil.getPaddingAll(10), 49 | decoration: BoxDecoration( 50 | borderRadius: ScreenUtil.getBorderRadiusCircular(12), 51 | color: Colors.white70, 52 | ), 53 | child: Container( 54 | child: Column( 55 | // mainAxisAlignment: MainAxisAlignment.spaceBetween, 56 | mainAxisSize: MainAxisSize.min, 57 | mainAxisAlignment: MainAxisAlignment.start, 58 | crossAxisAlignment: CrossAxisAlignment.start, 59 | children: [ 60 | Text( 61 | eventCardTitles[index], 62 | style: TextStyle( 63 | fontSize: ScreenUtil.getTextSize(12), 64 | fontWeight: FontWeight.w800, 65 | color: AppColors.titleColors[index], 66 | ), 67 | ), 68 | Text( 69 | eventCardSubtitles[index], 70 | style: TextStyle( 71 | fontSize: ScreenUtil.getTextSize(10), 72 | fontWeight: FontWeight.w300, 73 | color: Colors.grey, 74 | ), 75 | ), 76 | SizedBox(height: ScreenUtil.getHeight(0.5)), 77 | Align( 78 | alignment: Alignment.bottomRight, 79 | child: GestureDetector( 80 | onTap: () => 81 | Navigator.pushNamed(context, menuCardTitles[index]), 82 | child: Container( 83 | padding: ScreenUtil.getPaddingAll(8), 84 | decoration: BoxDecoration( 85 | borderRadius: 86 | ScreenUtil.getBorderRadiusCircular(12), 87 | color: AppColors.buttonColors[index], 88 | boxShadow: [ 89 | new BoxShadow( 90 | color: AppColors.buttonColors[index], 91 | blurRadius: 8.0, 92 | ), 93 | ], 94 | ), 95 | child: Icon( 96 | Icons.arrow_forward_ios, 97 | size: ScreenUtil.getTextSize(12), 98 | color: Colors.white, 99 | ), 100 | ), 101 | ), 102 | ), 103 | ], 104 | ), 105 | ), 106 | ), 107 | ), 108 | ), 109 | count: 4, 110 | sizeProvider: (index, data) => 111 | Size(ScreenUtil.getWidth(65), ScreenUtil.getHeight(35)), 112 | separatorProvider: (index, data) => 113 | Size(ScreenUtil.getWidth(1), ScreenUtil.getHeight(5)), 114 | ), 115 | ); 116 | 117 | @widget 118 | AppBar _buildAppBar() => AppBar( 119 | title: _appBarTitle, 120 | iconTheme: IconThemeData(color: Colors.black), 121 | elevation: 0, 122 | brightness: Brightness.light, 123 | // or use Brightness.dark 124 | backgroundColor: Colors.grey[50], 125 | ); 126 | 127 | final _appBarTitle = Align( 128 | alignment: Alignment.centerRight, 129 | child: Text( 130 | "${DateFormat("MMM d, yyyy").format(DateTime.now())}", 131 | style: TextStyles.subtitle, 132 | ), 133 | ); 134 | 135 | final _eventsTitle = Text( 136 | "Events", 137 | style: TextStyles.title, 138 | ); 139 | -------------------------------------------------------------------------------- /lib/ui/pages/home.dart: -------------------------------------------------------------------------------- 1 | import 'package:everything_flutter/constants/app_colors.dart'; 2 | import 'package:everything_flutter/constants/strings.dart'; 3 | import 'package:everything_flutter/constants/test_data.dart'; 4 | import 'package:everything_flutter/constants/theme_data.dart'; 5 | import 'package:everything_flutter/helpers/screen_util.dart'; 6 | import 'package:everything_flutter/model/news.dart'; 7 | import 'package:everything_flutter/ui/widgets/menu_card.dart'; 8 | import 'package:everything_flutter/ui/widgets/news_item.dart'; 9 | import 'package:flutter/material.dart'; 10 | import 'package:functional_widget_annotation/functional_widget_annotation.dart'; 11 | import 'package:intl/intl.dart'; 12 | import 'package:snaplist/snaplist.dart'; 13 | 14 | class HomePage extends StatefulWidget { 15 | HomePage({Key key}) : super(key: key); 16 | 17 | _HomePageState createState() => _HomePageState(); 18 | } 19 | 20 | class _HomePageState extends State { 21 | final GlobalKey _scaffoldKey = new GlobalKey(); // ADD THIS LINE 22 | 23 | @override 24 | void initState() { 25 | // model.dispose(FetchNewsData()); 26 | super.initState(); 27 | } 28 | 29 | @override 30 | Widget build(BuildContext context) { 31 | 32 | ScreenUtil()..init(context); 33 | 34 | return Scaffold( 35 | key: _scaffoldKey, 36 | appBar: _buildAppBar(), 37 | body: _buildBody(), 38 | drawer: _buildDrawer(), 39 | ); 40 | } 41 | 42 | 43 | @widget 44 | Widget _buildBody() => SafeArea( 45 | child: SingleChildScrollView( 46 | child: Column( 47 | children: [ 48 | _timelineTitle, 49 | _buildMenuCards(), 50 | _buildNewsFeedBar(), 51 | _buildNewsStand(news) 52 | ], 53 | ), 54 | ), 55 | ); 56 | 57 | @widget 58 | Widget _buildNewsFeedBar() => Padding( 59 | padding: ScreenUtil.getPaddingLTRB(4, 2, 4, 0), 60 | child: Row( 61 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 62 | children: [ 63 | Text( 64 | "Your News Feed", 65 | style: TextStyles.miniTitle, 66 | ), 67 | GestureDetector( 68 | onTap : () { 69 | _scaffoldKey.currentState.openDrawer(); // CHANGE THIS LINE 70 | }, 71 | child: Icon( 72 | Icons.more_vert, 73 | size: ScreenUtil.getFullScreen(12), 74 | ), 75 | ), 76 | ], 77 | ), 78 | ); 79 | } 80 | 81 | List news = [newsItem, newsItemTwo]; 82 | 83 | 84 | final _timelineTitle = Text( 85 | "Your Timeline", 86 | style: TextStyles.title, 87 | ); 88 | 89 | 90 | @widget 91 | Container _buildMenuCards() => Container( 92 | height: ScreenUtil.getHeight(35), 93 | width: double.infinity, 94 | child: SnapList( 95 | builder: (context, index, data) => MenuCard( 96 | height: ScreenUtil.getHeight(40), 97 | width: ScreenUtil.getWidth(65), 98 | margin: ScreenUtil.getPaddingLTRB(2, 1, 0, 0), 99 | borderRadius: ScreenUtil.getBorderRadiusCircular(12), 100 | imageAsset: imageAssets[index], 101 | color: AppColors.pastelColors[index], 102 | child: Align( 103 | alignment: Alignment.bottomCenter, 104 | child: Container( 105 | padding: ScreenUtil.getPaddingAll(10), 106 | decoration: BoxDecoration( 107 | borderRadius: ScreenUtil.getBorderRadiusCircular(12), 108 | color: Colors.white70, 109 | ), 110 | child: Row( 111 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 112 | mainAxisSize: MainAxisSize.max, 113 | children: [ 114 | Text( 115 | menuCardTitles[index], 116 | style: TextStyle( 117 | fontSize: ScreenUtil.getTextSize(13), 118 | fontWeight: FontWeight.w800, 119 | color: AppColors.titleColors[index], 120 | ), 121 | ), 122 | GestureDetector( 123 | onTap: () => 124 | Navigator.pushNamed(context, menuCardTitles[index]), 125 | child: Container( 126 | padding: ScreenUtil.getPaddingAll(8), 127 | decoration: BoxDecoration( 128 | borderRadius: ScreenUtil.getBorderRadiusCircular(12), 129 | color: AppColors.buttonColors[index], 130 | boxShadow: [ 131 | new BoxShadow( 132 | color: AppColors.buttonColors[index], 133 | blurRadius: 8.0, 134 | ), 135 | ]), 136 | child: Icon(Icons.arrow_forward_ios, 137 | size: ScreenUtil.getTextSize(13), 138 | color: Colors.white), 139 | ), 140 | ), 141 | ], 142 | ), 143 | ), 144 | ), 145 | ), 146 | count: 4, 147 | sizeProvider: (index, data) => 148 | Size(ScreenUtil.getWidth(65), ScreenUtil.getHeight(35)), 149 | separatorProvider: (index, data) => 150 | Size(ScreenUtil.getWidth(1), ScreenUtil.getHeight(5)), 151 | ), 152 | ); 153 | 154 | @widget 155 | Drawer _buildDrawer() => Drawer( 156 | child: ListView( 157 | children: [ 158 | DrawerHeader( 159 | child: Text('Custom Header'), 160 | decoration: BoxDecoration( 161 | color: Colors.blue, 162 | ), 163 | ), 164 | ListTile( 165 | leading: Icon(Icons.photo), 166 | title: Text('First layout'), 167 | ), 168 | ListTile( 169 | title: Text('Communicate'), 170 | //without leading =) 171 | ), 172 | ListTile( 173 | leading: Icon(Icons.share), 174 | title: Text('Share layout'), 175 | ) 176 | ], 177 | ), 178 | ); 179 | 180 | @widget 181 | AppBar _buildAppBar() => AppBar( 182 | title: _appBarTitle, 183 | iconTheme: IconThemeData(color: Colors.black), 184 | elevation: 0, 185 | brightness: Brightness.light, 186 | // or use Brightness.dark 187 | backgroundColor: Colors.grey[50], 188 | ); 189 | 190 | final _appBarTitle = Align( 191 | alignment: Alignment.centerRight, 192 | child: Text( 193 | "${DateFormat("MMM d, yyyy").format(DateTime.now())}", 194 | style: TextStyles.subtitle, 195 | ), 196 | ); 197 | 198 | @widget 199 | Widget _buildNewsStand(List newsList) { 200 | List _columnItems = []; 201 | for (var news in newsList) { 202 | _columnItems.add(NewsItem(news)); 203 | // _columnItems.add(Divider()); 204 | } 205 | return Column(children: _columnItems); 206 | } 207 | 208 | Widget _getInformationMessage(String message) { 209 | return Center( 210 | child: Text( 211 | message, 212 | textAlign: TextAlign.center, 213 | style: TextStyle(fontWeight: FontWeight.w900, color: Colors.grey[500]), 214 | ), 215 | ); 216 | } 217 | 218 | // StreamBuilder( 219 | // stream: model.homeState, 220 | // builder: (context, snapshot) { 221 | // if (snapshot.hasError) { 222 | // return _getInformationMessage(snapshot.error.toString()); 223 | // } 224 | // 225 | // var homeState = snapshot.data; 226 | // 227 | // if (!snapshot.hasData || homeState is BusyHomeState) { 228 | // return Center(child: CircularProgressIndicator()); 229 | // } 230 | // 231 | // if (homeState is NewsFetchedHomeState) { 232 | // if (!homeState.hasData) { 233 | // return _getInformationMessage( 234 | // 'No data found! Please try again!'); 235 | // } 236 | // } 237 | // 238 | // return _buildNewsStand(homeState.data); 239 | // }, 240 | // ) 241 | -------------------------------------------------------------------------------- /lib/ui/pages/news.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:intl/intl.dart'; 3 | 4 | class NewsPage extends StatefulWidget { 5 | NewsPage({Key key}) : super(key: key); 6 | 7 | _NewsPageState createState() => _NewsPageState(); 8 | } 9 | 10 | class _NewsPageState extends State { 11 | // final Container appBarDrawer = Container( 12 | // height: 15, 13 | // width: 10, 14 | // child: Row( 15 | // children: [ 16 | // Container( 17 | // height: 5, 18 | // width: 10, 19 | // color: Colors.black, 20 | // ), 21 | // Container( 22 | // height: 5, 23 | // width: 10, 24 | // color: Colors.black, 25 | // ), 26 | // Container( 27 | // height: 5, 28 | // width: 10, 29 | // color: Colors.black, 30 | // ) 31 | // ], 32 | // ), 33 | // ); 34 | 35 | // News newsItem = News( 36 | // title: "How we built Flutter app presented at MWC'19 in one month", 37 | // time: DateTime.now().subtract( 38 | // Duration(minutes: 55), 39 | // ), 40 | // image: 41 | // "https://blog.codemagic.io/uploads/2019/02/CM-Flutter-experience.jpg", 42 | // source: Source(name: "MEDIUM"), 43 | // ); 44 | 45 | @override 46 | Widget build(BuildContext context) { 47 | return Scaffold( 48 | body: SafeArea( 49 | child: SingleChildScrollView( 50 | child: Column( 51 | children: [ 52 | Padding( 53 | padding: const EdgeInsets.all(16.0), 54 | child: Row( 55 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 56 | children: [ 57 | Padding( 58 | padding: const EdgeInsets.all(8.0), 59 | child: Icon( 60 | Icons.arrow_back_ios, 61 | size: 18, 62 | ), 63 | ), 64 | Padding( 65 | padding: const EdgeInsets.all(8.0), 66 | child: Text( 67 | "Sept 8, 2019", 68 | style: TextStyle( 69 | color: Color(0xFF545454), 70 | fontSize: 16, 71 | fontWeight: FontWeight.w300, 72 | ), 73 | ), 74 | ), 75 | ], 76 | ), 77 | ), 78 | SizedBox(height: 5), 79 | Stack( 80 | children: [ 81 | Container( 82 | height: MediaQuery.of(context).size.height, 83 | color: Colors.white, 84 | ), 85 | Positioned( 86 | child: Container( 87 | height: 350, 88 | width: double.infinity, 89 | decoration: BoxDecoration( 90 | borderRadius: BorderRadius.circular(35), 91 | color: Color(0xFFFD987C), 92 | ), 93 | child: ClipRRect( 94 | borderRadius: BorderRadius.circular(35), 95 | child: Image.network( 96 | "https://blog.codemagic.io/uploads/2019/02/CM-Flutter-experience.jpg", 97 | fit: BoxFit.cover, 98 | )), 99 | ), 100 | ), 101 | Positioned( 102 | top: 280, 103 | child: Container( 104 | decoration: BoxDecoration( 105 | borderRadius: BorderRadius.circular(35), 106 | color: Colors.white, 107 | ), 108 | width: MediaQuery.of(context).size.width, 109 | child: Padding( 110 | padding: const EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 0.0), 111 | child: Column( 112 | mainAxisSize: MainAxisSize.max, 113 | children: [ 114 | Padding( 115 | padding: const EdgeInsets.fromLTRB( 116 | 16.0, 8.0, 16.0, 4.0), 117 | child: Text( 118 | "How we built Flutter app presented at MWC'19 in one month", 119 | style: TextStyle( 120 | fontSize: 22, 121 | fontWeight: FontWeight.w800, 122 | ), 123 | ), 124 | ), 125 | Padding( 126 | padding: const EdgeInsets.fromLTRB( 127 | 16.0, 12.0, 16.0, 4.0), 128 | child: Row( 129 | mainAxisAlignment: 130 | MainAxisAlignment.spaceBetween, 131 | children: [ 132 | Text( 133 | "MEDIUM", 134 | style: TextStyle( 135 | color: Color(0xFF40ACF9), 136 | fontSize: 13, 137 | fontWeight: FontWeight.w500, 138 | ), 139 | ), 140 | Text( 141 | "${DateFormat("MMMM d, yyyy").format(DateTime.parse("2019-06-30T22:49:51.764000+05:30"))}", 142 | style: TextStyle( 143 | color: Color(0xFF545454), 144 | fontSize: 14, 145 | fontWeight: FontWeight.w300, 146 | ), 147 | ), 148 | ], 149 | ), 150 | ), 151 | Padding( 152 | padding: const EdgeInsets.fromLTRB( 153 | 16.0, 16.0, 16.0, 4.0), 154 | child: Column( 155 | children: [ 156 | Text( 157 | "One developer, one month and one Flutter app in production. This is the story of building a Flutter production app in just one month with no prior experience in Flutter or Dart and launching it at Mobile World Congress 2019 in Barcelona.", 158 | style: TextStyle( 159 | color: Color(0xFF545454), 160 | fontSize: 16, 161 | letterSpacing: 0.3, 162 | fontWeight: FontWeight.w300, 163 | ), 164 | textAlign: TextAlign.justify, 165 | ), 166 | SizedBox(height: 25), 167 | Text( 168 | "Some might say it’s crazy, but we say it’s the power of Flutter, a mobile SDK by Google that allows you to build native Android and iOS applications from a single code base. This is the Flutter diary from the perspective of a software engineer at Nevercode. From day one and picking up Flutter to the beautiful native-looking apps in Google Play Store and Apple App Store.", 169 | style: TextStyle( 170 | color: Color(0xFF545454), 171 | fontSize: 16, 172 | letterSpacing: 0.3, 173 | fontWeight: FontWeight.w300, 174 | ), 175 | textAlign: TextAlign.justify), 176 | SizedBox(height: 25), 177 | Text( 178 | "On December 4th at the Flutter Live event held in London, Google announced the release of Flutter 1.0, an open-source mobile toolkit for building native Android and iOS applications from a single code base. At the same event, Nevercode launched its dedicated continuous integration and delivery (CI/CD) tool for Flutter applications named Codemagic.", 179 | style: TextStyle( 180 | color: Color(0xFF545454), 181 | fontSize: 16, 182 | letterSpacing: 0.3, 183 | fontWeight: FontWeight.w300, 184 | ), 185 | textAlign: TextAlign.justify) 186 | ], 187 | ), 188 | ), 189 | ], 190 | ), 191 | ), 192 | ), 193 | ), 194 | ], 195 | ) 196 | ], 197 | ), 198 | ), 199 | ), 200 | ); 201 | } 202 | } 203 | 204 | // Positioned( 205 | // child: Padding( 206 | // padding: const EdgeInsets.all(8.0), 207 | // child: SingleChildScrollView( 208 | // child: Column( 209 | // mainAxisSize: MainAxisSize.max, 210 | // children: [ 211 | // Padding( 212 | // padding: const EdgeInsets.fromLTRB( 213 | // 16.0, 4.0, 16.0, 4.0), 214 | // child: Text( 215 | // "Amber Rudd quits government over Johnson's Brexit stance", 216 | // style: TextStyle( 217 | // fontSize: 20, 218 | // fontWeight: FontWeight.w500, 219 | // ), 220 | // ), 221 | // ), 222 | // Padding( 223 | // padding: const EdgeInsets.fromLTRB( 224 | // 16.0, 4.0, 16.0, 4.0), 225 | // child: Row( 226 | // mainAxisAlignment: 227 | // MainAxisAlignment.spaceBetween, 228 | // children: [ 229 | // Text( 230 | // "GOVERMENT", 231 | // style: TextStyle( 232 | // color: Color(0xFF40ACF9), 233 | // fontSize: 11, 234 | // fontWeight: FontWeight.w300, 235 | // ), 236 | // ), 237 | // Text( 238 | // "September 7th, 2019", 239 | // style: TextStyle( 240 | // color: Color(0xFF545454), 241 | // fontSize: 12, 242 | // fontWeight: FontWeight.w300, 243 | // ), 244 | // ), 245 | // ], 246 | // ), 247 | // ), 248 | // Padding( 249 | // padding: const EdgeInsets.fromLTRB( 250 | // 16.0, 16.0, 16.0, 4.0), 251 | // child: Column( 252 | // children: [ 253 | // Text( 254 | // "Amber Rudd has quit the cabinet and surrendered the Conservative whip saying she cannot stand by while moderate Conservatives are expelled. The work and pensions secretary said she no longer believed leaving the EU with a deal was the government's main objective. ", 255 | // ), 256 | // SizedBox(height: 10), 257 | // Text( 258 | // "Ms Rudd described the sacking of 21 Tory MPs on Tuesday as an assault on decency and democracy. No 10 said it was disappointed by the resignation of a talented minister.But a spokesperson added that all ministers who joined the Cabinet signed up to leaving the EU on 31 October come what may.") 259 | // ], 260 | // ), 261 | // ), 262 | // ], 263 | // ), 264 | // ), 265 | // ), 266 | // ), 267 | -------------------------------------------------------------------------------- /lib/ui/pages/pages.dart: -------------------------------------------------------------------------------- 1 | export 'home.dart'; 2 | export 'news.dart'; 3 | export 'tutorial.dart'; 4 | export 'widget.dart'; 5 | -------------------------------------------------------------------------------- /lib/ui/pages/tutorial.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class TutorialPage extends StatefulWidget { 4 | @override 5 | _TutorialPageState createState() => _TutorialPageState(); 6 | } 7 | 8 | class _TutorialPageState extends State { 9 | @override 10 | Widget build(BuildContext context) { 11 | return Container(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /lib/ui/pages/widget.dart: -------------------------------------------------------------------------------- 1 | import 'package:everything_flutter/constants/theme_data.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:functional_widget_annotation/functional_widget_annotation.dart'; 4 | import 'package:intl/intl.dart'; 5 | 6 | class WidgetPage extends StatelessWidget { 7 | @override 8 | Widget build(BuildContext context) { 9 | return Scaffold( 10 | appBar: myAppBar(context), 11 | body: SingleChildScrollView( 12 | child: Column( 13 | children: [], 14 | ), 15 | ), 16 | ); 17 | } 18 | 19 | @widget 20 | AppBar myAppBar(BuildContext context) => AppBar( 21 | title: _appBarTitle, 22 | leading: IconButton( 23 | icon: Icon(Icons.arrow_back_ios), 24 | onPressed: () { 25 | Navigator.pop(context); 26 | }, 27 | ), 28 | iconTheme: IconThemeData(color: Colors.black), 29 | elevation: 0, 30 | brightness: Brightness.light, 31 | backgroundColor: Colors.grey[50], 32 | ); 33 | 34 | static final _appBarTitle = Align( 35 | alignment: Alignment.centerRight, 36 | child: Text( 37 | "${DateFormat("MMM d, yyyy").format(DateTime.now())}", 38 | style: TextStyles.subtitle, 39 | ), 40 | ); 41 | } 42 | -------------------------------------------------------------------------------- /lib/ui/widgets/menu_card.dart: -------------------------------------------------------------------------------- 1 | import 'package:everything_flutter/constants/app_colors.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | class MenuCard extends StatelessWidget { 5 | final double height; 6 | final double width; 7 | final BorderRadius borderRadius; 8 | final EdgeInsetsGeometry padding; 9 | final EdgeInsetsGeometry margin; 10 | final String imageAsset; 11 | final Color color; 12 | final Widget child; 13 | 14 | const MenuCard({ 15 | Key key, 16 | this.height, 17 | this.width, 18 | this.imageAsset, 19 | this.color, 20 | this.child, 21 | this.borderRadius, 22 | this.padding = const EdgeInsets.all(0), 23 | this.margin = const EdgeInsets.all(0), 24 | }) : super(key: key); 25 | 26 | @override 27 | Widget build(BuildContext context) { 28 | return Container( 29 | height: height, 30 | width: width, 31 | padding: padding, 32 | margin: margin, 33 | decoration: BoxDecoration( 34 | borderRadius: borderRadius, 35 | color: color, 36 | image: DecorationImage( 37 | image: AssetImage(imageAsset), 38 | fit: BoxFit.cover, 39 | colorFilter: ColorFilter.mode( 40 | color, 41 | BlendMode.hardLight, 42 | ), 43 | ), 44 | // boxShadow: [ 45 | // new BoxShadow( 46 | // color: color, 47 | // blurRadius: 12.0, 48 | // spreadRadius: 2 49 | // ), 50 | // ] 51 | ), 52 | child: child, 53 | ); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /lib/ui/widgets/news_item.dart: -------------------------------------------------------------------------------- 1 | import 'package:everything_flutter/constants/text_styles.dart'; 2 | import 'package:everything_flutter/helpers/screen_util.dart'; 3 | import 'package:everything_flutter/helpers/utils.dart'; 4 | import 'package:everything_flutter/model/news.dart'; 5 | import 'package:flutter/material.dart'; 6 | import 'package:timeago/timeago.dart' as timeago; 7 | 8 | class NewsItem extends StatelessWidget { 9 | final News _news; 10 | 11 | NewsItem(this._news); 12 | 13 | @override 14 | Widget build(BuildContext context) { 15 | return GestureDetector( 16 | onTap: () { 17 | Utils.launchURL(_news.link); 18 | }, 19 | child: Padding( 20 | padding: ScreenUtil.getPaddingAll(8.0), 21 | child: Container( 22 | child: Row( 23 | children: [ 24 | Padding( 25 | padding: ScreenUtil.getPaddingAll(5), 26 | child: ClipRRect( 27 | borderRadius: ScreenUtil.getBorderRadiusCircular(10.0), 28 | child: Image.network( 29 | _news.image, 30 | height: ScreenUtil.getHeight(13), 31 | width: ScreenUtil.getWidth(25), 32 | fit: BoxFit.cover, 33 | ), 34 | ), 35 | ), 36 | Expanded( 37 | child: Container( 38 | height: ScreenUtil.getHeight(14), 39 | child: Column( 40 | mainAxisSize: MainAxisSize.max, 41 | crossAxisAlignment: CrossAxisAlignment.start, 42 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 43 | children: [ 44 | Padding( 45 | padding: const EdgeInsets.all(8.0), 46 | child: Text(_news.title, 47 | softWrap: true, 48 | maxLines: 3, 49 | overflow: TextOverflow.ellipsis, 50 | style: TextStyles.cardTitle), 51 | ), 52 | Padding( 53 | padding: const EdgeInsets.all(10.0), 54 | child: Row( 55 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 56 | children: [ 57 | Text( 58 | _news.source.name.toUpperCase(), 59 | style: TextStyles.blueSubtitle, 60 | ), 61 | Text( 62 | timeago.format(_news.time), 63 | style: TextStyles.subtitle, 64 | ), 65 | ], 66 | ), 67 | ), 68 | ], 69 | ), 70 | ), 71 | ), 72 | ], 73 | ), 74 | ), 75 | ), 76 | ); 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /lib/ui/widgets/test.dart: -------------------------------------------------------------------------------- 1 | import 'package:everything_flutter/constants/theme_data.dart'; 2 | import 'package:everything_flutter/helpers/screen_util.dart'; 3 | import 'package:everything_flutter/ui/pages/home.dart'; 4 | import 'package:flutter/material.dart'; 5 | import 'package:drawerbehavior/drawerbehavior.dart'; 6 | import 'package:intl/intl.dart'; 7 | 8 | class Drawer4 extends StatefulWidget { 9 | @override 10 | _Drawer4State createState() => _Drawer4State(); 11 | } 12 | 13 | class _Drawer4State extends State { 14 | final menu = new Menu( 15 | items: [ 16 | new MenuItem( 17 | id: 'restaurant', 18 | title: 'EVENTS', 19 | ), 20 | new MenuItem( 21 | id: 'other1', 22 | title: 'WIDGETS', 23 | ), 24 | new MenuItem( 25 | id: 'other2', 26 | title: 'COMMUNITIES', 27 | ), 28 | new MenuItem( 29 | id: 'other3', 30 | title: 'TUTORIALS', 31 | ), 32 | new MenuItem( 33 | id: 'other4', 34 | title: 'SETTINGS', 35 | ), 36 | ], 37 | ); 38 | 39 | var selectedMenuItemId = 'restaurant'; 40 | var _widget = Text("1"); 41 | 42 | // Widget headerView(BuildContext context) { 43 | // return Column( 44 | // children: [ 45 | // Container( 46 | // padding: EdgeInsets.fromLTRB(16, 12, 16, 0), 47 | // child: Row( 48 | // children: [ 49 | // new Container( 50 | // width: 48.0, 51 | // height: 48.0, 52 | // decoration: new BoxDecoration( 53 | // shape: BoxShape.circle, 54 | // image: new DecorationImage( 55 | // fit: BoxFit.fill, 56 | // image: AssetImage("assets/user1.jpg")))), 57 | // Container( 58 | // margin: EdgeInsets.only(left: 16), 59 | // child: Column( 60 | // mainAxisAlignment: MainAxisAlignment.start, 61 | // crossAxisAlignment: CrossAxisAlignment.start, 62 | // children: [ 63 | // Text( 64 | // "John Witch", 65 | // style: Theme.of(context) 66 | // .textTheme 67 | // .subhead 68 | // .copyWith(color: Colors.white), 69 | // ), 70 | // Text( 71 | // "test123@gmail.com", 72 | // style: Theme.of(context) 73 | // .textTheme 74 | // .subtitle 75 | // .copyWith(color: Colors.white.withAlpha(200)), 76 | // ) 77 | // ], 78 | // )) 79 | // ], 80 | // ), 81 | // ), 82 | // Divider( 83 | // color: Colors.white.withAlpha(200), 84 | // height: 16, 85 | // ) 86 | // ], 87 | // ); 88 | // } 89 | 90 | @override 91 | Widget build(BuildContext context) { 92 | ScreenUtil()..init(context); 93 | return new DrawerScaffold( 94 | showAppBar: true, 95 | percentage: 0.7, 96 | cornerRadius: 30, 97 | appBar: _appBar, 98 | menuView: new MenuView( 99 | menu: menu, 100 | headerView: Container(), 101 | animation: true, 102 | selectorColor: AppColors.BLUE, 103 | // mainAxisAlignment: MainAxisAlignment.start, 104 | color: Colors.black54, 105 | selectedItemId: selectedMenuItemId, 106 | onMenuItemSelected: (String itemId) { 107 | selectedMenuItemId = itemId; 108 | if (itemId == 'restaurant') { 109 | setState(() => _widget = Text("1")); 110 | } else { 111 | setState(() => _widget = Text("default")); 112 | } 113 | }, 114 | ), 115 | contentView: Screen( 116 | contentBuilder: (context) => HomePage(), 117 | color: Colors.white, 118 | ), 119 | contentShadow: [BoxShadow(blurRadius: 50, spreadRadius: 2, color: Colors.white30)], 120 | ); 121 | } 122 | } 123 | 124 | 125 | final _appBar = AppBarProps( 126 | title: _appBarTitle, 127 | iconTheme: IconThemeData(color: Colors.white), 128 | elevation: 0, 129 | brightness: Brightness.light, 130 | // or use Brightness.dark 131 | backgroundColor: Colors.black, 132 | ); 133 | 134 | final _appBarTitle = Align( 135 | alignment: Alignment.centerRight, 136 | child: Text( 137 | "${DateFormat("MMM d, yyyy").format(DateTime.now())}", 138 | style: TextStyles.subtitle, 139 | ), 140 | ); 141 | 142 | -------------------------------------------------------------------------------- /pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | async: 5 | dependency: transitive 6 | description: 7 | name: async 8 | url: "https://pub.dartlang.org" 9 | source: hosted 10 | version: "2.3.0" 11 | bloc: 12 | dependency: "direct main" 13 | description: 14 | name: bloc 15 | url: "https://pub.dartlang.org" 16 | source: hosted 17 | version: "0.15.0" 18 | boolean_selector: 19 | dependency: transitive 20 | description: 21 | name: boolean_selector 22 | url: "https://pub.dartlang.org" 23 | source: hosted 24 | version: "1.0.5" 25 | charcode: 26 | dependency: transitive 27 | description: 28 | name: charcode 29 | url: "https://pub.dartlang.org" 30 | source: hosted 31 | version: "1.1.2" 32 | collection: 33 | dependency: transitive 34 | description: 35 | name: collection 36 | url: "https://pub.dartlang.org" 37 | source: hosted 38 | version: "1.14.11" 39 | cookie_jar: 40 | dependency: transitive 41 | description: 42 | name: cookie_jar 43 | url: "https://pub.dartlang.org" 44 | source: hosted 45 | version: "1.0.1" 46 | cupertino_icons: 47 | dependency: "direct main" 48 | description: 49 | name: cupertino_icons 50 | url: "https://pub.dartlang.org" 51 | source: hosted 52 | version: "0.1.2" 53 | dio: 54 | dependency: "direct main" 55 | description: 56 | name: dio 57 | url: "https://pub.dartlang.org" 58 | source: hosted 59 | version: "2.1.16" 60 | drawerbehavior: 61 | dependency: "direct main" 62 | description: 63 | name: drawerbehavior 64 | url: "https://pub.dartlang.org" 65 | source: hosted 66 | version: "0.0.8" 67 | equatable: 68 | dependency: "direct main" 69 | description: 70 | name: equatable 71 | url: "https://pub.dartlang.org" 72 | source: hosted 73 | version: "0.5.1" 74 | flutter: 75 | dependency: "direct main" 76 | description: flutter 77 | source: sdk 78 | version: "0.0.0" 79 | flutter_bloc: 80 | dependency: "direct main" 81 | description: 82 | name: flutter_bloc 83 | url: "https://pub.dartlang.org" 84 | source: hosted 85 | version: "0.21.0" 86 | flutter_screen_scaler: 87 | dependency: "direct main" 88 | description: 89 | name: flutter_screen_scaler 90 | url: "https://pub.dartlang.org" 91 | source: hosted 92 | version: "2.0.0" 93 | flutter_test: 94 | dependency: "direct dev" 95 | description: flutter 96 | source: sdk 97 | version: "0.0.0" 98 | functional_widget_annotation: 99 | dependency: "direct main" 100 | description: 101 | name: functional_widget_annotation 102 | url: "https://pub.dartlang.org" 103 | source: hosted 104 | version: "0.5.1" 105 | get_it: 106 | dependency: "direct main" 107 | description: 108 | name: get_it 109 | url: "https://pub.dartlang.org" 110 | source: hosted 111 | version: "3.0.0+1" 112 | intl: 113 | dependency: "direct main" 114 | description: 115 | name: intl 116 | url: "https://pub.dartlang.org" 117 | source: hosted 118 | version: "0.16.0" 119 | logger: 120 | dependency: "direct main" 121 | description: 122 | name: logger 123 | url: "https://pub.dartlang.org" 124 | source: hosted 125 | version: "0.7.0+2" 126 | matcher: 127 | dependency: transitive 128 | description: 129 | name: matcher 130 | url: "https://pub.dartlang.org" 131 | source: hosted 132 | version: "0.12.5" 133 | meta: 134 | dependency: transitive 135 | description: 136 | name: meta 137 | url: "https://pub.dartlang.org" 138 | source: hosted 139 | version: "1.1.7" 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 | pedantic: 148 | dependency: transitive 149 | description: 150 | name: pedantic 151 | url: "https://pub.dartlang.org" 152 | source: hosted 153 | version: "1.8.0+1" 154 | provider: 155 | dependency: transitive 156 | description: 157 | name: provider 158 | url: "https://pub.dartlang.org" 159 | source: hosted 160 | version: "3.1.0" 161 | quiver: 162 | dependency: transitive 163 | description: 164 | name: quiver 165 | url: "https://pub.dartlang.org" 166 | source: hosted 167 | version: "2.0.5" 168 | rxdart: 169 | dependency: transitive 170 | description: 171 | name: rxdart 172 | url: "https://pub.dartlang.org" 173 | source: hosted 174 | version: "0.22.2" 175 | sky_engine: 176 | dependency: transitive 177 | description: flutter 178 | source: sdk 179 | version: "0.0.99" 180 | snaplist: 181 | dependency: "direct main" 182 | description: 183 | name: snaplist 184 | url: "https://pub.dartlang.org" 185 | source: hosted 186 | version: "0.1.8" 187 | source_span: 188 | dependency: transitive 189 | description: 190 | name: source_span 191 | url: "https://pub.dartlang.org" 192 | source: hosted 193 | version: "1.5.5" 194 | stack_trace: 195 | dependency: transitive 196 | description: 197 | name: stack_trace 198 | url: "https://pub.dartlang.org" 199 | source: hosted 200 | version: "1.9.3" 201 | stream_channel: 202 | dependency: transitive 203 | description: 204 | name: stream_channel 205 | url: "https://pub.dartlang.org" 206 | source: hosted 207 | version: "2.0.0" 208 | string_scanner: 209 | dependency: transitive 210 | description: 211 | name: string_scanner 212 | url: "https://pub.dartlang.org" 213 | source: hosted 214 | version: "1.0.5" 215 | term_glyph: 216 | dependency: transitive 217 | description: 218 | name: term_glyph 219 | url: "https://pub.dartlang.org" 220 | source: hosted 221 | version: "1.1.0" 222 | test_api: 223 | dependency: transitive 224 | description: 225 | name: test_api 226 | url: "https://pub.dartlang.org" 227 | source: hosted 228 | version: "0.2.5" 229 | timeago: 230 | dependency: "direct main" 231 | description: 232 | name: timeago 233 | url: "https://pub.dartlang.org" 234 | source: hosted 235 | version: "2.0.20" 236 | typed_data: 237 | dependency: transitive 238 | description: 239 | name: typed_data 240 | url: "https://pub.dartlang.org" 241 | source: hosted 242 | version: "1.1.6" 243 | url_launcher: 244 | dependency: "direct main" 245 | description: 246 | name: url_launcher 247 | url: "https://pub.dartlang.org" 248 | source: hosted 249 | version: "5.1.2" 250 | vector_math: 251 | dependency: transitive 252 | description: 253 | name: vector_math 254 | url: "https://pub.dartlang.org" 255 | source: hosted 256 | version: "2.0.8" 257 | sdks: 258 | dart: ">=2.2.2 <3.0.0" 259 | flutter: ">=1.5.0 <2.0.0" 260 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: everything_flutter 2 | description: A new Flutter application. 3 | 4 | # The following defines the version and build number for your application. 5 | # A version number is three numbers separated by dots, like 1.2.43 6 | # followed by an optional build number separated by a +. 7 | # Both the version and the builder number may be overridden in flutter 8 | # build by specifying --build-name and --build-number, respectively. 9 | # In Android, build-name is used as versionName while build-number used as versionCode. 10 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning 11 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. 12 | # Read more about iOS versioning at 13 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html 14 | version: 1.0.0+1 15 | 16 | environment: 17 | sdk: ">=2.1.0 <3.0.0" 18 | 19 | dependencies: 20 | flutter: 21 | sdk: flutter 22 | 23 | # The following adds the Cupertino Icons font to your application. 24 | # Use with the CupertinoIcons class for iOS style icons. 25 | cupertino_icons: ^0.1.2 26 | intl: 27 | timeago: ^2.0.20 28 | flutter_screen_scaler: ^2.0.0 29 | url_launcher: 30 | dio: 31 | get_it: 32 | equatable: 33 | logger: 34 | bloc: 35 | flutter_bloc: 36 | snaplist: ^0.1.8 37 | functional_widget_annotation: ^0.5.1 38 | drawerbehavior: ^0.0.8 39 | 40 | 41 | #builders: 42 | # functional_widget: ^0.7.1 43 | # build_runner: ^1.7.0 44 | 45 | 46 | dev_dependencies: 47 | flutter_test: 48 | sdk: flutter 49 | 50 | # For information on the generic Dart part of this file, see the 51 | # following page: https://dart.dev/tools/pub/pubspec 52 | 53 | # The following section is specific to Flutter. 54 | flutter: 55 | # The following line ensures that the Material Icons font is 56 | # included with your application, so that you can use the icons in 57 | # the material Icons class. 58 | uses-material-design: true 59 | 60 | # To add assets to your application, add an assets section, like this: 61 | assets: 62 | - assets/images/dashboard_community.jpg 63 | - assets/images/dashboard_customize.jpg 64 | - assets/images/dashboard_hero.jpg 65 | - assets/images/dashboard_widgets.jpg 66 | - assets/images/flutter_5.jpg 67 | 68 | # An image asset can refer to one or more resolution-specific "variants", see 69 | # https://flutter.dev/assets-and-images/#resolution-aware. 70 | 71 | # For details regarding adding assets from package dependencies, see 72 | # https://flutter.dev/assets-and-images/#from-packages 73 | 74 | fonts: 75 | - family: CircularStd 76 | fonts: 77 | - asset: assets/fonts/circular_std_book.otf 78 | - asset: assets/fonts/circular_std_book_italic.otf 79 | style: italic 80 | - asset: assets/fonts/circular_std_medium.otf 81 | - asset: assets/fonts/circular_std_medium_italic.otf 82 | - asset: assets/fonts/circular_std_bold.otf 83 | - asset: assets/fonts/circular_std_bold_italic.otf 84 | - asset: assets/fonts/circular_std_black.otf 85 | - asset: assets/fonts/circular_std_black_italic.otf 86 | # To add custom fonts to your application, add a fonts section here, 87 | # in this "flutter" section. Each entry in this list should have a 88 | # "family" key with the font family name, and a "fonts" key with a 89 | # list giving the asset and other descriptors for the font. For 90 | # example: 91 | # fonts: 92 | # - family: Schyler 93 | # fonts: 94 | # - asset: fonts/Schyler-Regular.ttf 95 | # - asset: fonts/Schyler-Italic.ttf 96 | # style: italic 97 | # - family: Trajan Pro 98 | # fonts: 99 | # - asset: fonts/TrajanPro.ttf 100 | # - asset: fonts/TrajanPro_Bold.ttf 101 | # weight: 700 102 | # 103 | # For details regarding fonts from package dependencies, 104 | # see https://flutter.dev/custom-fonts/#from-packages 105 | -------------------------------------------------------------------------------- /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 ui.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:everything_flutter/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 | --------------------------------------------------------------------------------