Building with Flutter and Firebase

June 30, 2022
by
BitBakery Team

Co-op placements allow students to develop technical skills while building real-world work experience. It’s continuous learning in action, which also happens to be one of the core values at BitBakery.

This is my second co-op term, and one of the main projects is giving me the chance to dig deep into two technologies, Google Firebase and Flutter. We recently launched Water My Lawn, a BitBakery Labs app that helps property owners conserve water by notifying them when the weather and ground conditions are right. 

In this post, I will share what I’ve learned so far about Firebase and Flutter and some things to keep in mind if you’re looking to build with these tools.

What are Google Firebase and Flutter?

I’m always interested in learning new technologies. I had previously heard about both tools, but I’ve never had the chance to research them in detail. At the start of this term, I sat down with their documentation and sample projects to familiarize myself before we started on Water My Lawn.

The BitBakery team has been looking for the right opportunity to build an all-Google stack app for a while now, but we haven’t had the right one. That was until we started working on Water My Lawn. Another team here has since used Firebase for a client project, but Water My Lawn would be the first Firebase and Flutter app.

Google Firebase is a cloud technology similar to Amazon Web Services (AWS). Firebase is where we host the API and algorithms that power Water My Lawn. We’ve leveraged AWS for similar projects, but Firebase has numerous advantages for an app like Water My Lawn.

One of the main reasons we chose Firebase is its deep integration with Google Analytics. We can see where customers might be having a problem, how much time people spend on the app, and if people are experiencing crashes on a particular screen or function. 

Firebase also powers push notifications for the app. That’s critical to let the users know when it’s time to water their lawns. 

That’s the backend. The front end of Water My Lawn is built using Flutter. It’s a cross-platform UI framework that lets us create for Android and iOS devices simultaneously—without having to maintain two separate code bases. 

You may have heard of other cross-platform tools like React Native or Ionic before. Flutter is similar in many ways as it allows you to build native apps, but I’ve found it superior to React in its versatility. One significant advantage is that Flutter enables you to build Android and iOS and native websites, and soon you’ll be able to build Windows and macOS apps too. You can build an app on it that can literally be native on every platform.

What I’ve learned from building with Firebase and Flutter

Every platform, framework, or toolset has its issues. But so far, I’ve been amazed at how powerful these tools are. 

There’s not always native API support available

The only thing I’ve found so far is that Flutter doesn’t always provide out-of-the-box support for every native API on Android or iOS. You may have to write some custom configuration, but for the most part, someone in the Flutter community has probably written a package to manage the coupling for you.

Local storage differences

Android and iOS manage local storage differently, which can take some work to manage depending on how your project uses local storage. Thankfully there are community packages available to manage this.

Flutter brings your ideas to life—fast

I work with Javascript and React.js every day. After building with Flutter, I wish every project we work on could be made with it. UI building with Flutter is so reliably quick and easy. You can visualize the page you want to build, and then you do it. Flutter works reliably the same way every time. The classic web dev joke in JavaScript asks a developer to center a div. You’ll see videos of people who have been using JavaScript for decades and are having trouble centering a DIV. If I want to get something in the center with Flutter, I can do it every time without issue.

Community support is still building

Javascript., React, and Ionic have large communities since those tools have been around for a while. Flutter was only released in 2017, so the community is still growing. You can find the help you need. You might have to ask around more than in the other communities.

Firebase is great for plug and play

Between Water My Lawn and our other client projects, we’ve found that Firebase is easier to use for plug-and-play solutions. I set up the authentication for it, and that’s it. It almost seems like it shouldn’t be this easy at times. AWS provides you with many bare-bones configurations, but with Firebase, most configurations are already set up. We haven’t yet run into a case that took away our freedom to do exactly what we wanted.

What’s next for me?

My current co-op placement ends in August, but we’ve still got many features on the roadmap to build for Water My Lawn users. In September, I’m heading back to school where I’ll have a few more co-op placements left before graduation. Wes, BitBakery’s CEO, has encouraged me to try as many different companies as possible. He said that his experience working at different companies helped him grow as a developer and a leader. 

I’d love to hear your feedback on Water My Lawn - you can download it for iOS and Android today!

BitBakery Logo
Unit 100 - 151 Charles St. W.
Kitchener, ON N2G 1H6
(647) 483-2678