Dagger
Search

flutter-container

Provides functions for building Flutter Docker images (flutter, android, emulator stages).
Images are pre-configured with sensible defaults; versions can be overridden via
WithFlutterVersion and WithAndroidVersion.

Installation

dagger install github.com/daniel-naegele/daggerverse/flutter-container@003f668d6c6d5649dddbc4e47637d61f07d76483

Entrypoint

Return Type
FlutterContainer !
Example
dagger -m github.com/daniel-naegele/daggerverse/flutter-container@003f668d6c6d5649dddbc4e47637d61f07d76483 call \
func (m *MyModule) Example() *dagger.FlutterContainer  {
	return dag.
			Fluttercontainer()
}
@function
def example() -> dagger.FlutterContainer:
	return (
		dag.flutter_container()
	)
@func()
example(): FlutterContainer {
	return dag
		.flutterContainer()
}

Types

FlutterContainer 🔗

flutterVersion() 🔗

Flutter SDK version tag (e.g. “3.41.9”).

Return Type
String !
Example
dagger -m github.com/daniel-naegele/daggerverse/flutter-container@003f668d6c6d5649dddbc4e47637d61f07d76483 call \
 flutter-version
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			Fluttercontainer().
			Flutterversion(ctx)
}
@function
async def example() -> str:
	return await (
		dag.flutter_container()
		.flutterversion()
	)
@func()
async example(): Promise<string> {
	return dag
		.flutterContainer()
		.flutterVersion()
}

androidVersion() 🔗

Android platform API level for the emulator system image (e.g. “36”).

Return Type
String !
Example
dagger -m github.com/daniel-naegele/daggerverse/flutter-container@003f668d6c6d5649dddbc4e47637d61f07d76483 call \
 android-version
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			Fluttercontainer().
			Androidversion(ctx)
}
@function
async def example() -> str:
	return await (
		dag.flutter_container()
		.androidversion()
	)
@func()
async example(): Promise<string> {
	return dag
		.flutterContainer()
		.androidVersion()
}

android() 🔗

Android returns a container with the Flutter SDK and Android tools installed. When platform is not specified, the engine’s native platform is used.

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
platformScalar -No description provided
Example
dagger -m github.com/daniel-naegele/daggerverse/flutter-container@003f668d6c6d5649dddbc4e47637d61f07d76483 call \
 android
func (m *MyModule) Example() *dagger.Container  {
	return dag.
			Fluttercontainer().
			Android()
}
@function
def example() -> dagger.Container:
	return (
		dag.flutter_container()
		.android()
	)
@func()
example(): Container {
	return dag
		.flutterContainer()
		.android()
}

emulator() 🔗

Emulator returns a container with Flutter, Android tools, a pre-created AVD and the android-start-emulator / android-stop-emulator / android-wait-for-emulator helper scripts.

The ABI is automatically selected based on platform: - linux/amd64 → x86_64 - linux/arm64 → arm64-v8a

When platform is not specified, the engine’s native platform is used.

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
platformScalar -No description provided
Example
dagger -m github.com/daniel-naegele/daggerverse/flutter-container@003f668d6c6d5649dddbc4e47637d61f07d76483 call \
 emulator
func (m *MyModule) Example() *dagger.Container  {
	return dag.
			Fluttercontainer().
			Emulator()
}
@function
def example() -> dagger.Container:
	return (
		dag.flutter_container()
		.emulator()
	)
@func()
example(): Container {
	return dag
		.flutterContainer()
		.emulator()
}

emulatorService() 🔗

EmulatorService returns a service running a booted Android emulator that adb clients can connect to over the network.

