fix: simplify BonusAnimation

pull/191/head
arturplaczek 3 years ago
parent f5aab1c5f1
commit ffc84788f9

@ -1,7 +1,6 @@
// ignore_for_file: public_member_api_docs // ignore_for_file: public_member_api_docs
import 'package:flame/flame.dart'; import 'package:flame/flame.dart';
import 'package:flame/image_composition.dart';
import 'package:flame/sprite.dart'; import 'package:flame/sprite.dart';
import 'package:flame/widgets.dart'; import 'package:flame/widgets.dart';
import 'package:flutter/material.dart' hide Image; import 'package:flutter/material.dart' hide Image;
@ -45,46 +44,43 @@ class BonusAnimation extends StatelessWidget {
final VoidCallback? onCompleted; final VoidCallback? onCompleted;
@override static Future<void> loadAssets() {
Widget build(BuildContext context) {
Flame.images.prefix = ''; Flame.images.prefix = '';
return Flame.images.loadAll([
Assets.images.bonusAnimation.dashNest.keyName,
Assets.images.bonusAnimation.sparkyTurboCharge.keyName,
Assets.images.bonusAnimation.dino.keyName,
// TODO: add google word animation asset here
]);
}
// TODO(arturplaczek): Load assets in parent widget, remove future builder @override
// and user image from cache. Widget build(BuildContext context) {
return FutureBuilder<Image>( final spriteSheet = SpriteSheet.fromColumnsAndRows(
future: Flame.images.load(imagePath), image: Flame.images.fromCache(imagePath),
builder: (BuildContext context, AsyncSnapshot<Image> snapshot) { columns: 8,
if (snapshot.hasData) { rows: 9,
final spriteSheet = SpriteSheet.fromColumnsAndRows( );
image: snapshot.data!, final animation = spriteSheet.createAnimation(
columns: 8, row: 0,
rows: 9, stepTime: 1 / 24,
); to: spriteSheet.rows * spriteSheet.columns,
final animation = spriteSheet.createAnimation( loop: false,
row: 0, );
stepTime: 1 / 24,
to: spriteSheet.rows * spriteSheet.columns,
loop: false,
);
Future<void>.delayed(
Duration(seconds: animation.totalDuration().ceil()),
() {
onCompleted?.call();
},
);
return SizedBox(
width: double.infinity,
height: double.infinity,
child: SpriteAnimationWidget(
animation: animation,
),
);
}
return const SizedBox(); Future<void>.delayed(
Duration(seconds: animation.totalDuration().ceil()),
() {
onCompleted?.call();
}, },
); );
return SizedBox(
width: double.infinity,
height: double.infinity,
child: SpriteAnimationWidget(
animation: animation,
),
);
} }
} }

@ -1,2 +1,3 @@
export 'bonus_animation.dart';
export 'game_hud.dart'; export 'game_hud.dart';
export 'play_button_overlay.dart'; export 'play_button_overlay.dart';

@ -1,10 +1,8 @@
import 'dart:async'; import 'dart:async';
import 'dart:typed_data';
import 'dart:ui' as ui; import 'dart:ui' as ui;
import 'package:flame/assets.dart'; import 'package:flame/assets.dart';
import 'package:flame/flame.dart';
import 'package:flame/widgets.dart'; import 'package:flame/widgets.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
@ -17,17 +15,12 @@ class MockImage extends Mock implements ui.Image {}
void main() { void main() {
TestWidgetsFlutterBinding.ensureInitialized(); TestWidgetsFlutterBinding.ensureInitialized();
final image = decodeImageFromList(Uint8List.fromList(transparentImage));
late Images images;
setUp(() { setUp(() async {
images = MockImages(); await BonusAnimation.loadAssets();
when(() => images.load(any())).thenAnswer((_) => image);
Flame.images = images;
}); });
group('renders SpriteAnimationWidget for', () { group('loads correctly SpriteAnimationWidget for', () {
testWidgets('dashNest', (tester) async { testWidgets('dashNest', (tester) async {
await tester.runAsync(() async { await tester.runAsync(() async {
await tester.pumpWidget( await tester.pumpWidget(

Loading…
Cancel
Save