part of flutter_sprites; /// A widget that uses a [SpriteBox] to render a sprite node tree to the screen. class SpriteWidget extends SingleChildRenderObjectWidget { /// The rootNode of the sprite node tree. /// /// var node = mySpriteWidget.rootNode; final NodeWithSize rootNode; /// The transform mode used to fit the sprite node tree to the size of the widget. final SpriteBoxTransformMode transformMode; /// Creates a new sprite widget with [rootNode] as its content. /// /// The widget will setup the coordinate space for the sprite node tree using the size of the [rootNode] in /// combination with the supplied [transformMode]. By default the letterbox transform mode is used. See /// [SpriteBoxTransformMode] for more details on the different modes. /// /// The most common way to setup the sprite node graph is to subclass [NodeWithSize] and pass it to the sprite widget. /// In the custom subclass it's possible to build the node graph, do animations and handle user events. /// /// var mySpriteTree = new MyCustomNodeWithSize(); /// var mySpriteWidget = new SpriteWidget(mySpriteTree, SpriteBoxTransformMode.fixedHeight); SpriteWidget(this.rootNode, [this.transformMode = SpriteBoxTransformMode.letterbox]); @override SpriteBox createRenderObject(BuildContext context) => new SpriteBox(rootNode, transformMode); @override void updateRenderObject(BuildContext context, SpriteBox renderObject) { renderObject ..rootNode = rootNode ..transformMode = transformMode; } }