FirebaseCommand class
Generates Firebase configuration for both Android & iOS platforms.
The FirebaseCommand sets up Firebase configuration files for Flutter applications by running the flutterfire CLI tool with appropriate parameters. It supports:
- Flavor-specific Firebase configuration
- Multiple platform targeting (Android, iOS, Web)
- CI/CD environment integration with service accounts
- Configuration regeneration control
- Automatic flutterfire installation validation
Usage
Basic Firebase setup:
morpheme generate firebase
Setup for specific flavor:
morpheme generate firebase --flavor dev
Force overwrite existing configuration:
morpheme generate firebase --overwrite
With custom morpheme.yaml path:
morpheme generate firebase --morpheme-yaml path/to/morpheme.yaml
Configuration
The command reads Firebase configuration from morpheme.yaml:
flavors:
dev:
firebase:
project_id: "your-project-id"
token: "optional-auth-token"
platform: "android,ios"
output: "lib/firebase_options.dart"
android_package_name: "com.example.app"
ios_bundle_id: "com.example.app"
web_app_id: "web-app-id"
service_account: "path/to/service-account.json"
enable_ci_use_service_account: true
Output
- Generates firebase_options.dart with Firebase configuration
- Reports success or failure with detailed feedback
- Handles CI/CD environments with service account authentication
Dependencies
- Requires flutterfire_cli to be installed globally
- Valid morpheme.yaml configuration file
- Service account JSON file for CI/CD environments (optional)
Exceptions
Throws FileSystemException if morpheme.yaml is missing or invalid. Throws ProcessException if flutterfire command fails to execute.
Constructors
- FirebaseCommand()
- Creates a new instance of FirebaseCommand.
Properties
-
aliases
→ List<
String> -
Alternate names for this command.
no setterinherited
- argParser → ArgParser
-
The argument parser for this command.
no setterinherited
- argResults → ArgResults?
-
The parsed argument results for this command.
no setterinherited
- category → String
-
The command's category.
no setteroverride
- description → String
-
A description of this command, included in usage.
no setteroverride
- globalResults → ArgResults?
-
The parsed global argument results.
no setterinherited
- hashCode → int
-
The hash code for this object.
no setterinherited
-
Whether or not this command should be hidden from help listings.
no setterinherited
- invocation → String
-
A single-line template for how to invoke this command (e.g.
"pub getpackage").no setterinherited - name → String
-
The name of this command.
no setteroverride
- parent → Command?
-
The command's parent command, if this is a subcommand.
no setterinherited
- runner → CommandRunner?
-
The command runner for this command.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
-
subcommands
→ Map<
String, Command> -
An unmodifiable view of all sublevel commands of this command.
no setterinherited
-
suggestionAliases
→ List<
String> -
Alternate non-functional names for this command.
no setterinherited
- summary → String
-
A short description of this command, included in parent's
CommandRunner.usage.
no setterinherited
- takesArguments → bool
-
Whether or not this command takes positional arguments in addition to
options.
no setterinherited
- usage → String
-
Generates a string displaying usage information for this command.
no setterinherited
-
An optional footer for usage.
no setterinherited
Methods
-
addSubcommand(
Command command) → void -
Adds Command as a subcommand of this.
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
printUsage(
) → void -
Prints the usage information for this command.
inherited
-
run(
) → void -
Runs this command.
override
-
toString(
) → String -
A string representation of this object.
inherited
-
usageException(
String message) → Never -
Throws a UsageException with
message.inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited