├── .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 |
--------------------------------------------------------------------------------