FlameGame class Null safety

This is a more complete and opinionated implementation of Game.

FlameGame can be extended to add your game logic, or you can keep the logic in child Components.

This is the recommended base class to use for most games made with Flame. It is based on the Flame Component System (also known as FCS).

Inheritance
Mixed in types
Available Extensions

Constructors

FlameGame({Iterable<Component>? children, Camera? camera})

Properties

assets AssetsCache
The cache of all (non-image) assets loaded into the game. This defaults to the global Flame.assets cache, but you can replace this with another instance if needed.
read / write, inherited
buildContext BuildContext?
Currently attached build context. Can be null if not attached.
read-only, inherited
camera Camera
The camera translates the coordinate space after the viewport is applied.
read-only
canvasSize Vector2
read-only, inherited
children ComponentSet
The children components of this component.
read-only, inherited
debugColor Color
The color that the debug output should be rendered with.
read / write, inherited
debugCoordinatesPrecision int?
How many decimal digits to print when displaying coordinates in the debug mode. Setting this to null will suppress all coordinates from the output.
read-only, inherited
debugMode bool
Returns whether this Component is in debug mode or not. When a child is added to the Component it gets the same debugMode as its parent has when it is prepared.
read / write, inherited
debugPaint Paint
The debugColor represented as a Paint object.
read-only, inherited
debugTextPaint TextPaint
Returns a TextPaint object with the debugColor set as color for the text.
read-only, inherited
gameStateListeners List<VoidCallback>
@visibleForTesting, final, inherited
hasChildren bool
read-only, inherited
hashCode int
The hash code for this object.
read-only, inherited
hasLayout bool
Indicates if this game instance is connected to a GameWidget that is live in the flutter widget tree. Once this is true, the game is ready to have its size used or in the case of a FlameGame, to receive components.
read-only, inherited
hasPendingLifecycleEvents bool
read-only, inherited
images Images
The cache of all images loaded into the game. This defaults to the global Flame.images cache, but you can replace it with a new cache instance if needed.
read / write, inherited
isAttached bool
Whether the game widget was attached to the Flutter tree.
read-only, inherited
isLoaded bool
Whether this component has completed its onLoad step.
read-only, inherited
isLoading bool
Whether the component is currently executing its onLoad step.
read-only, inherited
isMounted bool
Whether this component is currently added to a component tree.
read-only, inherited
isRemoving bool
Whether the component is scheduled to be removed.
read-only, inherited
lifecycle → _LifecycleManager
@protected, read-only, inherited
loaded Future<void>
A future that completes when this component finishes loading.
read-only, inherited
mounted Future<void>
A future that will complete once the component is mounted on its parent.
read-only, inherited
mouseCursor MouseCursor
Used to change the mouse cursor of the GameWidget running this game. Setting the value to null will make the GameWidget defer the choice of the cursor to the closest region available on the tree.
read / write, inherited
onLoadFuture Future<void>?
@internal, read-only, inherited
overlays → OverlayManager
A property that stores an OverlayManager
late, final, inherited
parent Component?
Who owns this component in the component tree.
read / write, inherited
paused bool
Returns is the engine if currently paused or running
read / write, inherited
pauseEngineFn VoidCallback?
read / write, inherited
positionType PositionType
What coordinate system this component should respect (i.e. should it observe camera, viewport, or use the raw canvas).
read / write, inherited
priority int
Render priority of this component. This allows you to control the order in which your components are rendered.
read / write, inherited
projector Projector
This is the projector used by all components that respect the camera (respectCamera = true). This can be overridden on your Game implementation.
read / write, inherited-setter, override-getter
renderBox → GameRenderBox
Just a reference back to the render box that is kept up to date by the engine.
read-only, inherited
resumeEngineFn VoidCallback?
read / write, inherited
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited
size Vector2
This is overwritten to consider the viewport transformation.
read-only, override
viewportProjector Projector
This is the projector used by components that don't respect the camera (positionType = PositionType.viewport;). This can be overridden on your Game implementation.
read / write, inherited-setter, override-getter

Methods

