Skip to main content


A month of Flutter: configure Firebase Auth for Sign in with Google on Android

Originally published on Yesterday I added the sign-in button. Now let's make it do something. First I'll create a new Firebase project that will be used in development. Once I get ready to publish the app I'll create a production project.
Once the project is created, I'm going to enable Google as a sign-in provider for Firebase Auth. Enabling Google requires an app name and an email address. The email address can be a Google Group mailing list. I made sure the group is configured so that anyone can post but nobody can join and only members can read.
There are a number of alternatives to Google if Twitter or email/password is more appropriate for the app's target user.
Within android/app/build.gradle I will replace the default com.example.<name>applicationId with app.birb. An application IDshould be a domain that you own with the parts in reverse order. Sign in with Google requires that API clients be authenticated. This basically means that yo…
Recent posts

A month of Flutter: FABulous authentication

Originally published on Wouldn't it be FABulous if users could sign in to the app? I agree. I'm planning on using Firebase Authentication via the firebase_auth package but today is all about that FAB. This implementation is pretty simple. I'm going to create a new StatelessWidget that uses an extended FAB with a G logo and text. onPressed will kick off the authentication flow in the future, but for now it just prints that the FAB was tapped. classSignInFabextendsStatelessWidget{constSignInFab();@overrideWidgetbuild(BuildContext

A month of Flutter: rendering network images

Originally published on To finish off week two, I'm going to finally render some prim Unsplash birbs. In PostItem I'll use a Column widget instead of the previous Card widget. Card creates a nice boarder shape for your material but now I don't want any shadows to draw attention away from the images. Column(crossAxisAlignment:CrossAxisAlignment.start,children:<Widget>[ClipRRect(child:Image