The service exposes the emulator console port (port) and adb port (portBoth only become reachable once the emulator finished booting, so Dagger’s port health check implies a booted device. Bind it to a client container and connect with adb:

ctr.WithServiceBinding("emulator", svc).
	WithExec([]string{"adb", "connect", "emulator:5555"})

The service runs with insecure root capabilities so /dev/kvm is available for hardware acceleration (ANDROID_EMULATOR_DISABLE_LINUX_HW_ACCEL=auto). Without KVM the x86_64 emulator falls back to software emulation, which is very slow.

Return Type
Service !
Arguments
NameTypeDefault ValueDescription
platformScalar -No description provided
avdNameString "emulator"No description provided
portInteger 5554

Emulator console port; the adb port is the console port plus one.

Example
dagger -m github.com/daniel-naegele/daggerverse/flutter-container@003f668d6c6d5649dddbc4e47637d61f07d76483 call \
 emulator-service
func (m *MyModule) Example() *dagger.Service  {
	return dag.
			Fluttercontainer().
			Emulatorservice()
}
@function
def example() -> dagger.Service:
	return (
		dag.flutter_container()
		.emulatorservice()
	)
@func()
example(): Service {
	return dag
		.flutterContainer()
		.emulatorService()
}

flutter() 🔗

Flutter returns a container with the Flutter SDK installed (ubuntu:24.04 base). When platform is not specified, the engine’s native platform is used.

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
platformScalar -No description provided
Example
dagger -m github.com/daniel-naegele/daggerverse/flutter-container@003f668d6c6d5649dddbc4e47637d61f07d76483 call \
 flutter
func (m *MyModule) Example() *dagger.Container  {
	return dag.
			Fluttercontainer().
			Flutter()
}
@function
def example() -> dagger.Container:
	return (
		dag.flutter_container()
		.flutter()
	)
@func()
example(): Container {
	return dag
		.flutterContainer()
		.flutter()
}

latestVersion() 🔗

LatestVersion returns the current latest stable Flutter version string.

Return Type
String !
Example
dagger -m github.com/daniel-naegele/daggerverse/flutter-container@003f668d6c6d5649dddbc4e47637d61f07d76483 call \
 latest-version
func (m *MyModule) Example(ctx context.Context) string  {
	return dag.
			Fluttercontainer().
			Latestversion(ctx)
}
@function
async def example() -> str:
	return await (
		dag.flutter_container()
		.latestversion()
	)
@func()
async example(): Promise<string> {
	return dag
		.flutterContainer()
		.latestVersion()
}

prebuiltAndroid() 🔗

PrebuiltAndroid pulls the published Flutter + Android SDK image for the configured Flutter version and Android API level instead of building it.

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
registryString "ghcr.io/daniel-naegele"

Registry the images were published to.

Example
dagger -m github.com/daniel-naegele/daggerverse/flutter-container@003f668d6c6d5649dddbc4e47637d61f07d76483 call \
 prebuilt-android
func (m *MyModule) Example() *dagger.Container  {
	return dag.
			Fluttercontainer().
			Prebuiltandroid()
}
@function
def example() -> dagger.Container:
	return (
		dag.flutter_container()
		.prebuiltandroid()
	)
@func()
example(): Container {
	return dag
		.flutterContainer()
		.prebuiltAndroid()
}

prebuiltEmulator() 🔗

PrebuiltEmulator pulls the published emulator image (linux/amd64 only) for the configured Flutter version and Android API level instead of building it.

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
registryString "ghcr.io/daniel-naegele"

Registry the images were published to.

Example
dagger -m github.com/daniel-naegele/daggerverse/flutter-container@003f668d6c6d5649dddbc4e47637d61f07d76483 call \
 prebuilt-emulator
func (m *MyModule) Example() *dagger.Container  {
	return dag.
			Fluttercontainer().
			Prebuiltemulator()
}
@function
def example() -> dagger.Container:
	return (
		dag.flutter_container()
		.prebuiltemulator()
	)
@func()
example(): Container {
	return dag
		.flutterContainer()
		.prebuiltEmulator()
}

prebuiltFlutter() 🔗

PrebuiltFlutter pulls the published Flutter SDK image for the configured version instead of building it.

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
registryString "ghcr.io/daniel-naegele"

Registry the images were published to.

Example
dagger -m github.com/daniel-naegele/daggerverse/flutter-container@003f668d6c6d5649dddbc4e47637d61f07d76483 call \
 prebuilt-flutter
func (m *MyModule) Example() *dagger.Container  {
	return dag.
			Fluttercontainer().
			Prebuiltflutter()
}
@function
def example() -> dagger.Container:
	return (
		dag.flutter_container()
		.prebuiltflutter()
	)
@func()
example(): Container {
	return dag
		.flutterContainer()
		.prebuiltFlutter()
}

publish() 🔗

Publish builds multi-arch Flutter images and pushes them to a container registry.

Publishes three tags: - flutter: — flutter base (ubuntu + Flutter SDK) - flutter:-android — android base (flutter + Android SDK - flutter:-emulator — emulator (android + emulator + AVD, per-platform ABI)

The android and emulator images use the default Android API level, so Publish refuses to run with a different one (it would overwrite the default tags).

Returns the digest of the published flutter base image.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
registryString !-No description provided
usernameString !-No description provided
passwordSecret !-No description provided
platformsString "linux/amd64,linux/arm64"No description provided
Example
dagger -m github.com/daniel-naegele/daggerverse/flutter-container@003f668d6c6d5649dddbc4e47637d61f07d76483 call \
 publish --registry string --username string --password env:MYSECRET
func (m *MyModule) Example(ctx context.Context, registry string, username string, password *dagger.Secret) string  {
	return dag.
			Fluttercontainer().
			Publish(ctx, registry, username, password)
}
@function
async def example(registry: str, username: str, password: dagger.Secret) -> str:
	return await (
		dag.flutter_container()
		.publish(registry, username, password)
	)
@func()
async example(registry: string, username: string, password: Secret): Promise<string> {
	return dag
		.flutterContainer()
		.publish(registry, username, password)
}

stableVersionsSince() 🔗

StableVersionsSince returns stable Flutter versions released in the last two years, oldest-first.

Return Type
[String ! ] !
Example
dagger -m github.com/daniel-naegele/daggerverse/flutter-container@003f668d6c6d5649dddbc4e47637d61f07d76483 call \
 stable-versions-since
func (m *MyModule) Example(ctx context.Context) []string  {
	return dag.
			Fluttercontainer().
			Stableversionssince(ctx)
}
@function
async def example() -> List[str]:
	return await (
		dag.flutter_container()
		.stableversionssince()
	)
@func()
async example(): Promise<string[]> {
	return dag
		.flutterContainer()
		.stableVersionsSince()
}

withAndroidVersion() 🔗

WithAndroidVersion returns this module configured to use the given Android API level.

Return Type
FlutterContainer !
Arguments
NameTypeDefault ValueDescription
versionString !-No description provided
Example
dagger -m github.com/daniel-naegele/daggerverse/flutter-container@003f668d6c6d5649dddbc4e47637d61f07d76483 call \
 with-android-version --version string
func (m *MyModule) Example(version string) *dagger.FlutterContainer  {
	return dag.
			Fluttercontainer().
			Withandroidversion(version)
}
@function
def example(version: str) -> dagger.FlutterContainer:
	return (
		dag.flutter_container()
		.withandroidversion(version)
	)
@func()
example(version: string): FlutterContainer {
	return dag
		.flutterContainer()
		.withAndroidVersion(version)
}

withFlutterVersion() 🔗

WithFlutterVersion returns this module configured to use the given Flutter version.

Return Type
FlutterContainer !
Arguments
NameTypeDefault ValueDescription
versionString !-No description provided
Example
dagger -m github.com/daniel-naegele/daggerverse/flutter-container@003f668d6c6d5649dddbc4e47637d61f07d76483 call \
 with-flutter-version --version string
func (m *MyModule) Example(version string) *dagger.FlutterContainer  {
	return dag.
			Fluttercontainer().
			Withflutterversion(version)
}
@function
def example(version: str) -> dagger.FlutterContainer:
	return (
		dag.flutter_container()
		.withflutterversion(version)
	)
@func()
example(version: string): FlutterContainer {
	return dag
		.flutterContainer()
		.withFlutterVersion(version)
}