├── LICENSE ├── README.md ├── Section 1 ├── 1.7 - first_app.zip ├── 1.9 - first_app.zip ├── 15. Useful Resources and Links.txt ├── 9. Flutter Windows Setup.txt └── Section 1 - Useful Resource Links.txt ├── Section 10 ├── HTTP response status codes.txt ├── What's JSON.txt ├── flutter-web-db-connections.pdf ├── http-01-send-post-without-response.zip ├── http-02-use-post-response.zip ├── http-03-loading-spinner.zip ├── http-04-error-handling.zip ├── http-05-async-await.zip ├── http-06-fetch-get-products.zip ├── http-07-pull-to-refresh.zip ├── http-08-delete-and-optimistic-updating.zip └── input-09-finished.zip ├── Section 11 ├── Avoiding Issues with Provider Package.txt ├── Firebase Security Rules.txt ├── Section 11 - Useful Resource Links.txt ├── auth-01-authscreen.zip ├── auth-02-signup.zip ├── auth-03-login.zip ├── auth-04-error-handling.zip ├── auth-05-using-the-token.zip ├── auth-06-attaching-products-to-users.zip ├── auth-07-logout.zip ├── auth-08-auto-logout.zip ├── auth-09-auto-login.zip ├── auth-10-finished-provider-4.zip ├── auth-10-finished.zip ├── auth-screen.dart ├── how-auth-works.pdf ├── http-10-finished.zip └── splash-screen.dart ├── Section 12 ├── Section 12 - Useful Resource Link.txt ├── animations-01-custom-animation.zip ├── animations-02-animatedbuilder.zip ├── animations-03-animatedcontainer.zip ├── animations-04-more-built-in-animations.zip ├── animations-05-fadeinimage.zip ├── animations-06-hero-and-slivers.zip ├── animations-07-finished.zip ├── auth-10-finished.zip └── product-placeholder.png ├── Section 13 ├── Section 13 - Useful Resource Links.txt ├── great-places-sketch.png ├── main.dart ├── native-01-starting-setup.zip ├── native-02-places-list-and-provider.zip ├── native-03-image-picker.zip ├── native-04-outputting-images.zip ├── native-05-sqflite.zip ├── native-06-location-input-and-location.zip ├── native-07-google-maps-screen.zip ├── native-08-selecting-a-place.zip ├── native-09-storing-location-in-db.zip └── native-10-finished.zip ├── Section 14 ├── 14.5 - Important Flutter Firebase Versions.pdf ├── Adding GoogleServices-Info.plist correctly to iOS.pdf ├── Adding the firebase.pdf ├── ImagePicker.pdf ├── Important Flutter Firebase Versions.pdf ├── MUST READ Firebase Cloud Functions & Billing.pdf ├── Updating to the latest Firebase Package Versions.pdf ├── firebase-01-starting-setup.zip ├── firebase-02-first-flutter-firebase-example.zip ├── firebase-03-added-theme.zip ├── firebase-04-added-auth-form.zip ├── firebase-05-basic-auth-form-submission.zip ├── firebase-06-added-firebase-auth.zip ├── firebase-07-logout.zip ├── firebase-08-messages-widget.zip ├── firebase-09-ordered-messages.zip ├── firebase-10-styled-messages.zip ├── firebase-11-added-username-display.zip ├── firebase-12-added-image-picker.zip ├── firebase-13-image-validation.zip ├── firebase-14-image-upload.zip ├── firebase-15-improved-image-upload.zip ├── firebase-16-display-user-images.zip ├── firebase-17-base-notification-code.zip ├── firebase-18-polishing.zip ├── firebase-19-updated-to-latest-firebase-packages.zip └── firebase-upload-push-notification.pdf ├── Section 15 ├── Section 15 - Useful Resource links.txt ├── Using a Proper Project Setup.txt ├── main.dart ├── native-code-01-starting-setup.zip ├── native-code-02-added-flutter-code.zip ├── native-code-03-android-code.zip ├── native-code-04-ios-code.zip └── native-code-05-finished.zip ├── Section 16 ├── Android Versions.txt ├── Section 16 - Useful Resource links.txt ├── Useful Resources & Links.txt ├── icons.zip ├── splash-ios.zip └── splash.zip ├── Section 17 ├── app-dev-blueprint (1).pdf └── app-dev-blueprint.pdf ├── Section 2 ├── 2.31 - More on Null Safety.txt ├── New Flutter Buttons vs Old Buttons.pdf ├── Section 2 - Useful Resource Links.txt ├── Section 2 - [DART DEEP DIVE] Understanding Lists.pdf ├── Section 2 Quiz.pdf ├── basics-00-starting-project.zip ├── basics-01-building-a-widget-tree.zip ├── basics-02-column-raisedbutton-anonymous-functions.zip ├── basics-03-incorrect-stateless-widget.zip ├── basics-04-stateful-widget-private-properties.zip ├── basics-05-custom-stateless-widget.zip ├── basics-06-added-answer-mapping.zip ├── basics-07-final-const.zip ├── basics-08-added-if-and-ternary-expression (1).zip ├── basics-08-added-if-and-ternary-expression.zip ├── basics-09-splitting-into-widgets.zip ├── basics-10-finished.zip ├── dart-basics-summary.pdf ├── dart-overview-slide.pdf ├── dart-overview.pdf ├── flutter-basics-summary.pdf ├── flutter-old-and-new-buttons.pdf ├── flutter-widget-types-slide.pdf ├── questions.txt ├── widgets-basics-assignment-problem.zip ├── widgets-basics-assignment-solution.zip └── widgets-basics-cheat-sheet.pdf ├── Section 3 ├── Section 3 - Useful Resource links.txt └── debugging-01-finished.zip ├── Section 4 ├── Double Decimal Phase Precision.txt ├── Section 4 Quiz.pdf ├── chart-sketch.png ├── core-widgets-cheat-sheet.pdf ├── fonts.zip ├── image.zip ├── main.dart ├── real-apps-01-starting-setup.zip ├── real-apps-02-card-with-container.zip ├── real-apps-03-column-alignment.zip ├── real-apps-04-list-of-transaction-cards.zip ├── real-apps-05-textfields-and-button.zip ├── real-apps-06-user-input-on-every-keystroke.zip ├── real-apps-07-using-texteditingcontroller.zip ├── real-apps-08-add-transaction-flow.zip ├── real-apps-09-scrollable-column.zip ├── real-apps-10-listview-children.zip ├── real-apps-11-listview-builder.zip ├── real-apps-12-modal-sheet.zip ├── real-apps-13-added-theming.zip ├── real-apps-14-added-fonts-and-images.zip ├── real-apps-15-chart-and-chartbars.zip ├── real-apps-16-added-listtile.zip ├── real-apps-17-date-input-and-picker.zip ├── real-apps-18-finished.zip ├── rows-columns-cheat-sheet.pdf ├── widget-playground-finished.zip └── widget-playground-start.zip ├── Section 5 ├── An improved Modal Bottom Sheet.txt ├── Section 5 - Useful Resource links.txt ├── Section 5 Quiz.pdf ├── resp-01-dynamically-calculated-widgets.zip ├── resp-02-different-uis-based-on-orientation.zip ├── resp-03-respect-keyboard.zip ├── resp-04-width-check-in-condition.zip ├── resp-05-adaptive-widget-and-platform-check.zip ├── resp-06-cupertino-widgets.zip ├── resp-07-finished.zip └── responsive-adaptive.pdf ├── Section 6 ├── Inside Flutter - Official Docs.txt ├── More on Initializers list.txt ├── More on Keys in Flutter.txt ├── Section 6 - Useful Resource links.txt ├── Section 6 Quiz.pdf ├── app-lifecycle.pdf ├── context.pdf ├── deep-dive-01-flutter-build-const.zip ├── deep-dive-02-builder-methods.zip ├── deep-dive-03-widget-lifecycle.zip ├── deep-dive-04-app-lifecycle.zip ├── deep-dive-05-finished.zip ├── deep-dive-assignment-solution.zip ├── listview-keys.png ├── widget-and-element-tree.pdf ├── widget-element-tree.png └── widget-lifecycle.pdf ├── Section 7 ├── Section 7 - Useful Resource Links.txt ├── Section 7 Quiz.pdf ├── dummy-data (1).dart ├── dummy-data.dart ├── fonts.zip ├── how-navigation-works.pdf ├── meals-app-sketch.png ├── nav-01-starting-setup.zip ├── nav-02-categories-and-categories-screen.zip ├── nav-03-theme-and-font.zip ├── nav-04-pushing-and-passing-data.zip ├── nav-05-named-routes-and-args.zip ├── nav-06-finished-meal-items.zip ├── nav-07-navigation-to-detail-page.zip ├── nav-08-recipe-detail-page.zip ├── nav-09-appbar-tabs.zip ├── nav-10-bottom-tabs.zip ├── nav-11-drawer.zip ├── nav-12-replacing-screens.zip ├── nav-13-passing-data-back.zip └── nav-14-finished.zip ├── Section 8 ├── Providing Non Objects.txt ├── Section 8 - Important Reference links.txt ├── Section 8 Quiz.pdf ├── Using the Right Provider Package Version.txt ├── badge.dart ├── fonts.zip ├── nav-14-finished.zip ├── products.txt ├── provider-package.pdf ├── shop-app-sketch.png ├── state-01-starting-setup.zip ├── state-02-detail-screen.zip ├── state-03-provider-package.zip ├── state-04-provider-with-single-product.zip ├── state-05-consumer-and-alternative-syntaxes.zip ├── state-06-stateful-widget.zip ├── state-07-cart-badge-and-connected-model.zip ├── state-08-product-detail-page.zip ├── state-09-orders-screen.zip ├── state-10-finished.zip ├── state-10b-finished-provider-4.zip └── state-and-state-management.pdf ├── Section 9 ├── (Optional)Working with regular Expressions.txt ├── ListView or Column.txt ├── Section 9 - Useful Resource Link.txt ├── Using ScaffoldMessenger for SnackBars.pdf ├── input-01-snackbar.zip ├── input-02-showdialog.zip ├── input-03-empty-edit-product-screen.zip ├── input-04-managing-focus.zip ├── input-05-description-field.zip ├── input-06-image-input.zip ├── input-07-submit-form.zip ├── input-08-validation.zip └── input-09-finished.zip └── section 10 ├── Section 10 - Useful Resource links.txt ├── Section 10 Quiz.pdf ├── http-09-fav-status-and-orders.zip └── http-10-finished.zip /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Packt 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ## [Get this title for $10 on Packt's Spring Sale](https://www.packt.com/V12973?utm_source=github&utm_medium=packt-github-repo&utm_campaign=spring_10_dollar_2022) 5 | ----- 6 | For a limited period, all eBooks and Videos are only $10. All the practical content you need \- by developers, for developers 7 | 8 | # Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps 9 | Learn Flutter and Dart to Build iOS and Android Apps, published by Packt 10 | # Learn Flutter and Dart to Build iOS and Android Apps 11 | This is the code repository for [Learn Flutter and Dart to Build iOS and Android Apps](https://www.packtpub.com/application-development/working-maps-and-locations-ios-apps?utm_source=github&utm_medium=repository&utm_campaign=9781788296809), published by [Packt](https://www.packtpub.com/?utm_source=github). It contains all the supporting project files necessary to work through the video course from start to finish. 12 | ## About the Video Course 13 | You don't need to learn Android/ Java and iOS/ Swift to build real native mobile apps! Flutter—a framework developed by Google—allows you to learn one language (Dart) and build beautiful native mobile apps in no time. Flutter is a SDK that provides the tooling to compile Dart code into native code, and it also gives you a rich set of pre-built and pre-styled UI elements (so called widgets) you can use to compose your user interfaces. Flutter is trending, and gets used for major Google apps such as Adwords. It's now marked as "ready for production" so now is the time to jump in and learn it! 14 | This course will teach you Flutter and Dart from scratch. With Flutter, you'll be able to write code only once and ship your apps both to the Apple AppStore and Google Play. Use Google's Material Design to build beautiful yet fully customizable apps in no time with almost zero effort. You can use the rich widget suite Flutter provides to add common UI elements such as buttons, switches, forms, toolbars, lists, and more—or simply build your own widgets—Flutter makes that a breeze too. You're interested in building real native mobile apps for the two most popular mobile platforms - iOS and Android. You want to explore the full set of features Flutter offers. Don't want to spend hours learning two completely different languages 15 | All the code and supporting files for this course are available at: https://github.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps 16 | 17 |

What You Will Learn

18 |
19 |
28 | 29 | ## Instructions and Navigation 30 | ### Assumed Knowledge 31 | To fully benefit from the coverage included in this course, you will need:
32 | This course is for beginners and experienced developers who are interested in diving into mobile app development using one language for both platforms. It’s also ideal for experienced iOS or Android developers who want to build cross-platform (iOS + Android) apps with one single programming language. No prior knowledge of either is required! You certainly don't need any Android or iOS development experience either, since the whole idea behind Flutter is to only learn one language. 33 | 34 | 35 | ## Related Products 36 | * [Working with Tables and Data on iOS [Video]](https://www.packtpub.com/application-development/working-maps-and-locations-ios-apps?utm_source=github&utm_medium=repository&utm_campaign=9781788296809) 37 | 38 | * [Serverless Deep Learning with TensorFlow and AWS Lambda [Video]](https://www.packtpub.com/application-development/working-maps-and-locations-ios-apps?utm_source=github&utm_medium=repository&utm_campaign=9781788296809) 39 | 40 | * [Working with Maps and Locations in iOS Apps](https://www.packtpub.com/application-development/working-maps-and-locations-ios-apps?utm_source=github&utm_medium=repository&utm_campaign=9781788296809) 41 | 42 | -------------------------------------------------------------------------------- /Section 1/1.7 - first_app.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 1/1.7 - first_app.zip -------------------------------------------------------------------------------- /Section 1/1.9 - first_app.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 1/1.9 - first_app.zip -------------------------------------------------------------------------------- /Section 1/15. Useful Resources and Links.txt: -------------------------------------------------------------------------------- 1 | Useful Resources & Links 2 | Official Flutter Docs: https://flutter.io/docs/ 3 | macOS Setup Guide: https://flutter.io/setup-macos 4 | Windows Setup Guide: https://flutter.io/setup-windows 5 | Linux Setup Guide: https://flutter.io/setup-linux 6 | Visual Studio Code: https://code.visualstudio.com/ 7 | Visual Studio Code Flutter Extension: https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter 8 | Android Studio: https://developer.android.com/studio/ -------------------------------------------------------------------------------- /Section 1/9. Flutter Windows Setup.txt: -------------------------------------------------------------------------------- 1 | https://flutter.dev/docs/development/tools/sdk/releases?tab=windows -------------------------------------------------------------------------------- /Section 1/Section 1 - Useful Resource Links.txt: -------------------------------------------------------------------------------- 1 | Useful Resources & Links 2 | 3 | Official Flutter Docs: https://flutter.io/docs/ 4 | macOS Setup Guide: https://flutter.io/setup-macos 5 | Windows Setup Guide: https://flutter.io/setup-windows 6 | Windows SDK Download: https://flutter.dev/docs/development/tools/sdk/releases?tab=windows 7 | Linux Setup Guide: https://flutter.io/setup-linux 8 | Visual Studio Code: https://code.visualstudio.com/ 9 | Visual Studio Code Flutter Extension: https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter 10 | Android Studio: https://developer.android.com/studio/ -------------------------------------------------------------------------------- /Section 10/HTTP response status codes.txt: -------------------------------------------------------------------------------- 1 | https://developer.mozilla.org/en-US/docs/Web/HTTP/Status -------------------------------------------------------------------------------- /Section 10/What's JSON.txt: -------------------------------------------------------------------------------- 1 | https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON -------------------------------------------------------------------------------- /Section 10/flutter-web-db-connections.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 10/flutter-web-db-connections.pdf -------------------------------------------------------------------------------- /Section 10/http-01-send-post-without-response.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 10/http-01-send-post-without-response.zip -------------------------------------------------------------------------------- /Section 10/http-02-use-post-response.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 10/http-02-use-post-response.zip -------------------------------------------------------------------------------- /Section 10/http-03-loading-spinner.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 10/http-03-loading-spinner.zip -------------------------------------------------------------------------------- /Section 10/http-04-error-handling.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 10/http-04-error-handling.zip -------------------------------------------------------------------------------- /Section 10/http-05-async-await.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 10/http-05-async-await.zip -------------------------------------------------------------------------------- /Section 10/http-06-fetch-get-products.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 10/http-06-fetch-get-products.zip -------------------------------------------------------------------------------- /Section 10/http-07-pull-to-refresh.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 10/http-07-pull-to-refresh.zip -------------------------------------------------------------------------------- /Section 10/http-08-delete-and-optimistic-updating.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 10/http-08-delete-and-optimistic-updating.zip -------------------------------------------------------------------------------- /Section 10/input-09-finished.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 10/input-09-finished.zip -------------------------------------------------------------------------------- /Section 11/Avoiding Issues with Provider Package.txt: -------------------------------------------------------------------------------- 1 | Avoiding Issues with Provider Package 2 | In the next lecture, we'll use a new type of provider - at the moment, it seems to be broken (or there was an undocumented change) though. 3 | 4 | So if you're facing any issues with the code 5 | 6 | Simply change 7 | 8 | provider: ^3.0.0 9 | in the pubspec.yaml file 10 | 11 | to just 12 | 13 | provider: 3.0.0 14 | and re-run flutter packages get (if it doesn't run automatically). 15 | 16 | NO disadvantages will occur because of that, no worries. -------------------------------------------------------------------------------- /Section 11/Firebase Security Rules.txt: -------------------------------------------------------------------------------- 1 | https://firebase.google.com/docs/database/security -------------------------------------------------------------------------------- /Section 11/Section 11 - Useful Resource Links.txt: -------------------------------------------------------------------------------- 1 | The following resources might be helpful: 2 | 3 | More on JSON Web Tokens - the Tokens we’re using here: http://jwt.io 4 | Firebase Auth REST API: https://firebase.google.com/docs/reference/rest/auth -------------------------------------------------------------------------------- /Section 11/auth-01-authscreen.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 11/auth-01-authscreen.zip -------------------------------------------------------------------------------- /Section 11/auth-02-signup.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 11/auth-02-signup.zip -------------------------------------------------------------------------------- /Section 11/auth-03-login.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 11/auth-03-login.zip -------------------------------------------------------------------------------- /Section 11/auth-04-error-handling.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 11/auth-04-error-handling.zip -------------------------------------------------------------------------------- /Section 11/auth-05-using-the-token.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 11/auth-05-using-the-token.zip -------------------------------------------------------------------------------- /Section 11/auth-06-attaching-products-to-users.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 11/auth-06-attaching-products-to-users.zip -------------------------------------------------------------------------------- /Section 11/auth-07-logout.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 11/auth-07-logout.zip -------------------------------------------------------------------------------- /Section 11/auth-08-auto-logout.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 11/auth-08-auto-logout.zip -------------------------------------------------------------------------------- /Section 11/auth-09-auto-login.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 11/auth-09-auto-login.zip -------------------------------------------------------------------------------- /Section 11/auth-10-finished-provider-4.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 11/auth-10-finished-provider-4.zip -------------------------------------------------------------------------------- /Section 11/auth-10-finished.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 11/auth-10-finished.zip -------------------------------------------------------------------------------- /Section 11/auth-screen.dart: -------------------------------------------------------------------------------- 1 | import 'dart:math'; 2 | 3 | import 'package:flutter/material.dart'; 4 | 5 | enum AuthMode { Signup, Login } 6 | 7 | class AuthScreen extends StatelessWidget { 8 | static const routeName = '/auth'; 9 | 10 | @override 11 | Widget build(BuildContext context) { 12 | final deviceSize = MediaQuery.of(context).size; 13 | // final transformConfig = Matrix4.rotationZ(-8 * pi / 180); 14 | // transformConfig.translate(-10.0); 15 | return Scaffold( 16 | // resizeToAvoidBottomInset: false, 17 | body: Stack( 18 | children: [ 19 | Container( 20 | decoration: BoxDecoration( 21 | gradient: LinearGradient( 22 | colors: [ 23 | Color.fromRGBO(215, 117, 255, 1).withOpacity(0.5), 24 | Color.fromRGBO(255, 188, 117, 1).withOpacity(0.9), 25 | ], 26 | begin: Alignment.topLeft, 27 | end: Alignment.bottomRight, 28 | stops: [0, 1], 29 | ), 30 | ), 31 | ), 32 | SingleChildScrollView( 33 | child: Container( 34 | height: deviceSize.height, 35 | width: deviceSize.width, 36 | child: Column( 37 | mainAxisAlignment: MainAxisAlignment.center, 38 | crossAxisAlignment: CrossAxisAlignment.center, 39 | children: [ 40 | Flexible( 41 | child: Container( 42 | margin: EdgeInsets.only(bottom: 20.0), 43 | padding: 44 | EdgeInsets.symmetric(vertical: 8.0, horizontal: 94.0), 45 | transform: Matrix4.rotationZ(-8 * pi / 180) 46 | ..translate(-10.0), 47 | // ..translate(-10.0), 48 | decoration: BoxDecoration( 49 | borderRadius: BorderRadius.circular(20), 50 | color: Colors.deepOrange.shade900, 51 | boxShadow: [ 52 | BoxShadow( 53 | blurRadius: 8, 54 | color: Colors.black26, 55 | offset: Offset(0, 2), 56 | ) 57 | ], 58 | ), 59 | child: Text( 60 | 'MyShop', 61 | style: TextStyle( 62 | color: Theme.of(context).accentTextTheme.title.color, 63 | fontSize: 50, 64 | fontFamily: 'Anton', 65 | fontWeight: FontWeight.normal, 66 | ), 67 | ), 68 | ), 69 | ), 70 | Flexible( 71 | flex: deviceSize.width > 600 ? 2 : 1, 72 | child: AuthCard(), 73 | ), 74 | ], 75 | ), 76 | ), 77 | ), 78 | ], 79 | ), 80 | ); 81 | } 82 | } 83 | 84 | class AuthCard extends StatefulWidget { 85 | const AuthCard({ 86 | Key key, 87 | }) : super(key: key); 88 | 89 | @override 90 | _AuthCardState createState() => _AuthCardState(); 91 | } 92 | 93 | class _AuthCardState extends State { 94 | final GlobalKey _formKey = GlobalKey(); 95 | AuthMode _authMode = AuthMode.Login; 96 | Map _authData = { 97 | 'email': '', 98 | 'password': '', 99 | }; 100 | var _isLoading = false; 101 | final _passwordController = TextEditingController(); 102 | 103 | void _submit() { 104 | if (!_formKey.currentState.validate()) { 105 | // Invalid! 106 | return; 107 | } 108 | _formKey.currentState.save(); 109 | setState(() { 110 | _isLoading = true; 111 | }); 112 | if (_authMode == AuthMode.Login) { 113 | // Log user in 114 | } else { 115 | // Sign user up 116 | } 117 | setState(() { 118 | _isLoading = false; 119 | }); 120 | } 121 | 122 | void _switchAuthMode() { 123 | if (_authMode == AuthMode.Login) { 124 | setState(() { 125 | _authMode = AuthMode.Signup; 126 | }); 127 | } else { 128 | setState(() { 129 | _authMode = AuthMode.Login; 130 | }); 131 | } 132 | } 133 | 134 | @override 135 | Widget build(BuildContext context) { 136 | final deviceSize = MediaQuery.of(context).size; 137 | return Card( 138 | shape: RoundedRectangleBorder( 139 | borderRadius: BorderRadius.circular(10.0), 140 | ), 141 | elevation: 8.0, 142 | child: Container( 143 | height: _authMode == AuthMode.Signup ? 320 : 260, 144 | constraints: 145 | BoxConstraints(minHeight: _authMode == AuthMode.Signup ? 320 : 260), 146 | width: deviceSize.width * 0.75, 147 | padding: EdgeInsets.all(16.0), 148 | child: Form( 149 | key: _formKey, 150 | child: SingleChildScrollView( 151 | child: Column( 152 | children: [ 153 | TextFormField( 154 | decoration: InputDecoration(labelText: 'E-Mail'), 155 | keyboardType: TextInputType.emailAddress, 156 | validator: (value) { 157 | if (value.isEmpty || !value.contains('@')) { 158 | return 'Invalid email!'; 159 | } 160 | }, 161 | onSaved: (value) { 162 | _authData['email'] = value; 163 | }, 164 | ), 165 | TextFormField( 166 | decoration: InputDecoration(labelText: 'Password'), 167 | obscureText: true, 168 | controller: _passwordController, 169 | validator: (value) { 170 | if (value.isEmpty || value.length < 5) { 171 | return 'Password is too short!'; 172 | } 173 | }, 174 | onSaved: (value) { 175 | _authData['password'] = value; 176 | }, 177 | ), 178 | if (_authMode == AuthMode.Signup) 179 | TextFormField( 180 | enabled: _authMode == AuthMode.Signup, 181 | decoration: InputDecoration(labelText: 'Confirm Password'), 182 | obscureText: true, 183 | validator: _authMode == AuthMode.Signup 184 | ? (value) { 185 | if (value != _passwordController.text) { 186 | return 'Passwords do not match!'; 187 | } 188 | } 189 | : null, 190 | ), 191 | SizedBox( 192 | height: 20, 193 | ), 194 | if (_isLoading) 195 | CircularProgressIndicator() 196 | else 197 | RaisedButton( 198 | child: 199 | Text(_authMode == AuthMode.Login ? 'LOGIN' : 'SIGN UP'), 200 | onPressed: _submit, 201 | shape: RoundedRectangleBorder( 202 | borderRadius: BorderRadius.circular(30), 203 | ), 204 | padding: 205 | EdgeInsets.symmetric(horizontal: 30.0, vertical: 8.0), 206 | color: Theme.of(context).primaryColor, 207 | textColor: Theme.of(context).primaryTextTheme.button.color, 208 | ), 209 | FlatButton( 210 | child: Text( 211 | '${_authMode == AuthMode.Login ? 'SIGNUP' : 'LOGIN'} INSTEAD'), 212 | onPressed: _switchAuthMode, 213 | padding: EdgeInsets.symmetric(horizontal: 30.0, vertical: 4), 214 | materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, 215 | textColor: Theme.of(context).primaryColor, 216 | ), 217 | ], 218 | ), 219 | ), 220 | ), 221 | ), 222 | ); 223 | } 224 | } 225 | -------------------------------------------------------------------------------- /Section 11/how-auth-works.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 11/how-auth-works.pdf -------------------------------------------------------------------------------- /Section 11/http-10-finished.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 11/http-10-finished.zip -------------------------------------------------------------------------------- /Section 11/splash-screen.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class SplashScreen extends StatelessWidget { 4 | @override 5 | Widget build(BuildContext context) { 6 | return Scaffold( 7 | body: Center( 8 | child: Text('Loading...'), 9 | ), 10 | ); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Section 12/Section 12 - Useful Resource Link.txt: -------------------------------------------------------------------------------- 1 | The following resources might be helpful: 2 | 3 | Official Animation Docs: https://flutter.dev/docs/development/ui/animations 4 | -------------------------------------------------------------------------------- /Section 12/animations-01-custom-animation.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 12/animations-01-custom-animation.zip -------------------------------------------------------------------------------- /Section 12/animations-02-animatedbuilder.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 12/animations-02-animatedbuilder.zip -------------------------------------------------------------------------------- /Section 12/animations-03-animatedcontainer.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 12/animations-03-animatedcontainer.zip -------------------------------------------------------------------------------- /Section 12/animations-04-more-built-in-animations.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 12/animations-04-more-built-in-animations.zip -------------------------------------------------------------------------------- /Section 12/animations-05-fadeinimage.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 12/animations-05-fadeinimage.zip -------------------------------------------------------------------------------- /Section 12/animations-06-hero-and-slivers.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 12/animations-06-hero-and-slivers.zip -------------------------------------------------------------------------------- /Section 12/animations-07-finished.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 12/animations-07-finished.zip -------------------------------------------------------------------------------- /Section 12/auth-10-finished.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 12/auth-10-finished.zip -------------------------------------------------------------------------------- /Section 12/product-placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 12/product-placeholder.png -------------------------------------------------------------------------------- /Section 13/Section 13 - Useful Resource Links.txt: -------------------------------------------------------------------------------- 1 | The following resources might be helpful: 2 | 3 | Image Picker Package: https://pub.dev/packages/image_picker 4 | Location Package: https://pub.dev/packages/location 5 | Path Provider Package: https://pub.dev/packages/path_provider 6 | Path Package: https://pub.dev/packages/path 7 | Google Maps Package: https://pub.dev/packages/google_maps_flutter 8 | SQFLite Package: https://pub.dev/packages/sqflite 9 | -------------------------------------------------------------------------------- /Section 13/great-places-sketch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 13/great-places-sketch.png -------------------------------------------------------------------------------- /Section 13/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | void main() => runApp(MyApp()); 4 | 5 | class MyApp extends StatelessWidget { 6 | @override 7 | Widget build(BuildContext context) { 8 | return MaterialApp( 9 | title: 'Great Places', 10 | theme: ThemeData( 11 | primarySwatch: Colors.indigo, 12 | accentColor: Colors.amber, 13 | ), 14 | home: ..., 15 | ); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Section 13/native-01-starting-setup.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 13/native-01-starting-setup.zip -------------------------------------------------------------------------------- /Section 13/native-02-places-list-and-provider.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 13/native-02-places-list-and-provider.zip -------------------------------------------------------------------------------- /Section 13/native-03-image-picker.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 13/native-03-image-picker.zip -------------------------------------------------------------------------------- /Section 13/native-04-outputting-images.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 13/native-04-outputting-images.zip -------------------------------------------------------------------------------- /Section 13/native-05-sqflite.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 13/native-05-sqflite.zip -------------------------------------------------------------------------------- /Section 13/native-06-location-input-and-location.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 13/native-06-location-input-and-location.zip -------------------------------------------------------------------------------- /Section 13/native-07-google-maps-screen.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 13/native-07-google-maps-screen.zip -------------------------------------------------------------------------------- /Section 13/native-08-selecting-a-place.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 13/native-08-selecting-a-place.zip -------------------------------------------------------------------------------- /Section 13/native-09-storing-location-in-db.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 13/native-09-storing-location-in-db.zip -------------------------------------------------------------------------------- /Section 13/native-10-finished.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 13/native-10-finished.zip -------------------------------------------------------------------------------- /Section 14/14.5 - Important Flutter Firebase Versions.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/14.5 - Important Flutter Firebase Versions.pdf -------------------------------------------------------------------------------- /Section 14/Adding GoogleServices-Info.plist correctly to iOS.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/Adding GoogleServices-Info.plist correctly to iOS.pdf -------------------------------------------------------------------------------- /Section 14/Adding the firebase.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/Adding the firebase.pdf -------------------------------------------------------------------------------- /Section 14/ImagePicker.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/ImagePicker.pdf -------------------------------------------------------------------------------- /Section 14/Important Flutter Firebase Versions.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/Important Flutter Firebase Versions.pdf -------------------------------------------------------------------------------- /Section 14/MUST READ Firebase Cloud Functions & Billing.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/MUST READ Firebase Cloud Functions & Billing.pdf -------------------------------------------------------------------------------- /Section 14/Updating to the latest Firebase Package Versions.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/Updating to the latest Firebase Package Versions.pdf -------------------------------------------------------------------------------- /Section 14/firebase-01-starting-setup.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/firebase-01-starting-setup.zip -------------------------------------------------------------------------------- /Section 14/firebase-02-first-flutter-firebase-example.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/firebase-02-first-flutter-firebase-example.zip -------------------------------------------------------------------------------- /Section 14/firebase-03-added-theme.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/firebase-03-added-theme.zip -------------------------------------------------------------------------------- /Section 14/firebase-04-added-auth-form.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/firebase-04-added-auth-form.zip -------------------------------------------------------------------------------- /Section 14/firebase-05-basic-auth-form-submission.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/firebase-05-basic-auth-form-submission.zip -------------------------------------------------------------------------------- /Section 14/firebase-06-added-firebase-auth.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/firebase-06-added-firebase-auth.zip -------------------------------------------------------------------------------- /Section 14/firebase-07-logout.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/firebase-07-logout.zip -------------------------------------------------------------------------------- /Section 14/firebase-08-messages-widget.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/firebase-08-messages-widget.zip -------------------------------------------------------------------------------- /Section 14/firebase-09-ordered-messages.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/firebase-09-ordered-messages.zip -------------------------------------------------------------------------------- /Section 14/firebase-10-styled-messages.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/firebase-10-styled-messages.zip -------------------------------------------------------------------------------- /Section 14/firebase-11-added-username-display.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/firebase-11-added-username-display.zip -------------------------------------------------------------------------------- /Section 14/firebase-12-added-image-picker.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/firebase-12-added-image-picker.zip -------------------------------------------------------------------------------- /Section 14/firebase-13-image-validation.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/firebase-13-image-validation.zip -------------------------------------------------------------------------------- /Section 14/firebase-14-image-upload.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/firebase-14-image-upload.zip -------------------------------------------------------------------------------- /Section 14/firebase-15-improved-image-upload.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/firebase-15-improved-image-upload.zip -------------------------------------------------------------------------------- /Section 14/firebase-16-display-user-images.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/firebase-16-display-user-images.zip -------------------------------------------------------------------------------- /Section 14/firebase-17-base-notification-code.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/firebase-17-base-notification-code.zip -------------------------------------------------------------------------------- /Section 14/firebase-18-polishing.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/firebase-18-polishing.zip -------------------------------------------------------------------------------- /Section 14/firebase-19-updated-to-latest-firebase-packages.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/firebase-19-updated-to-latest-firebase-packages.zip -------------------------------------------------------------------------------- /Section 14/firebase-upload-push-notification.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 14/firebase-upload-push-notification.pdf -------------------------------------------------------------------------------- /Section 15/Section 15 - Useful Resource links.txt: -------------------------------------------------------------------------------- 1 | The following resources might be helpful: 2 | 3 | Writing Custom Native Code (Official Docs): https://flutter.dev/docs/development/platform-integration/platform-channels -------------------------------------------------------------------------------- /Section 15/Using a Proper Project Setup.txt: -------------------------------------------------------------------------------- 1 | Using a Proper Project Setup 2 | Depending on the version of the Flutter SDK you're using, the project you're working on might not have all files you need to follow along in this module. 3 | 4 | Make sure you create a project with the following command to get all those files: 5 | 6 | flutter create -i objc -a java myapp 7 | Otherwise, you might be missing crucial iOS and/ or Android files we'll write code in, in this module. -------------------------------------------------------------------------------- /Section 15/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | void main() => runApp(MyApp()); 4 | 5 | class MyApp extends StatelessWidget { 6 | // This widget is the root of your application. 7 | @override 8 | Widget build(BuildContext context) { 9 | return MaterialApp( 10 | title: 'Native Code', 11 | theme: ThemeData( 12 | primarySwatch: Colors.blue, 13 | ), 14 | home: MyHomePage(), 15 | ); 16 | } 17 | } 18 | 19 | class MyHomePage extends StatefulWidget { 20 | @override 21 | _MyHomePageState createState() => _MyHomePageState(); 22 | } 23 | 24 | class _MyHomePageState extends State { 25 | @override 26 | Widget build(BuildContext context) { 27 | return Scaffold( 28 | appBar: AppBar( 29 | title: Text('Native Code'), 30 | ), 31 | body: Center( 32 | child: Text('Battery Level: ...'), 33 | ), 34 | ); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Section 15/native-code-01-starting-setup.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 15/native-code-01-starting-setup.zip -------------------------------------------------------------------------------- /Section 15/native-code-02-added-flutter-code.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 15/native-code-02-added-flutter-code.zip -------------------------------------------------------------------------------- /Section 15/native-code-03-android-code.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 15/native-code-03-android-code.zip -------------------------------------------------------------------------------- /Section 15/native-code-04-ios-code.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 15/native-code-04-ios-code.zip -------------------------------------------------------------------------------- /Section 15/native-code-05-finished.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 15/native-code-05-finished.zip -------------------------------------------------------------------------------- /Section 16/Android Versions.txt: -------------------------------------------------------------------------------- 1 | https://developer.android.com/studio/publish/versioning -------------------------------------------------------------------------------- /Section 16/Section 16 - Useful Resource links.txt: -------------------------------------------------------------------------------- 1 | Useful Resources & Links 2 | Official Docs for Android Publishing: https://flutter.dev/docs/deployment/android 3 | Official Docs for iOS Publishing: https://flutter.dev/docs/deployment/ios -------------------------------------------------------------------------------- /Section 16/Useful Resources & Links.txt: -------------------------------------------------------------------------------- 1 | Useful Resources & Links 2 | Official Docs for Android Publishing: https://flutter.dev/docs/deployment/android 3 | Official Docs for iOS Publishing: https://flutter.dev/docs/deployment/ios -------------------------------------------------------------------------------- /Section 16/icons.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 16/icons.zip -------------------------------------------------------------------------------- /Section 16/splash-ios.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 16/splash-ios.zip -------------------------------------------------------------------------------- /Section 16/splash.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 16/splash.zip -------------------------------------------------------------------------------- /Section 17/app-dev-blueprint (1).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 17/app-dev-blueprint (1).pdf -------------------------------------------------------------------------------- /Section 17/app-dev-blueprint.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 17/app-dev-blueprint.pdf -------------------------------------------------------------------------------- /Section 2/2.31 - More on Null Safety.txt: -------------------------------------------------------------------------------- 1 | https://dart.dev/null-safety/understanding-null-safety -------------------------------------------------------------------------------- /Section 2/New Flutter Buttons vs Old Buttons.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/New Flutter Buttons vs Old Buttons.pdf -------------------------------------------------------------------------------- /Section 2/Section 2 - Useful Resource Links.txt: -------------------------------------------------------------------------------- 1 | The following resources might be helpful: 2 | 3 | Official Docs: https://flutter.dev/docs 4 | Widget Catalog: https://flutter.dev/docs/development/ui/widgets 5 | Dart Docs: https://dart.dev/guides/language/language-tour 6 | “Introduction to Widgets” - Official Docs: https://flutter.dev/docs/development/ui/widgets-intro -------------------------------------------------------------------------------- /Section 2/Section 2 - [DART DEEP DIVE] Understanding Lists.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/Section 2 - [DART DEEP DIVE] Understanding Lists.pdf -------------------------------------------------------------------------------- /Section 2/Section 2 Quiz.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/Section 2 Quiz.pdf -------------------------------------------------------------------------------- /Section 2/basics-00-starting-project.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/basics-00-starting-project.zip -------------------------------------------------------------------------------- /Section 2/basics-01-building-a-widget-tree.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/basics-01-building-a-widget-tree.zip -------------------------------------------------------------------------------- /Section 2/basics-02-column-raisedbutton-anonymous-functions.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/basics-02-column-raisedbutton-anonymous-functions.zip -------------------------------------------------------------------------------- /Section 2/basics-03-incorrect-stateless-widget.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/basics-03-incorrect-stateless-widget.zip -------------------------------------------------------------------------------- /Section 2/basics-04-stateful-widget-private-properties.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/basics-04-stateful-widget-private-properties.zip -------------------------------------------------------------------------------- /Section 2/basics-05-custom-stateless-widget.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/basics-05-custom-stateless-widget.zip -------------------------------------------------------------------------------- /Section 2/basics-06-added-answer-mapping.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/basics-06-added-answer-mapping.zip -------------------------------------------------------------------------------- /Section 2/basics-07-final-const.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/basics-07-final-const.zip -------------------------------------------------------------------------------- /Section 2/basics-08-added-if-and-ternary-expression (1).zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/basics-08-added-if-and-ternary-expression (1).zip -------------------------------------------------------------------------------- /Section 2/basics-08-added-if-and-ternary-expression.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/basics-08-added-if-and-ternary-expression.zip -------------------------------------------------------------------------------- /Section 2/basics-09-splitting-into-widgets.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/basics-09-splitting-into-widgets.zip -------------------------------------------------------------------------------- /Section 2/basics-10-finished.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/basics-10-finished.zip -------------------------------------------------------------------------------- /Section 2/dart-basics-summary.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/dart-basics-summary.pdf -------------------------------------------------------------------------------- /Section 2/dart-overview-slide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/dart-overview-slide.pdf -------------------------------------------------------------------------------- /Section 2/dart-overview.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/dart-overview.pdf -------------------------------------------------------------------------------- /Section 2/flutter-basics-summary.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/flutter-basics-summary.pdf -------------------------------------------------------------------------------- /Section 2/flutter-old-and-new-buttons.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/flutter-old-and-new-buttons.pdf -------------------------------------------------------------------------------- /Section 2/flutter-widget-types-slide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/flutter-widget-types-slide.pdf -------------------------------------------------------------------------------- /Section 2/questions.txt: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | 'questionText': 'What\'s your favorite color?', 4 | 'answers': [ 5 | {'text': 'Black', 'score': 10}, 6 | {'text': 'Red', 'score': 5}, 7 | {'text': 'Green', 'score': 3}, 8 | {'text': 'White', 'score': 1}, 9 | ], 10 | }, 11 | { 12 | 'questionText': 'What\'s your favorite animal?', 13 | 'answers': [ 14 | {'text': 'Rabbit', 'score': 3}, 15 | {'text': 'Snake', 'score': 11}, 16 | {'text': 'Elephant', 'score': 5}, 17 | {'text': 'Lion', 'score': 9}, 18 | ], 19 | }, 20 | { 21 | 'questionText': 'Who\'s your favorite instructor?', 22 | 'answers': [ 23 | {'text': 'Max', 'score': 1}, 24 | {'text': 'Max', 'score': 1}, 25 | {'text': 'Max', 'score': 1}, 26 | {'text': 'Max', 'score': 1}, 27 | ], 28 | }, 29 | ] -------------------------------------------------------------------------------- /Section 2/widgets-basics-assignment-problem.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/widgets-basics-assignment-problem.zip -------------------------------------------------------------------------------- /Section 2/widgets-basics-assignment-solution.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/widgets-basics-assignment-solution.zip -------------------------------------------------------------------------------- /Section 2/widgets-basics-cheat-sheet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 2/widgets-basics-cheat-sheet.pdf -------------------------------------------------------------------------------- /Section 3/Section 3 - Useful Resource links.txt: -------------------------------------------------------------------------------- 1 | The following resources might be helpful: 2 | 3 | Official Debugging Docs: https://flutter.dev/docs/testing/debugging 4 | Dart Dev Tools: https://flutter.github.io/devtools/ -------------------------------------------------------------------------------- /Section 3/debugging-01-finished.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 3/debugging-01-finished.zip -------------------------------------------------------------------------------- /Section 4/Double Decimal Phase Precision.txt: -------------------------------------------------------------------------------- 1 | https://0.30000000000000004.com/ -------------------------------------------------------------------------------- /Section 4/Section 4 Quiz.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/Section 4 Quiz.pdf -------------------------------------------------------------------------------- /Section 4/chart-sketch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/chart-sketch.png -------------------------------------------------------------------------------- /Section 4/core-widgets-cheat-sheet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/core-widgets-cheat-sheet.pdf -------------------------------------------------------------------------------- /Section 4/fonts.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/fonts.zip -------------------------------------------------------------------------------- /Section 4/image.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/image.zip -------------------------------------------------------------------------------- /Section 4/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | void main() => runApp(MyApp()); 4 | 5 | class MyApp extends StatelessWidget { 6 | @override 7 | Widget build(BuildContext context) { 8 | return MaterialApp( 9 | title: 'Flutter App', 10 | home: MyHomePage(), 11 | ); 12 | } 13 | } 14 | 15 | class MyHomePage extends StatelessWidget { 16 | @override 17 | Widget build(BuildContext context) { 18 | return Scaffold( 19 | appBar: AppBar( 20 | title: Text('Flutter App'), 21 | ), 22 | body: Center( 23 | child: Text('Widget Playground!'), 24 | ), 25 | ); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Section 4/real-apps-01-starting-setup.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/real-apps-01-starting-setup.zip -------------------------------------------------------------------------------- /Section 4/real-apps-02-card-with-container.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/real-apps-02-card-with-container.zip -------------------------------------------------------------------------------- /Section 4/real-apps-03-column-alignment.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/real-apps-03-column-alignment.zip -------------------------------------------------------------------------------- /Section 4/real-apps-04-list-of-transaction-cards.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/real-apps-04-list-of-transaction-cards.zip -------------------------------------------------------------------------------- /Section 4/real-apps-05-textfields-and-button.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/real-apps-05-textfields-and-button.zip -------------------------------------------------------------------------------- /Section 4/real-apps-06-user-input-on-every-keystroke.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/real-apps-06-user-input-on-every-keystroke.zip -------------------------------------------------------------------------------- /Section 4/real-apps-07-using-texteditingcontroller.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/real-apps-07-using-texteditingcontroller.zip -------------------------------------------------------------------------------- /Section 4/real-apps-08-add-transaction-flow.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/real-apps-08-add-transaction-flow.zip -------------------------------------------------------------------------------- /Section 4/real-apps-09-scrollable-column.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/real-apps-09-scrollable-column.zip -------------------------------------------------------------------------------- /Section 4/real-apps-10-listview-children.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/real-apps-10-listview-children.zip -------------------------------------------------------------------------------- /Section 4/real-apps-11-listview-builder.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/real-apps-11-listview-builder.zip -------------------------------------------------------------------------------- /Section 4/real-apps-12-modal-sheet.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/real-apps-12-modal-sheet.zip -------------------------------------------------------------------------------- /Section 4/real-apps-13-added-theming.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/real-apps-13-added-theming.zip -------------------------------------------------------------------------------- /Section 4/real-apps-14-added-fonts-and-images.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/real-apps-14-added-fonts-and-images.zip -------------------------------------------------------------------------------- /Section 4/real-apps-15-chart-and-chartbars.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/real-apps-15-chart-and-chartbars.zip -------------------------------------------------------------------------------- /Section 4/real-apps-16-added-listtile.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/real-apps-16-added-listtile.zip -------------------------------------------------------------------------------- /Section 4/real-apps-17-date-input-and-picker.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/real-apps-17-date-input-and-picker.zip -------------------------------------------------------------------------------- /Section 4/real-apps-18-finished.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/real-apps-18-finished.zip -------------------------------------------------------------------------------- /Section 4/rows-columns-cheat-sheet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/rows-columns-cheat-sheet.pdf -------------------------------------------------------------------------------- /Section 4/widget-playground-finished.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/widget-playground-finished.zip -------------------------------------------------------------------------------- /Section 4/widget-playground-start.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 4/widget-playground-start.zip -------------------------------------------------------------------------------- /Section 5/An improved Modal Bottom Sheet.txt: -------------------------------------------------------------------------------- 1 | https://stackoverflow.com/questions/53869078/how-to-move-bottomsheet-along-with-keyboard-which-has-textfieldautofocused-is-t/57515977#57515977 -------------------------------------------------------------------------------- /Section 5/Section 5 - Useful Resource links.txt: -------------------------------------------------------------------------------- 1 | The following resources might be helpful: 2 | 3 | More on MediaQuery & Responsive Layouts: https://api.flutter.dev/flutter/widgets/MediaQuery-class.html & https://stackoverflow.com/questions/49704497/how-to-make-flutter-app-responsive-according-to-different-screen-size?rq=1 4 | 5 | More on LayoutBuilder: https://api.flutter.dev/flutter/widgets/LayoutBuilder-class.html 6 | 7 | All Cupertino Widgets: https://flutter.dev/docs/development/ui/widgets/cupertino -------------------------------------------------------------------------------- /Section 5/Section 5 Quiz.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 5/Section 5 Quiz.pdf -------------------------------------------------------------------------------- /Section 5/resp-01-dynamically-calculated-widgets.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 5/resp-01-dynamically-calculated-widgets.zip -------------------------------------------------------------------------------- /Section 5/resp-02-different-uis-based-on-orientation.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 5/resp-02-different-uis-based-on-orientation.zip -------------------------------------------------------------------------------- /Section 5/resp-03-respect-keyboard.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 5/resp-03-respect-keyboard.zip -------------------------------------------------------------------------------- /Section 5/resp-04-width-check-in-condition.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 5/resp-04-width-check-in-condition.zip -------------------------------------------------------------------------------- /Section 5/resp-05-adaptive-widget-and-platform-check.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 5/resp-05-adaptive-widget-and-platform-check.zip -------------------------------------------------------------------------------- /Section 5/resp-06-cupertino-widgets.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 5/resp-06-cupertino-widgets.zip -------------------------------------------------------------------------------- /Section 5/resp-07-finished.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 5/resp-07-finished.zip -------------------------------------------------------------------------------- /Section 5/responsive-adaptive.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 5/responsive-adaptive.pdf -------------------------------------------------------------------------------- /Section 6/Inside Flutter - Official Docs.txt: -------------------------------------------------------------------------------- 1 | https://flutter.dev/docs/resources/inside-flutter -------------------------------------------------------------------------------- /Section 6/More on Initializers list.txt: -------------------------------------------------------------------------------- 1 | https://dart.dev/guides/language/language-tour#initializer-list -------------------------------------------------------------------------------- /Section 6/More on Keys in Flutter.txt: -------------------------------------------------------------------------------- 1 | https://www.youtube.com/watch?v=kn0EOS-ZiIc -------------------------------------------------------------------------------- /Section 6/Section 6 - Useful Resource links.txt: -------------------------------------------------------------------------------- 1 | The following resources might be helpful: 2 | 3 | Official Flutter Widget Intro + Deep Dive: 4 | Part 1 (Stateless Widgets): https://www.youtube.com/watch?v=wE7khGHVkYY 5 | Part 2 (Stateful Widgets, Widget Tree, Element Tree): https://www.youtube.com/watch?v=AqCMFXEmf3w 6 | Part 3 (Inherited Widget/ Context): https://www.youtube.com/watch?v=Zbm3hjPjQMk 7 | Part 4 (Keys): https://www.youtube.com/watch?v=kn0EOS-ZiIc 8 | App Lifecycle: https://medium.com/pharos-production/flutter-app-lifecycle-4b0ab4a4211a -------------------------------------------------------------------------------- /Section 6/Section 6 Quiz.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 6/Section 6 Quiz.pdf -------------------------------------------------------------------------------- /Section 6/app-lifecycle.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 6/app-lifecycle.pdf -------------------------------------------------------------------------------- /Section 6/context.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 6/context.pdf -------------------------------------------------------------------------------- /Section 6/deep-dive-01-flutter-build-const.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 6/deep-dive-01-flutter-build-const.zip -------------------------------------------------------------------------------- /Section 6/deep-dive-02-builder-methods.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 6/deep-dive-02-builder-methods.zip -------------------------------------------------------------------------------- /Section 6/deep-dive-03-widget-lifecycle.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 6/deep-dive-03-widget-lifecycle.zip -------------------------------------------------------------------------------- /Section 6/deep-dive-04-app-lifecycle.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 6/deep-dive-04-app-lifecycle.zip -------------------------------------------------------------------------------- /Section 6/deep-dive-05-finished.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 6/deep-dive-05-finished.zip -------------------------------------------------------------------------------- /Section 6/deep-dive-assignment-solution.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 6/deep-dive-assignment-solution.zip -------------------------------------------------------------------------------- /Section 6/listview-keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 6/listview-keys.png -------------------------------------------------------------------------------- /Section 6/widget-and-element-tree.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 6/widget-and-element-tree.pdf -------------------------------------------------------------------------------- /Section 6/widget-element-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 6/widget-element-tree.png -------------------------------------------------------------------------------- /Section 6/widget-lifecycle.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 6/widget-lifecycle.pdf -------------------------------------------------------------------------------- /Section 7/Section 7 - Useful Resource Links.txt: -------------------------------------------------------------------------------- 1 | The following resources might be helpful: 2 | 3 | Official Navigation Docs: https://flutter.dev/docs/development/ui/navigation 4 | Named Routes + Arguments: https://flutter.dev/docs/cookbook/navigation/navigate-with-arguments 5 | -------------------------------------------------------------------------------- /Section 7/Section 7 Quiz.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 7/Section 7 Quiz.pdf -------------------------------------------------------------------------------- /Section 7/dummy-data (1).dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import './models/category.dart'; 4 | import './models/meal.dart'; 5 | 6 | const DUMMY_CATEGORIES = const [ 7 | Category( 8 | id: 'c1', 9 | title: 'Italian', 10 | color: Colors.purple, 11 | ), 12 | Category( 13 | id: 'c2', 14 | title: 'Quick & Easy', 15 | color: Colors.red, 16 | ), 17 | Category( 18 | id: 'c3', 19 | title: 'Hamburgers', 20 | color: Colors.orange, 21 | ), 22 | Category( 23 | id: 'c4', 24 | title: 'German', 25 | color: Colors.amber, 26 | ), 27 | Category( 28 | id: 'c5', 29 | title: 'Light & Lovely', 30 | color: Colors.blue, 31 | ), 32 | Category( 33 | id: 'c6', 34 | title: 'Exotic', 35 | color: Colors.green, 36 | ), 37 | Category( 38 | id: 'c7', 39 | title: 'Breakfast', 40 | color: Colors.lightBlue, 41 | ), 42 | Category( 43 | id: 'c8', 44 | title: 'Asian', 45 | color: Colors.lightGreen, 46 | ), 47 | Category( 48 | id: 'c9', 49 | title: 'French', 50 | color: Colors.pink, 51 | ), 52 | Category( 53 | id: 'c10', 54 | title: 'Summer', 55 | color: Colors.teal, 56 | ), 57 | ]; 58 | 59 | const DUMMY_MEALS = const [ 60 | Meal( 61 | id: 'm1', 62 | categories: [ 63 | 'c1', 64 | 'c2', 65 | ], 66 | title: 'Spaghetti with Tomato Sauce', 67 | affordability: Affordability.Affordable, 68 | complexity: Complexity.Simple, 69 | imageUrl: 70 | 'https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Spaghetti_Bolognese_mit_Parmesan_oder_Grana_Padano.jpg/800px-Spaghetti_Bolognese_mit_Parmesan_oder_Grana_Padano.jpg', 71 | duration: 20, 72 | ingredients: [ 73 | '4 Tomatoes', 74 | '1 Tablespoon of Olive Oil', 75 | '1 Onion', 76 | '250g Spaghetti', 77 | 'Spices', 78 | 'Cheese (optional)' 79 | ], 80 | steps: [ 81 | 'Cut the tomatoes and the onion into small pieces.', 82 | 'Boil some water - add salt to it once it boils.', 83 | 'Put the spaghetti into the boiling water - they should be done in about 10 to 12 minutes.', 84 | 'In the meantime, heaten up some olive oil and add the cut onion.', 85 | 'After 2 minutes, add the tomato pieces, salt, pepper and your other spices.', 86 | 'The sauce will be done once the spaghetti are.', 87 | 'Feel free to add some cheese on top of the finished dish.' 88 | ], 89 | isGlutenFree: false, 90 | isVegan: true, 91 | isVegetarian: true, 92 | isLactoseFree: true, 93 | ), 94 | Meal( 95 | id: 'm2', 96 | categories: [ 97 | 'c2', 98 | ], 99 | title: 'Toast Hawaii', 100 | affordability: Affordability.Affordable, 101 | complexity: Complexity.Simple, 102 | imageUrl: 103 | 'https://cdn.pixabay.com/photo/2018/07/11/21/51/toast-3532016_1280.jpg', 104 | duration: 10, 105 | ingredients: [ 106 | '1 Slice White Bread', 107 | '1 Slice Ham', 108 | '1 Slice Pineapple', 109 | '1-2 Slices of Cheese', 110 | 'Butter' 111 | ], 112 | steps: [ 113 | 'Butter one side of the white bread', 114 | 'Layer ham, the pineapple and cheese on the white bread', 115 | 'Bake the toast for round about 10 minutes in the oven at 200°C' 116 | ], 117 | isGlutenFree: false, 118 | isVegan: false, 119 | isVegetarian: false, 120 | isLactoseFree: false, 121 | ), 122 | Meal( 123 | id: 'm3', 124 | categories: [ 125 | 'c2', 126 | 'c3', 127 | ], 128 | title: 'Classic Hamburger', 129 | affordability: Affordability.Pricey, 130 | complexity: Complexity.Simple, 131 | imageUrl: 132 | 'https://cdn.pixabay.com/photo/2014/10/23/18/05/burger-500054_1280.jpg', 133 | duration: 45, 134 | ingredients: [ 135 | '300g Cattle Hack', 136 | '1 Tomato', 137 | '1 Cucumber', 138 | '1 Onion', 139 | 'Ketchup', 140 | '2 Burger Buns' 141 | ], 142 | steps: [ 143 | 'Form 2 patties', 144 | 'Fry the patties for c. 4 minutes on each side', 145 | 'Quickly fry the buns for c. 1 minute on each side', 146 | 'Bruch buns with ketchup', 147 | 'Serve burger with tomato, cucumber and onion' 148 | ], 149 | isGlutenFree: false, 150 | isVegan: false, 151 | isVegetarian: false, 152 | isLactoseFree: true, 153 | ), 154 | Meal( 155 | id: 'm4', 156 | categories: [ 157 | 'c4', 158 | ], 159 | title: 'Wiener Schnitzel', 160 | affordability: Affordability.Luxurious, 161 | complexity: Complexity.Challenging, 162 | imageUrl: 163 | 'https://cdn.pixabay.com/photo/2018/03/31/19/29/schnitzel-3279045_1280.jpg', 164 | duration: 60, 165 | ingredients: [ 166 | '8 Veal Cutlets', 167 | '4 Eggs', 168 | '200g Bread Crumbs', 169 | '100g Flour', 170 | '300ml Butter', 171 | '100g Vegetable Oil', 172 | 'Salt', 173 | 'Lemon Slices' 174 | ], 175 | steps: [ 176 | 'Tenderize the veal to about 2–4mm, and salt on both sides.', 177 | 'On a flat plate, stir the eggs briefly with a fork.', 178 | 'Lightly coat the cutlets in flour then dip into the egg, and finally, coat in breadcrumbs.', 179 | 'Heat the butter and oil in a large pan (allow the fat to get very hot) and fry the schnitzels until golden brown on both sides.', 180 | 'Make sure to toss the pan regularly so that the schnitzels are surrounded by oil and the crumbing becomes ‘fluffy’.', 181 | 'Remove, and drain on kitchen paper. Fry the parsley in the remaining oil and drain.', 182 | 'Place the schnitzels on awarmed plate and serve garnishedwith parsley and slices of lemon.' 183 | ], 184 | isGlutenFree: false, 185 | isVegan: false, 186 | isVegetarian: false, 187 | isLactoseFree: false, 188 | ), 189 | Meal( 190 | id: 'm5', 191 | categories: [ 192 | 'c2' 193 | 'c5', 194 | 'c10', 195 | ], 196 | title: 'Salad with Smoked Salmon', 197 | affordability: Affordability.Luxurious, 198 | complexity: Complexity.Simple, 199 | imageUrl: 200 | 'https://cdn.pixabay.com/photo/2016/10/25/13/29/smoked-salmon-salad-1768890_1280.jpg', 201 | duration: 15, 202 | ingredients: [ 203 | 'Arugula', 204 | 'Lamb\'s Lettuce', 205 | 'Parsley', 206 | 'Fennel', 207 | '200g Smoked Salmon', 208 | 'Mustard', 209 | 'Balsamic Vinegar', 210 | 'Olive Oil', 211 | 'Salt and Pepper' 212 | ], 213 | steps: [ 214 | 'Wash and cut salad and herbs', 215 | 'Dice the salmon', 216 | 'Process mustard, vinegar and olive oil into a dessing', 217 | 'Prepare the salad', 218 | 'Add salmon cubes and dressing' 219 | ], 220 | isGlutenFree: true, 221 | isVegan: false, 222 | isVegetarian: true, 223 | isLactoseFree: true, 224 | ), 225 | Meal( 226 | id: 'm6', 227 | categories: [ 228 | 'c6', 229 | 'c10', 230 | ], 231 | title: 'Delicious Orange Mousse', 232 | affordability: Affordability.Affordable, 233 | complexity: Complexity.Hard, 234 | imageUrl: 235 | 'https://cdn.pixabay.com/photo/2017/05/01/05/18/pastry-2274750_1280.jpg', 236 | duration: 240, 237 | ingredients: [ 238 | '4 Sheets of Gelatine', 239 | '150ml Orange Juice', 240 | '80g Sugar', 241 | '300g Yoghurt', 242 | '200g Cream', 243 | 'Orange Peel', 244 | ], 245 | steps: [ 246 | 'Dissolve gelatine in pot', 247 | 'Add orange juice and sugar', 248 | 'Take pot off the stove', 249 | 'Add 2 tablespoons of yoghurt', 250 | 'Stir gelatin under remaining yoghurt', 251 | 'Cool everything down in the refrigerator', 252 | 'Whip the cream and lift it under die orange mass', 253 | 'Cool down again for at least 4 hours', 254 | 'Serve with orange peel', 255 | ], 256 | isGlutenFree: true, 257 | isVegan: false, 258 | isVegetarian: true, 259 | isLactoseFree: false, 260 | ), 261 | Meal( 262 | id: 'm7', 263 | categories: [ 264 | 'c7', 265 | ], 266 | title: 'Pancakes', 267 | affordability: Affordability.Affordable, 268 | complexity: Complexity.Simple, 269 | imageUrl: 270 | 'https://cdn.pixabay.com/photo/2018/07/10/21/23/pancake-3529653_1280.jpg', 271 | duration: 20, 272 | ingredients: [ 273 | '1 1/2 Cups all-purpose Flour', 274 | '3 1/2 Teaspoons Baking Powder', 275 | '1 Teaspoon Salt', 276 | '1 Tablespoon White Sugar', 277 | '1 1/4 cups Milk', 278 | '1 Egg', 279 | '3 Tablespoons Butter, melted', 280 | ], 281 | steps: [ 282 | 'In a large bowl, sift together the flour, baking powder, salt and sugar.', 283 | 'Make a well in the center and pour in the milk, egg and melted butter; mix until smooth.', 284 | 'Heat a lightly oiled griddle or frying pan over medium high heat.', 285 | 'Pour or scoop the batter onto the griddle, using approximately 1/4 cup for each pancake. Brown on both sides and serve hot.' 286 | ], 287 | isGlutenFree: true, 288 | isVegan: false, 289 | isVegetarian: true, 290 | isLactoseFree: false, 291 | ), 292 | Meal( 293 | id: 'm8', 294 | categories: [ 295 | 'c8', 296 | ], 297 | title: 'Creamy Indian Chicken Curry', 298 | affordability: Affordability.Pricey, 299 | complexity: Complexity.Challenging, 300 | imageUrl: 301 | 'https://cdn.pixabay.com/photo/2018/06/18/16/05/indian-food-3482749_1280.jpg', 302 | duration: 35, 303 | ingredients: [ 304 | '4 Chicken Breasts', 305 | '1 Onion', 306 | '2 Cloves of Garlic', 307 | '1 Piece of Ginger', 308 | '4 Tablespoons Almonds', 309 | '1 Teaspoon Cayenne Pepper', 310 | '500ml Coconut Milk', 311 | ], 312 | steps: [ 313 | 'Slice and fry the chicken breast', 314 | 'Process onion, garlic and ginger into paste and sauté everything', 315 | 'Add spices and stir fry', 316 | 'Add chicken breast + 250ml of water and cook everything for 10 minutes', 317 | 'Add coconut milk', 318 | 'Serve with rice' 319 | ], 320 | isGlutenFree: true, 321 | isVegan: false, 322 | isVegetarian: false, 323 | isLactoseFree: true, 324 | ), 325 | Meal( 326 | id: 'm9', 327 | categories: [ 328 | 'c9', 329 | ], 330 | title: 'Chocolate Souffle', 331 | affordability: Affordability.Affordable, 332 | complexity: Complexity.Hard, 333 | imageUrl: 334 | 'https://cdn.pixabay.com/photo/2014/08/07/21/07/souffle-412785_1280.jpg', 335 | duration: 45, 336 | ingredients: [ 337 | '1 Teaspoon melted Butter', 338 | '2 Tablespoons white Sugar', 339 | '2 Ounces 70% dark Chocolate, broken into pieces', 340 | '1 Tablespoon Butter', 341 | '1 Tablespoon all-purpose Flour', 342 | '4 1/3 tablespoons cold Milk', 343 | '1 Pinch Salt', 344 | '1 Pinch Cayenne Pepper', 345 | '1 Large Egg Yolk', 346 | '2 Large Egg Whites', 347 | '1 Pinch Cream of Tartar', 348 | '1 Tablespoon white Sugar', 349 | ], 350 | steps: [ 351 | 'Preheat oven to 190°C. Line a rimmed baking sheet with parchment paper.', 352 | 'Brush bottom and sides of 2 ramekins lightly with 1 teaspoon melted butter; cover bottom and sides right up to the rim.', 353 | 'Add 1 tablespoon white sugar to ramekins. Rotate ramekins until sugar coats all surfaces.', 354 | 'Place chocolate pieces in a metal mixing bowl.', 355 | 'Place bowl over a pan of about 3 cups hot water over low heat.', 356 | 'Melt 1 tablespoon butter in a skillet over medium heat. Sprinkle in flour. Whisk until flour is incorporated into butter and mixture thickens.', 357 | 'Whisk in cold milk until mixture becomes smooth and thickens. Transfer mixture to bowl with melted chocolate.', 358 | 'Add salt and cayenne pepper. Mix together thoroughly. Add egg yolk and mix to combine.', 359 | 'Leave bowl above the hot (not simmering) water to keep chocolate warm while you whip the egg whites.', 360 | 'Place 2 egg whites in a mixing bowl; add cream of tartar. Whisk until mixture begins to thicken and a drizzle from the whisk stays on the surface about 1 second before disappearing into the mix.', 361 | 'Add 1/3 of sugar and whisk in. Whisk in a bit more sugar about 15 seconds.', 362 | 'whisk in the rest of the sugar. Continue whisking until mixture is about as thick as shaving cream and holds soft peaks, 3 to 5 minutes.', 363 | 'Transfer a little less than half of egg whites to chocolate.', 364 | 'Mix until egg whites are thoroughly incorporated into the chocolate.', 365 | 'Add the rest of the egg whites; gently fold into the chocolate with a spatula, lifting from the bottom and folding over.', 366 | 'Stop mixing after the egg white disappears. Divide mixture between 2 prepared ramekins. Place ramekins on prepared baking sheet.', 367 | 'Bake in preheated oven until scuffles are puffed and have risen above the top of the rims, 12 to 15 minutes.', 368 | ], 369 | isGlutenFree: true, 370 | isVegan: false, 371 | isVegetarian: true, 372 | isLactoseFree: false, 373 | ), 374 | Meal( 375 | id: 'm10', 376 | categories: [ 377 | 'c2', 378 | 'c5', 379 | 'c10', 380 | ], 381 | title: 'Asparagus Salad with Cherry Tomatoes', 382 | affordability: Affordability.Luxurious, 383 | complexity: Complexity.Simple, 384 | imageUrl: 385 | 'https://cdn.pixabay.com/photo/2018/04/09/18/26/asparagus-3304997_1280.jpg', 386 | duration: 30, 387 | ingredients: [ 388 | 'White and Green Asparagus', 389 | '30g Pine Nuts', 390 | '300g Cherry Tomatoes', 391 | 'Salad', 392 | 'Salt, Pepper and Olive Oil' 393 | ], 394 | steps: [ 395 | 'Wash, peel and cut the asparagus', 396 | 'Cook in salted water', 397 | 'Salt and pepper the asparagus', 398 | 'Roast the pine nuts', 399 | 'Halve the tomatoes', 400 | 'Mix with asparagus, salad and dressing', 401 | 'Serve with Baguette' 402 | ], 403 | isGlutenFree: true, 404 | isVegan: true, 405 | isVegetarian: true, 406 | isLactoseFree: true, 407 | ), 408 | ]; 409 | -------------------------------------------------------------------------------- /Section 7/dummy-data.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import './models/category.dart'; 4 | 5 | const DUMMY_CATEGORIES = const [ 6 | Category( 7 | id: 'c1', 8 | title: 'Italian', 9 | color: Colors.purple, 10 | ), 11 | Category( 12 | id: 'c2', 13 | title: 'Quick & Easy', 14 | color: Colors.red, 15 | ), 16 | Category( 17 | id: 'c3', 18 | title: 'Hamburgers', 19 | color: Colors.orange, 20 | ), 21 | Category( 22 | id: 'c4', 23 | title: 'German', 24 | color: Colors.amber, 25 | ), 26 | Category( 27 | id: 'c5', 28 | title: 'Light & Lovely', 29 | color: Colors.blue, 30 | ), 31 | Category( 32 | id: 'c6', 33 | title: 'Exotic', 34 | color: Colors.green, 35 | ), 36 | Category( 37 | id: 'c7', 38 | title: 'Breakfast', 39 | color: Colors.lightBlue, 40 | ), 41 | Category( 42 | id: 'c8', 43 | title: 'Asian', 44 | color: Colors.lightGreen, 45 | ), 46 | Category( 47 | id: 'c9', 48 | title: 'French', 49 | color: Colors.pink, 50 | ), 51 | Category( 52 | id: 'c10', 53 | title: 'Summer', 54 | color: Colors.teal, 55 | ), 56 | ]; 57 | -------------------------------------------------------------------------------- /Section 7/fonts.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 7/fonts.zip -------------------------------------------------------------------------------- /Section 7/how-navigation-works.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 7/how-navigation-works.pdf -------------------------------------------------------------------------------- /Section 7/meals-app-sketch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 7/meals-app-sketch.png -------------------------------------------------------------------------------- /Section 7/nav-01-starting-setup.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 7/nav-01-starting-setup.zip -------------------------------------------------------------------------------- /Section 7/nav-02-categories-and-categories-screen.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 7/nav-02-categories-and-categories-screen.zip -------------------------------------------------------------------------------- /Section 7/nav-03-theme-and-font.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 7/nav-03-theme-and-font.zip -------------------------------------------------------------------------------- /Section 7/nav-04-pushing-and-passing-data.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 7/nav-04-pushing-and-passing-data.zip -------------------------------------------------------------------------------- /Section 7/nav-05-named-routes-and-args.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 7/nav-05-named-routes-and-args.zip -------------------------------------------------------------------------------- /Section 7/nav-06-finished-meal-items.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 7/nav-06-finished-meal-items.zip -------------------------------------------------------------------------------- /Section 7/nav-07-navigation-to-detail-page.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 7/nav-07-navigation-to-detail-page.zip -------------------------------------------------------------------------------- /Section 7/nav-08-recipe-detail-page.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 7/nav-08-recipe-detail-page.zip -------------------------------------------------------------------------------- /Section 7/nav-09-appbar-tabs.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 7/nav-09-appbar-tabs.zip -------------------------------------------------------------------------------- /Section 7/nav-10-bottom-tabs.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 7/nav-10-bottom-tabs.zip -------------------------------------------------------------------------------- /Section 7/nav-11-drawer.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 7/nav-11-drawer.zip -------------------------------------------------------------------------------- /Section 7/nav-12-replacing-screens.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 7/nav-12-replacing-screens.zip -------------------------------------------------------------------------------- /Section 7/nav-13-passing-data-back.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 7/nav-13-passing-data-back.zip -------------------------------------------------------------------------------- /Section 7/nav-14-finished.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 7/nav-14-finished.zip -------------------------------------------------------------------------------- /Section 8/Providing Non Objects.txt: -------------------------------------------------------------------------------- 1 | Providing non-Objects 2 | Typically, when working with the Provider package, you provide objects based on your own custom classes. 3 | 4 | This makes sense because you can implement the ChangeNotifier mixin in your classes to to then trigger notifyListeners() whenever you want to update all places in your app that listen to your data. 5 | 6 | But you're not limited to providing objects - you can provide ANY kind of value (lists, numbers, strings, objects without ChangeNotifier mixing, ...). 7 | 8 | Example: 9 | 10 | Provider(builder: (ctx) => 'Hi, I am a text!', child: ...); 11 | You might wonder, how this text can change though - it's a constant text after all. It certainly doesn't implement the ChangeNotifier mixin (the String class, which is built-into Dart, indeed doesn't - just like numbers, booleans etc.). 12 | 13 | It's important to note, that the above snippet uses Provider, NOT ChangeNotifierProvider. The latter indeed only works with objects based on classes that use the ChangeNotifier mixin. And this is the most common use-case, because you typically want to be your global data changeable (and have the app UI react to that). 14 | 15 | But in case you just want to provide some global (constant) value which you can then conveniently use like this: 16 | 17 | print(Provider.of(context)); // prints 'Hi, I am a text!'; does never update! 18 | you can do that. -------------------------------------------------------------------------------- /Section 8/Section 8 - Important Reference links.txt: -------------------------------------------------------------------------------- 1 | The following resources might be helpful: 2 | 3 | Official Provider Docs/ Repo: https://pub.dev/packages/provider 4 | Official State Management Docs: https://flutter.dev/docs/development/data-and-backend/state-mgmt/intro -------------------------------------------------------------------------------- /Section 8/Section 8 Quiz.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 8/Section 8 Quiz.pdf -------------------------------------------------------------------------------- /Section 8/Using the Right Provider Package Version.txt: -------------------------------------------------------------------------------- 1 | Using the Right Provider Package Version 2 | When it comes to the Provider package (which we use in this course), you can use two versions: Version 3 or version 4 (or higher). 3 | 4 | For this course, use version 3 by adding this entry to your pubspec.yaml file (and then running flutter packages get): 5 | 6 | dependencies: provider: 3.2.0 7 | Why not version 4 (or higher)? 8 | 9 | You could use that version but it doesn't add anything we need yet it uses a slightly different syntax in some places (i.e. you need to adjust the code you write). 10 | 11 | If you want to use it, you find detailed migration steps (from 3 to 4) here: https://pub.dev/packages/provider#migration-from-v3x0-to-v400 -------------------------------------------------------------------------------- /Section 8/badge.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Badge extends StatelessWidget { 4 | const Badge({ 5 | Key key, 6 | @required this.child, 7 | @required this.value, 8 | this.color, 9 | }) : super(key: key); 10 | 11 | final Widget child; 12 | final String value; 13 | final Color color; 14 | 15 | @override 16 | Widget build(BuildContext context) { 17 | return Stack( 18 | alignment: Alignment.center, 19 | children: [ 20 | child, 21 | Positioned( 22 | right: 8, 23 | top: 8, 24 | child: Container( 25 | padding: EdgeInsets.all(2.0), 26 | // color: Theme.of(context).accentColor, 27 | decoration: BoxDecoration( 28 | borderRadius: BorderRadius.circular(10.0), 29 | color: color != null ? color : Theme.of(context).accentColor, 30 | ), 31 | constraints: BoxConstraints( 32 | minWidth: 16, 33 | minHeight: 16, 34 | ), 35 | child: Text( 36 | value, 37 | textAlign: TextAlign.center, 38 | style: TextStyle( 39 | fontSize: 10, 40 | ), 41 | ), 42 | ), 43 | ) 44 | ], 45 | ); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Section 8/fonts.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 8/fonts.zip -------------------------------------------------------------------------------- /Section 8/nav-14-finished.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 8/nav-14-finished.zip -------------------------------------------------------------------------------- /Section 8/products.txt: -------------------------------------------------------------------------------- 1 | [ 2 | Product( 3 | id: 'p1', 4 | title: 'Red Shirt', 5 | description: 'A red shirt - it is pretty red!', 6 | price: 29.99, 7 | imageUrl: 8 | 'https://cdn.pixabay.com/photo/2016/10/02/22/17/red-t-shirt-1710578_1280.jpg', 9 | ), 10 | Product( 11 | id: 'p2', 12 | title: 'Trousers', 13 | description: 'A nice pair of trousers.', 14 | price: 59.99, 15 | imageUrl: 16 | 'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e8/Trousers%2C_dress_%28AM_1960.022-8%29.jpg/512px-Trousers%2C_dress_%28AM_1960.022-8%29.jpg', 17 | ), 18 | Product( 19 | id: 'p3', 20 | title: 'Yellow Scarf', 21 | description: 'Warm and cozy - exactly what you need for the winter.', 22 | price: 19.99, 23 | imageUrl: 24 | 'https://live.staticflickr.com/4043/4438260868_cc79b3369d_z.jpg', 25 | ), 26 | Product( 27 | id: 'p4', 28 | title: 'A Pan', 29 | description: 'Prepare any meal you want.', 30 | price: 49.99, 31 | imageUrl: 32 | 'https://upload.wikimedia.org/wikipedia/commons/thumb/1/14/Cast-Iron-Pan.jpg/1024px-Cast-Iron-Pan.jpg', 33 | ), 34 | ] -------------------------------------------------------------------------------- /Section 8/provider-package.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 8/provider-package.pdf -------------------------------------------------------------------------------- /Section 8/shop-app-sketch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 8/shop-app-sketch.png -------------------------------------------------------------------------------- /Section 8/state-01-starting-setup.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 8/state-01-starting-setup.zip -------------------------------------------------------------------------------- /Section 8/state-02-detail-screen.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 8/state-02-detail-screen.zip -------------------------------------------------------------------------------- /Section 8/state-03-provider-package.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 8/state-03-provider-package.zip -------------------------------------------------------------------------------- /Section 8/state-04-provider-with-single-product.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 8/state-04-provider-with-single-product.zip -------------------------------------------------------------------------------- /Section 8/state-05-consumer-and-alternative-syntaxes.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 8/state-05-consumer-and-alternative-syntaxes.zip -------------------------------------------------------------------------------- /Section 8/state-06-stateful-widget.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 8/state-06-stateful-widget.zip -------------------------------------------------------------------------------- /Section 8/state-07-cart-badge-and-connected-model.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 8/state-07-cart-badge-and-connected-model.zip -------------------------------------------------------------------------------- /Section 8/state-08-product-detail-page.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 8/state-08-product-detail-page.zip -------------------------------------------------------------------------------- /Section 8/state-09-orders-screen.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 8/state-09-orders-screen.zip -------------------------------------------------------------------------------- /Section 8/state-10-finished.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 8/state-10-finished.zip -------------------------------------------------------------------------------- /Section 8/state-10b-finished-provider-4.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 8/state-10b-finished-provider-4.zip -------------------------------------------------------------------------------- /Section 8/state-and-state-management.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 8/state-and-state-management.pdf -------------------------------------------------------------------------------- /Section 9/(Optional)Working with regular Expressions.txt: -------------------------------------------------------------------------------- 1 | [OPTIONAL] Working with Regular Expressions 2 | Checking text with contains(), startsWith(), endsWith() etc. can be cumbersome and also might still not allow you to check for an exact string pattern. 3 | 4 | A URL for example, is not just made up of having "http" or "https" at the beginning (indeed, a valid URL doesn't have to start with either). 5 | 6 | You might instead want to watch for a pattern where you have a domain ending (e.g. ".com") in there, possibly followed by a couple of text segments separated by forward slashes (/some/path/after/your/domain). 7 | 8 | For more complex cases like this, where you want to ensure that a string matches a certain pattern, you can use a concept called "Regular Expressions". It also exists in other programming languages. 9 | 10 | Here's an example: 11 | 12 | var urlPattern = r"(https?|ftp)://([-A-Z0-9.]+)(/[-A-Z0-9+&@#/%=~_|!:,.;]*)?(\?[A-Z0-9+&@#/%=~_|!:‌​,.;]*)?"; 13 | var result = new RegExp(urlPattern, caseSensitive: false).firstMatch('https://www.google.com'); 14 | Pretty scary, right? 15 | 16 | This snippet takes a regular expression pattern (saved in urlPattern - essentially a string with the special r annotation in front of it, outside of the quotes) and then uses this together with the RegExp class (built into Dart). This class offers utility methods like firstMatch() which checks whether the string you pass as an argument to firstMatch() matches the provided regular expression (urlPattern). 17 | 18 | Whilst it looks scary, this allows you to perform powerful checks for special/ advanced patterns. 19 | 20 | You can learn more about the "regular expression language" here: https://www.youtube.com/playlist?list=PL55RiY5tL51ryV3MhCbH8bLl7O_RZGUUE (this series is about regular expressions in JavaScript but Dart follows the exact same specification). 21 | 22 | To be very honest, you don't have to learn, leave alone master, regular expressions. You find plenty of common examples via Google (e.g. "dart regex email"). 23 | 24 | Also don't use regular expressions for everything! For simple checks, it's more than fine to stick to normal string methods like startsWith(). -------------------------------------------------------------------------------- /Section 9/ListView or Column.txt: -------------------------------------------------------------------------------- 1 | ListView or Column 2 | When working with Forms, you typically have multiple input fields above each other - that's why you might want to ensure that the list of inputs is scrollable. Especially, since the soft keyboard will also take up some space on the screen. 3 | 4 | For very long forms (i.e. many input fields) OR in landscape mode (i.e. less vertical space on the screen), you might encounter a strange behavior: User input might get lost if an input fields scrolls out of view. 5 | 6 | That happens because the ListView widget dynamically removes and re-adds widgets as they scroll out of and back into view. 7 | 8 | For short lists/ portrait-only apps, where only minimal scrolling might be needed, a ListView should be fine, since items won't scroll that far out of view (ListView has a certain threshold until which it will keep items in memory). 9 | 10 | But for longer lists or apps that should work in landscape mode as well - or maybe just to be safe - you might want to use a Column (combined with SingleChildScrollView) instead. Since SingleChildScrollView doesn't clear widgets that scroll out of view, you are not in danger of losing user input in that case. 11 | 12 | For example: 13 | 14 | Form( 15 | child: ListView( 16 | children: [ ... ], 17 | ), 18 | ), 19 | simply becomes 20 | 21 | Form( 22 | child: SingleChildScrollView( 23 | child: Column( 24 | children: [ ... ], 25 | ), 26 | ), 27 | ), 28 | -------------------------------------------------------------------------------- /Section 9/Section 9 - Useful Resource Link.txt: -------------------------------------------------------------------------------- 1 | The following resources might be helpful: 2 | 3 | Official Input & Forms Docs: https://flutter.dev/docs/cookbook#forms -------------------------------------------------------------------------------- /Section 9/Using ScaffoldMessenger for SnackBars.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 9/Using ScaffoldMessenger for SnackBars.pdf -------------------------------------------------------------------------------- /Section 9/input-01-snackbar.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 9/input-01-snackbar.zip -------------------------------------------------------------------------------- /Section 9/input-02-showdialog.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 9/input-02-showdialog.zip -------------------------------------------------------------------------------- /Section 9/input-03-empty-edit-product-screen.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 9/input-03-empty-edit-product-screen.zip -------------------------------------------------------------------------------- /Section 9/input-04-managing-focus.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 9/input-04-managing-focus.zip -------------------------------------------------------------------------------- /Section 9/input-05-description-field.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 9/input-05-description-field.zip -------------------------------------------------------------------------------- /Section 9/input-06-image-input.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 9/input-06-image-input.zip -------------------------------------------------------------------------------- /Section 9/input-07-submit-form.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 9/input-07-submit-form.zip -------------------------------------------------------------------------------- /Section 9/input-08-validation.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 9/input-08-validation.zip -------------------------------------------------------------------------------- /Section 9/input-09-finished.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/Section 9/input-09-finished.zip -------------------------------------------------------------------------------- /section 10/Section 10 - Useful Resource links.txt: -------------------------------------------------------------------------------- 1 | The following resources might be helpful: 2 | 3 | More on Sending Http Requests: https://flutter.dev/docs/cookbook/networking/fetch-data -------------------------------------------------------------------------------- /section 10/Section 10 Quiz.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/section 10/Section 10 Quiz.pdf -------------------------------------------------------------------------------- /section 10/http-09-fav-status-and-orders.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/section 10/http-09-fav-status-and-orders.zip -------------------------------------------------------------------------------- /section 10/http-10-finished.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Learn-Flutter-and-Dart-to-Build-iOS-and-Android-Apps/a86e3e08d6ac8e28d3115cf109f686af0429c44d/section 10/http-10-finished.zip --------------------------------------------------------------------------------