How to setup different firebase environments in Flutter

Daniel Brotherston picture Daniel Brotherston · May 15, 2018 · Viewed 7.6k times · Source

I am trying to figure out how to set up different firebase environments in a flutter project.

I understand how to do this in firebase, I created two projects, one for production, one for the test. Then, in an iOS or Android project, I could use various methods to switch between these two environments using separate google-services.json or GoogleServices-Info.plist files.

In Flutter I found this description of how to separate environments, but it only explains how to differentiate between environments in the flutter code.

How can I get this environment to change what iOS and Android build at compile time? It would even be sufficient simply to allow a file copy hook at build time.

Answer

Oliver Dixon picture Oliver Dixon · Jul 24, 2020

You can switch accounts using FirebaseApp.configure. You can offer your own solution or secret dev panel to switch between them.

The solutions will build flavours and plist implementations will lock you into builds when you deploy for TestFlight + they are messy.

Here's an example: (You could use Assets as well.)

// Load a named file.
let filePath = Bundle.main.path(forResource: "MyGoogleService", ofType: "plist")
guard let fileopts = FirebaseOptions(contentsOfFile: filePath!)
  else { assert(false, "Couldn't load config file") }
FirebaseApp.configure(options: fileopts)