SpriteButton.asset constructor
SpriteButton.asset({
- required String path,
- required String pressedPath,
- required void onPressed()?,
- required double width,
- required double height,
- Widget? label,
- Images? images,
- Vector2? srcPosition,
- Vector2? srcSize,
- Vector2? pressedSrcPosition,
- Vector2? pressedSrcSize,
- String? disabledPath,
- Vector2? disabledSrcPosition,
- Vector2? disabledSrcSize,
- EdgeInsets pressedInsets = const EdgeInsets.only(top: 5),
- WidgetBuilder? errorBuilder,
- WidgetBuilder? loadingBuilder,
- Key? key,
Loads the images from the asset path
and pressedPath
and renders
it as a widget.
It will use the loadingBuilder
while the image from path
is loading.
To render without loading, or when you want to have a gapless playback
when the path
value changes, consider loading the image beforehand
and direct pass it to the default constructor.
Implementation
SpriteButton.asset({
required String path,
required String pressedPath,
required this.onPressed,
required this.width,
required this.height,
this.label,
Images? images,
this.srcPosition,
this.srcSize,
this.pressedSrcPosition,
this.pressedSrcSize,
String? disabledPath,
this.disabledSrcPosition,
this.disabledSrcSize,
this.pressedInsets = const EdgeInsets.only(top: 5),
this.errorBuilder,
this.loadingBuilder,
super.key,
}) : _buttonsFuture = (images ?? Flame.images).containsKey(path) &&
(images ?? Flame.images).containsKey(pressedPath) &&
(disabledPath == null ||
(images ?? Flame.images).containsKey(disabledPath))
? [
Sprite(
(images ?? Flame.images).fromCache(path),
srcPosition: srcPosition,
srcSize: srcSize,
),
Sprite(
(images ?? Flame.images).fromCache(pressedPath),
srcPosition: pressedSrcPosition,
srcSize: pressedSrcSize,
),
if (disabledPath != null)
Sprite(
(images ?? Flame.images).fromCache(disabledPath),
srcPosition: disabledSrcPosition,
srcSize: disabledSrcSize,
),
]
: Future.wait([
Sprite.load(
path,
srcPosition: srcPosition,
srcSize: srcSize,
images: images,
),
Sprite.load(
pressedPath,
srcPosition: pressedSrcPosition,
srcSize: pressedSrcSize,
images: images,
),
if (disabledPath != null)
Sprite.load(
disabledPath,
srcPosition: disabledSrcPosition,
srcSize: disabledSrcSize,
images: images,
),
]);