Flutter Animations: Interactive Page Flip Widget [Part 2]Mar 8, 2021#dart#flutter#animationsHow to build an interactive page flip widget using Flutter's AnimationController, AnimationBuilder, gesture detectors and custom 3D matrix transforms (part 2).
Flutter Animations: Interactive Page Flip WidgetMar 3, 2021#dart#flutter#animationsHow to build an interactive page flip widget using Flutter's AnimationController, AnimationBuilder, gesture detectors and custom 3D matrix transforms (part 1).
Flutter State Management with Riverpod: The Essential GuideFeb 18, 202116 min read#dart#flutter#state-management#architecture#riverpodA complete guide to the Riverpod package for Flutter state management. Included: core concepts & how to use all the available providers.
Flutter State Management: Going from setState to Freezed & StateNotifier with ProviderFeb 1, 202114 min read#dart#flutter#state-management#architecture#provider#freezedMixing UI and logic inside Flutter widgets is bad. Here's how to refactor a simple app for better separation of concerns, immutability, and type safety using Freezed & State Notifier.
Flutter State Management Basics and Useful ResourcesJan 25, 20214 min read#dart#flutter#state-managementAn overview of Flutter's built-in widgets for managing state, along with links to the best resources from the official Flutter documentation.
My 2020 Christmas Gift: Free Flutter Example Apps on GitHubDec 14, 20201 min read#dart#flutterI published a directory of all my open source Flutter apps and projects on GitHub. Here's where to find it.
Top 16 Dart Tips and Tricks Every Flutter Developer Should KnowNov 16, 20207 min read#dart#flutterA curated list of useful Dart tips that will improve your coding style as a Flutter developer.
Dart Beginners Course - Tutorial #08: Null SafetyOct 26, 2020#dartThis is the eigth chapter of my Complete Dart Course, featuring a full overview of Null Safety in Dart.
Dart Beginners Course - Tutorial #07: Data Processing in DartOct 19, 2020#dartThis is the seventh chapter of my Complete Dart Course, showing how to process CSV files in Dart.
Dart Beginners Course - Tutorial #06: CollectionsOct 12, 2020#dartThis is the sixth chapter of my Complete Dart Course, showing how to use collections in Dart (lists, sets, maps).
Dart Beginners Course - Tutorial #05: Build a Command Line AppOct 5, 2020#dartThis is the fifth chapter of my Complete Dart Course, showing how to build a command line app in Dart to play a game of Rock, Paper and Scissors.
Dart Beginners Course - Tutorial #04: Control FlowSep 28, 2020#dartThis is the fourth chapter of my Complete Dart Course, covering control flow directives such as if/else, while/for loops, switch and enumerations.
Dart Beginners Course - Tutorial #03: Dart Type SystemSep 21, 2020#dartThis is the third chapter of my Complete Dart Course, covering the Dart Type System, and how to use var, final, const and dynamic.
Dart Beginners Course - Tutorial #02: Dart BasicsSep 16, 2020#dartThis is the second chapter of my Complete Dart Course, covering the basics of the Dart Language.
Dart Beginners Course - Tutorial #01: IntroductionSep 15, 2020#dartThis is the first chapter of my Complete Dart Course.
The Complete Dart Guide for Beginners And Beyond: Course LaunchSep 14, 2020#dartI'm launching a Complete Dart Course for beginners with over 8 hours of content, exercises, practical projects and more!
Dart Null Safety: The Ultimate Guide to Non-Nullable TypesJun 29, 202011 min read#dart#null-safetyA complete tour of Null Safety & non-nullable types, the syntax changes they introduce in Dart 2.9, and how to use them in practice.
Flutter Tutorial for Beginners: Layout BasicsJun 10, 2020#flutter#dartLearn about Flutter layout basics with over 2 hours of in-depth content (free sample from my Flutter & Firebase course)
Flutter Tutorial for Beginners: IntroductionJun 8, 2020#flutter#dartIntroduction to Flutter: the widget tree, stateless and stateful widgets, hot reload and hot restart, and a detailed explanation of the default counter app.
How to Create Dart Packages for Your Flutter AppsJun 1, 20208 min read#flutter#dartHow to create your own Dart packages from existing apps, and other things you need to know.
Top 8 Pro Tips for Flutter Web Apps using FirebaseMay 25, 2020#flutter#flutter-web#dart#firebase8 top tips that will save you time in your Flutter web projects.
RxDart by example: querying the GitHub Search API with switchMap & debounceMay 11, 2020#flutter#dart#rxdart#searchBest practices for implementing search with RxDart in Flutter, using the GitHub Search REST API as an example.
RxDart by example: combineLatest and data modeling with FirestoreMay 4, 2020#flutter#dart#rxdart#firestore#firebaseIn-depth tutorial explaning combineLatest and data modeling with movie favourite example Flutter app.
Flutter REST API Crash Course - Full Course Now AvailableApr 9, 2020#flutter#dart#rest#httpMaster the basics of REST APIs and the Dart http package. Build a Coronavirus tracking application following best practices.
Flutter REST API Crash Course - Part 2: Building an API Service with the Dart http packageMar 16, 2020#flutter#dart#rest#httpSecond chapter of my course about building a Coronavirus Tracker App with the nCoV 2019 REST API.
Flutter REST API Crash Course - Part 1: Intro to REST, the nCoV 2019 REST API & REST ClientMar 9, 2020#flutter#dart#rest#httpFirst chapter of my course about building a Coronavirus Tracker App with the nCoV 2019 REST API.
Flutter REST API Crash Course Launch: Build a Coronavirus Tracking AppMar 2, 20204 min read#flutter#dart#rest#httpMaster the basics of REST APIs and the Dart http package. Build a Coronavirus tracking application following best practices.
Take Home Project for Flutter Job Interview - Firebase versionFeb 17, 20206 min read#flutter#dart#firebase#interview#careerTake-home projects are a task often given to candidates during the interview process. This article shows a hypothetical assignment that I would give to candidates interviewing for a Flutter developer role.
Starter Architecture for Flutter & Firebase Apps using RiverpodUpdated Dec 17, 202014 min read#flutter#dart#firebase#architecture#provider#design-patternsIn this tutorial I give a detailed overview of a production-ready architecture that I've fine-tuned over the last two years. You can use the included starter project as the foundation for your Flutter & Firebase apps.
Flutter Custom Painting: Do Not Fear The CanvasJan 27, 20207 min read#flutter#dart#canvas#paintingThis tutorial shows how to use Flutter custom painters to draw a happy face on screen with Dartpad, starting from scratch. Included: drawing custom shapes with Canvas and Paint, and layout considerations when using CustomPainter.
Launching CodeWithAndrea.comJan 6, 20204 min read#flutter#dart#metaCodeWithAndrea.com is a brand new website about high-quality Flutter tutorials. It will contain all my YouTube videos, articles and courses.
What's great about Flutter?Dec 16, 201917 min read#flutter#dartEvaluating Flutter from various criteria: Portability, Language Tooling and Features, Documentation, Performance, Testing, Community, Package Ecosystem, Maintainer Commitment and many more.
Dart Extensions: Full Introduction and Practical Use CasesDec 2, 201911 min read#flutter#dart#extensionsDart extensions unlock a few interesting use cases in Flutter apps. This tutorial shows how to enable them, what they are, when to use them, and when not to.
Advanced Provider Tutorial - Part 3: Better APIs, Navigation, Widget RebuildsNov 25, 2019#flutter#dart#providerMulti-part tutorial on how to choose and upload an avatar image to Firestore. Part 3 shows more advanced use cases of Provider to reduce boilerplate code, deal with navigation, and minimise unwanted widget rebuilds.
Advanced Provider Tutorial - Part 2: MultiProvider, Multiple Services & Stream DependenciesNov 4, 2019#flutter#dart#providerMulti-part tutorial on how to choose and upload an avatar image to Firestore. Part 2 shows how to use MultiProvider to create multiple services, and how to deal with stream dependencies.
Advanced Provider Tutorial - Part 1: Project Setup & Authentication FlowOct 28, 2019#flutter#dart#providerMulti-part tutorial on how to choose and upload an avatar image to Firestore. Part 1 is an overview of initial project setup, and shows how to connect things together with Provider.
Flutter Provider: The Essential GuideOct 21, 2019#flutter#dart#providerEssential guide to Provider for state management in Flutter. This tutorial shows how to refactor the counter app with Provider, and includes in-depth explanations about ChangeNotifier, ChangeNotifierProvider, Provider.of, Consumer and ValueNotifier.
Flutter Provider: IntroductionOct 14, 2019#flutter#dart#providerIntroduction to Provider, a popular package used for dependency injection and state management in Flutter. This tutorial shows how to use it to enable flavors in your Flutter apps.
Design, Develop, Deliver: My Favorite Tools for Building Flutter AppsOct 7, 2019#flutter#dart#UI-design#firebase#CIOverview of the tools I use in my Flutter app development workflow. Including Sketch, Supernova, VS Code, GitUp, GitHub, Firebase, Codemagic.
Flutter Slivers Overview: SliverList, SliverGrid, SliverToBoxAdapter, SliverFillRemainingSep 30, 2019#flutter#dart#layoutsIn-depth overview of Slivers and how to use them (part 2). Includes a demo app showing how to use SliverList, SliverGrid, SliverToBoxAdapter, SliverFillRemaining.
Flutter Slivers Overview: SliverAppBar, SliverPersistentHeaderSep 23, 2019#flutter#dart#layoutsIn-depth overview of Slivers and how to use them (part 1). Includes a demo app showing how to use SliverAppBar and SliverPersistentHeader.
Dart Features For Better Code: Spreads, Collection-If, Collection-ForAug 12, 2019#flutter#dartOverview of the 'Dart as UI' features introduced in Dart 2.3. Uses a fitness tracker custom UI as an example.
Dart Features for Better Code: Types and working with parametersJul 22, 20196 min read#flutter#dartOverview and practical use cases of type inference, final & const, named & positional parameters, @required & default values.
Flutter State Management: setState, BLoC, ValueNotifier, ProviderJul 9, 20198 min read#flutter#dart#state-managementA comparison of different state management techniques, using a simple authentication flow as an example.
Flutter & Firebase: Authentication Service with Provider & ValueNotifierJun 18, 2019#flutter#dart#provider#firebase#authenticationCode walkthrough for the authentication code in my Flutter & Firebase reference authentication demo on GitHub.
Flutter & Firebase: Reference Authentication DemoJun 14, 2019#flutter#dart#firebase#authenticationIntroducing my reference authentication demo with Flutter & Firebase on GitHub, supporting multiple authentication methods and best coding practices.
Flutter & Firebase Authentication with Streams and StreamBuilderMar 7, 2019#flutter#dart#streams#firebase#authenticationContinuation on my video series on how to build a login flow with Firebase. It shows how to use StreamBuilder with the onAuthStateChanged stream to simplify authentication state logic in Flutter apps.
Introduction to Dart - Part 5: Control FlowFeb 8, 2019#flutter#dartDart introduction covering if & else statements, the ternary operator, while and for loops, closures and the fold method, enumerations and switch statements.
Introduction to Dart - Part 4: Collections and GenericsFeb 1, 2019#flutter#dartDart introduction covering list, maps and generics with type annotations.
Introduction to Dart - Part 3: ClassesJan 25, 2019#flutter#dartDart introduction covering classes, including class & super constructors, instance methods, inheritance, base Object classes and the toString() method, abstract classes and computed properties.
Introduction to Dart - Part 2: FunctionsJan 18, 2019#flutter#dartDart introduction covering functions, including return types, optional parameters, nullability and default values, named parameters and the arrow operator.
Introduction to Dart - Part 1: Variables and TypesJan 11, 2019#flutter#dartDart introduction showing how to write a simple program in Dartpad. Includes variable declaration and initialization, string interpolation, type inference, var, final and dynamic.
Flutter: Platform Aware Widgets and DialogsDec 7, 2018#flutter#dartTutorial showing how to switch between Material and Cupertino widgets, and increase code reuse by building a platform-aware abstract base class with concrete sub-classes. Includes an overview of dialogs and their platform-specific differences.
Flutter: Input Validation with RegExpOct 12, 2018#flutter#dart#input-validationOverview of regular expressions (regex). How to implement a Regex validator in Dart and integrate it with Flutter's TextField widget, so that we can validate user input.
Flutter: Deep Dive with Widget Tests and MockitoAug 3, 2018#flutter#dart#testingDeep dive into widget tests. Introduces WidgetTester, Finder, matcher objects, and shows how to write tests for a login screen. Includes test mocks, mockito, acceptance criteria.
Flutter: Add Unit Tests to Your AppJul 27, 2018#flutter#dart#testingHow to extract business logic from your apps into testable classes, and write unit tests in Flutter. Uses a login demo example to write email & password validation tests.
Flutter: Scoped Access with InheritedWidgetJul 17, 2018#flutter#dart#scoped-accessHow to use InheritedWidget to provide scoped access to dependencies within a widget tree, as opposed to constructor dependency injection.
Flutter State Management: setState, StreamBuilder, Scoped Model, ReduxJun 18, 2018#flutter#dart#state-management#redux#streamsHow to implement a Firebase-backed multiple-counter app with different state management techniques. Evaluation of their tradeoffs.
Flutter Layouts Walkthrough: PageView, ListView, GridView, Slivers, CustomScrollViewJun 9, 2018#flutter#dart#layoutsHow to build layouts with scrollable pages, lists, grids, and other convenience widgets. Includes slivers and their usage to create a hero image effect.
Flutter Layouts Walkthrough: Row, Column, Stack, Expanded, PaddingMay 26, 2018#flutter#dart#layoutsHow to build basic layouts in Flutter. Also included: MainAxisAlignment, MainAxisSize, CrossAxisAlignment, Baseline, AlignmentDirectional, LayoutBuilder, SizedBox.
Flutter & RoboHash 03 - Add an avatar to your appMay 19, 2018#flutter#dartHow to add an avatar image to your app by using FutureBuilder and the RoboHash API. Part 3: customising appearance with BoxDecoration, adding a border with a circle shape and a background gradient, and more.
Flutter & RoboHash 02 - Add an avatar to your appMay 19, 2018#flutter#dartHow to add an avatar image to your app by using FutureBuilder and the RoboHash API. Part 2: creating a configurable Avatar class, using the http package, and using FutureBuilder to load content asynchronously and handle loading / success / error states.
Flutter & RoboHash 01 - Add an avatar to your appMay 19, 2018#flutter#dartHow to add an avatar image to your app by using FutureBuilder and the RoboHash API. Part 1: quick tour and project setup.
Flutter & Firebase Auth 06 - Home page + Sign out + Complete and review sign in flowApr 28, 2018#flutter#dart#firebase#authenticationLogin and registration flow with Firebase. Part 6 shows how to create a home page and complete the sign out flow.
Flutter & Firebase Auth 05 - Switch between login & home page + State initializationApr 28, 2018#flutter#dart#firebase#authenticationLogin and registration flow with Firebase. Part 5 shows how to add a root widget and control what UI to show depending on authentication state.
Flutter & Firebase Auth 04 - Overview of root & home page + Refactor Firebase authentication codeApr 28, 2018#flutter#dart#firebase#authenticationLogin and registration flow with Firebase. Part 4 shows how to redirect user to a welcome screen after logging in. Also how to refactor the authentication code into a separate reusable class.
Flutter & Firebase Auth 03 - Add Firebase registration form + State managementApr 22, 2018#flutter#dart#firebase#authenticationLogin and registration flow with Firebase. Part 3 shows how to sign in with Firebase authentication, add the registration flow, write asynchronous code with async/await, and handle errors.
Flutter & Firebase Auth 02 - Create, validate and save a login form + Firebase iOS auth integrationApr 22, 2018#flutter#dart#firebase#authenticationLogin and registration flow with Firebase. Part 2 shows how to build an email and password form with validation, and how to add Firebase to the project (iOS setup included).
Flutter & Firebase Auth 01 - Intro + Create a new app + Stateless & stateful widgetsApr 21, 2018#flutter#dart#firebase#authenticationLogin and registration flow with Firebase. Part 1 includes an introduction to Flutter, a preview of the login and registration flow, and the initial project setup.
Flutter vs React Native - Which is the Best Choice for Your Next App?Jan 13, 2021#flutter#react-native#dartShould you choose Flutter or React Native for your next app? This article offers an in-depth overview of the two frameworks, along with their pros and cons.
Yay! Implicit Downcasts are no longer allowed in Dart 2.9Jun 22, 20202 min read#dartWhat implicit downcasts are, why they make your code unsafe, and how to avoid them.
Case Study: Automating UI/Integration Tests with Flutter Driver and CodemagicOct 30, 201913 min read#flutter#dart#testing#CILet's see how to write integration tests with Flutter Driver, how they differ from widget tests, and how to run them with Codemagic.
Flutter: Designing an Authentication API with Service ClassesJun 17, 20196 min read#flutter#dart#firebase#authentication#architectureLet's see how use service classes to encapsulate 3rd party libraries and APIs, and decouple them from the rest of the application. We will use authentication as a concrete example of this.
Flutter: Global Access vs Scoped Access with ProviderJun 10, 20195 min read#flutter#dart#dependency-injection#provider#firebase#authentication#scoped-accessThis article shows how to use scoped access with Provider when using service classes in our Flutter apps.
Super Simple Authentication Flow with Flutter & FirebaseJun 3, 20195 min read#flutter#dart#firebase#authenticationIn this article we implement a simple authentication flow in Flutter, in less than 100 lines of code.
Widget-Async-Bloc-Service: A Practical Architecture for Flutter AppsMay 21, 201911 min read#flutter#dart#bloc#state-managementThis article introduces a new architectural pattern that I often use in my Flutter Apps. It is inspired by BLoCs and RxVMS.
Dart vs Swift: a comparisonDec 27, 201823 min read#flutter#dart#swift#iosDetailed side-by-side comparison of language features between Dart 2.1 and Swift 4.2.
Flutter will change everything: A Follow UpDec 12, 20183 min read#flutter#dart#swift#iosClarifications and apologies following my previous article.
Flutter will change everything, and is an excellent choice for iOS developmentDec 10, 201812 min read#flutter#dart#swift#iosControversial article with some history and a detailed comparison between Flutter and native iOS development. Includes an example showing how to build a contact list in Flutter and iOS.
My Favourite List of Flutter ResourcesDec 3, 20188 min read#flutter#dartFlutter is awesome! Big thanks to the Flutter team and all the people in the wider community that keep pushing this project to new heights and sharing new learning material.
Flutter: The power of small and reusable widgetsNov 26, 20186 min read#flutter#dart#layouts#refactoringLet's learn about color gradients, composition, writing reusable UI code, and CupertinoSegmentedControl.
Flutter: Building a Flight CO2 Calculator (Part 1)Nov 19, 20184 min read#flutter#dartLet's see how to load a CSV file into strongly-typed model classes, that can be used to calculate CO2 emissions for flights between two airports.
Flutter: Adding Animated Overlays to Your AppSep 23, 20185 min read#flutter#dart#navigation#layoutsLet's see how to use some custom code to add animated overlays and reveal action options from a FAB.
Flutter: BottomAppBar Navigation with FABSep 13, 20185 min read#flutter#dart#navigation#layoutsHow to dock a floating action button in the middle of a BottomAppBar.
Flutter Bottom Navigation Bar with Multiple Navigators: A Case StudyUpdated Dec 5, 202010 min read#flutter#dart#navigationA guide to implementing multiple independent navigation stacks with BottomNavigationBar in Flutter.
Flutter: My favourite keyboard shortcutsJun 2, 20186 min read#flutter#dart#productivityList of the most useful IntelliJ/Android Studio shortcuts for better productivity.
Intro to Platform Channels: Building an Image Picker in FlutterApr 26, 20184 min read#flutter#dart#platform-channels#ios#swiftLet's see how to use platform channels by building an image picker on iOS, and using it from the Dart code.
Take your Flutter tests to the next level with abstract classes and dependency injectionApr 8, 20186 min read#flutter#dart#testingThis article shows how to write testable code in Flutter, and take your widget tests to the next level.
How fast is Flutter? I built a stopwatch app to find outMar 18, 20186 min read#flutter#dart#performanceIn-depth performance comparison for a stopwatch app built in native iOS vs Flutter.
How to disable the default Widget splash effect in FlutterFeb 19, 2021#flutter#dartMany Material widgets such as InkWell, ElevatedButton, and ListTile show a splash effect when selected. Here's how to disable this.
How to speed up code generation with build_runner in Dart & FlutterJan 22, 2021#flutter#dart#code-generation#freezedTwo effective techniques for reducing code generation times for Flutter apps that use build_runner.
Dart & Flutter Easy Wins 36-42Sep 13, 2020#flutter#dartEasy ways to improve your Dart & Flutter code. Published weekly.
Dart & Flutter Easy Wins 29-35Aug 30, 2020#flutter#dartEasy ways to improve your Dart & Flutter code. Published weekly.
Dart & Flutter Easy Wins 22-28Aug 23, 2020#flutter#dartEasy ways to improve your Dart & Flutter code. Published weekly.
Dart & Flutter Easy Wins 15-21Aug 16, 2020#flutter#dartEasy ways to improve your Dart & Flutter code. Published weekly.
Dart & Flutter Easy Wins 8-14Aug 13, 2020#flutter#dartEasy ways to improve your Dart & Flutter code. Published weekly.
Dart & Flutter Easy Wins 1-7Aug 9, 2020#flutter#dartEasy ways to improve your Dart & Flutter code. Published weekly.
Hide your Firebase config with .gitignore in Flutter web projectsApr 13, 2020#flutter#dart#firebase#web#gitA useful tip to hide your Firebase config from git in your Flutter web projects.
Easily move the focus between TextFormFields with FocusScopeNodeJan 22, 2020#flutter#dartFocusScopeNode provides a simpler way of move the focus between text fields in your Flutter forms.
Using underscores for unused builder arguments in DartJan 12, 2020#flutter#dart#design-patternsHow to remove some noise in your Dart code by using underscores for unused function arguments.
Adding top and bottom separators with ListView.separatedJan 12, 2020#flutter#dart#layoutsHow to make your ListViews feel native on iOS by adding top and bottom separators.