add(Component component) Future<void>?
Schedules component to be added as a child to this component.
inherited
addAll(Iterable<Component> components) Future<void>
A convenience method to add multiple children at once.
inherited
addGameStateListener(VoidCallback callback) → void
inherited
addToParent(Component parent) Future<void>?
Adds this component as a child of parent (see add for details).
inherited
ancestors({bool includeSelf = false}) Iterable<Component>
An iterator producing this component's parent, then its parent's parent, then the great-grand-parent, and so on, until it reaches a component without a parent.
inherited
assertHasLayout() → void
@protected, inherited
attach(PipelineOwner owner, GameRenderBox gameRenderBox) → void
Marks game as attached to any Flutter widget tree.
inherited
backgroundColor() Color
Returns the game background color. By default it will return a black color. It cannot be changed at runtime, because the game widget does not get rebuild when this value changes.
inherited
changeParent(Component newParent) → void
Changes the current parent for another parent and prepares the tree under the new root.
inherited
changePriorityWithoutResorting(int priority) → void
Usually this is not something that the user would want to call since the component list isn't re-ordered when it is called. See FlameGame.changePriority instead.
inherited
componentsAtPoint(Vector2 point, [List<Vector2>? nestedPoints]) Iterable<Component>
An iterable of descendant components intersecting the given point. The point is in the local coordinate space.
inherited
contains(Component c) bool
Whether the children list contains the given component.
inherited
containsLocalPoint(Vector2 p) bool
Whether a point is within the boundaries of the visible part of the game.
override
containsPoint(Vector2 point) bool
Same as containsLocalPoint, but for a "global" point.
inherited
convertGlobalToLocalCoordinate(Vector2 point) Vector2
Converts a global coordinate (i.e. w.r.t. the app itself) to a local coordinate (i.e. w.r.t. he game widget). If the widget occupies the whole app ("full screen" games), or is not attached to Flutter, this operation is the identity.
inherited
convertLocalToGlobalCoordinate(Vector2 point) Vector2
Converts a local coordinate (i.e. w.r.t. the game widget) to a global coordinate (i.e. w.r.t. the app itself). If the widget occupies the whole app ("full screen" games), or is not attached to Flutter, this operation is the identity.
inherited
createComponentSet() ComponentSet
This method creates the children container for the current component. Override this method if you need to have a custom ComponentSet within a particular class.
inherited
currentTime() double
Returns the current time in seconds with microseconds precision.
descendants({bool includeSelf = false, bool reversed = false}) Iterable<Component>
Recursively enumerates all nested children.
inherited
detach() → void
Marks game as no longer attached to any Flutter widget tree.
inherited
eventPosition(PositionInfo info) Vector2
@protected, inherited
findGame() Game?
inherited
findParent<T extends Component>() → T?
Returns the closest parent further up the hierarchy that satisfies type=T, or null if no such parent can be found.
inherited
firstChild<T extends Component>() → T?
Returns the first child that matches the given type T, or null if there are no such children.
inherited
handleResize(Vector2 size) → void
@internal, inherited
lastChild<T extends Component>() → T?
Returns the last child that matches the given type T, or null if there are no such children.
inherited
lifecycleStateChange(AppLifecycleState state) → void
This is the lifecycle state change hook; every time the game is resumed, paused or suspended, this is called.
inherited
loadSprite(String path, {Vector2? srcSize, Vector2? srcPosition}) Future<Sprite>
Utility method to load and cache the image for a sprite based on its options.
inherited
loadSpriteAnimation(String path, SpriteAnimationData data) Future<SpriteAnimation>
Utility method to load and cache the image for a sprite animation based on its options.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed.
inherited
onAttach() → void
Called when the game has been attached. This can be overridden to add logic that requires the game to already be attached to the widget tree.
inherited
onDetach() → void
Called after the game has left the widget tree. This can be overridden to add logic that requires the game not be on the flutter widget tree anymore.
inherited
onGameResize(Vector2 canvasSize) → void
This passes the new size along to every component in the tree via their Component.onGameResize method, enabling each one to make their decision of how to handle the resize event.
@mustCallSuper, override
onLoad() Future<void>?
Method to perform late initialization of the Game class.
inherited
onMount() → void
inherited
onRemove() → void
Called when the game is about to be removed from the Flutter widget tree, but before it is actually removed.
inherited
pauseEngine() → void
Pauses the engine game loop execution.
inherited
processPendingLifecycleEvents() → void
Attempt to resolve any pending lifecycle events on this component.
inherited
propagateToChildren<T extends Component>(bool handler(T), {bool includeSelf = false}) bool
This method first calls the passed handler on the leaves in the tree, the children without any children of their own. Then it continues through all other children. The propagation continues until the handler returns false, which means "do not continue", or when the handler has been called with all children.
inherited
ready() Future<void>
Ensure that all pending tree operations finish.
refreshWidget() → void
When a Game is attached to a GameWidget, this method will force that widget to be rebuilt. This can be used when updating any property which is implemented within the Flutter tree.
@internal, inherited
remove(Component component) → void
Removes a component from the component tree.
inherited
removeAll(Iterable<Component> components) → void
Removes all the children in the list and calls onRemove for all of them and their children.
inherited
removeFromParent() → void
Remove the component from its parent in the next tick.
inherited
removeGameStateListener(VoidCallback callback) → void
inherited
render(Canvas canvas) → void
This implementation of render renders each component, making sure the canvas is reset for each one.
@mustCallSuper, override
renderDebugMode(Canvas canvas) → void
inherited
renderTree(Canvas canvas) → void
override
reorderChildren() → void
Call this if any of this component's children priorities have changed at runtime.
inherited
resumeEngine() → void
Resumes the engine game loop execution.
inherited
setMounted() → void
@internal, inherited
toBeLoaded() Future<void>?
To be used for tests that needs to evaluate the game after it has been loaded by the game widget.
@visibleForTesting, inherited
toString() String
A string representation of this object.
inherited
update(double dt) → void
This method is called periodically by the game engine to request that your component updates itself.
@mustCallSuper, override
updateTree(double dt) → void
This method traverses the component tree and calls update on all its children according to their priority order, relative to the priority of the direct siblings, not the children or the ancestors.
override

Operators

operator ==(Object other) bool
The equality operator.
inherited