Loading data from Firestore with Flutter

In a recent side-project of mine I needed to perform some simple loading of data from an external data source. This was all data that I had collated myself so I decided to manually load it up into Firestore — in this post we’re going to quickly take a look at how we can hook up our Flutter application to load data from a Firestore datastore to display to our users. This post will hopefully act as both a guide to show you how to implement Firestore in your apps and also a way to show you how little work is involved…

Android Networking with Coroutines and Retrofit

Recently I’ve been reading up on, watching talks on and been generally getting more curious about Kotlin coroutines. Now that they are stable with the release of Kotlin 1.3 it felt like about time to start diving in an play with converting my existing RxJava code over to using coroutines. In this post, we’re going to focus on how we can take an existing network request flow and convert it over to using coroutines instead of RxJava. Now to be honest, before I got into the practical side of coroutines I thought there were going to be a lot of…

Exploring Actions on Google Responses: Basic Card

When sending responses from our Actions on Google conversational tools, there are a number of different ways in which we can present content to our users. In this post we’re going to look at adding responses to our conversations using the Basic Card. When building responses for our conversation tools we have the ability to send what is known as a Basic Card — this a response that is supported only for surfaces that support visual (actions.capability.SCREEN_OUTPUT) output. A Basic Card will look something like this on screen: The important thing to note when using the Basic Card is that there must…

Exploring Google Play App Signing

When distributing our Android Applications we’ve always been required to sign our APK using a keystore for our application — this has allowed us to ensure that only the developer(s) of our app are able to upload updated APKs to the play console. However, because this keystore acts as a fingerprint to the lifecycle of our application — if anything was to happen to this then we hit a bit of a tricky situation. Because of the disadvantages that the current signing process brings, Google Play App Signing is here to help make things smoother. In this article I want to dive into this…

Exploring Actions on Google Responses: Simple Response

When sending responses from our Actions on Google conversational tools, there are a number of different ways in which we can present content to our users. In this post we’re going to look at adding responses to our conversations using the Simple Response. When building responses for our conversation tools we have the ability to send what is known as a Simple Response — this a response that is supported for both visual (actions.capability.SCREEN_OUTPUT) and audio (actions.capability.AUDIO_OUTPUT) output. Consisting solely of textual content, a visual response will look something like this on screen: Screenshot taken from the emulator The textual content which is…

An introduction to UI Testing on iOS

I’ve always been a big fan of UI testing where appropriate, we can use it to automate the validation of visual components in our applications which allows us to reduce bugs, regressions and confusing behaviour within our applications — all helping us to save time from manually checking the behaviour and display of our view components. In this article we’re going to take a brief look at the XCTest framework which allows us to create a collection of tests for our iOS projects — this time around we’re going to focus on User Interface tests. At this point I’m going to presume that you…

Building HashTrack with Flutter: Authentication logic

If you haven’t check out the previous post in these series, then you can do so here: Building HashTrack with Flutter: Intro and setup Building HashTrack with Flutter: Main class and Localization setup You can also find the code for this guide here: Now that we have the foundations of our application built, we’re going to go ahead and setup the first screens which will be shown to the user when opening the app — the authentication screens. This is going to require us to create and configure several different components: A sign-in screen — Providing a button that allows the user to sign-in…