diff --git a/packages/flame_bloc/test/src/flame_multi_bloc_provider_test.dart b/packages/flame_bloc/test/src/flame_multi_bloc_provider_test.dart index 614b6f5d1a5..7881a7c2ecb 100644 --- a/packages/flame_bloc/test/src/flame_multi_bloc_provider_test.dart +++ b/packages/flame_bloc/test/src/flame_multi_bloc_provider_test.dart @@ -182,6 +182,34 @@ void main() { expect(player.lastState, equals(PlayerState.sad)); expect(inventory.lastState, equals(InventoryState.bow)); }); + + testWithFlameGame( + 'can listen to multiple subsequent state changes', + (game) async { + final playerCubit = PlayerCubit(); + late PlayerListener player; + + final provider = FlameMultiBlocProvider( + providers: [ + FlameBlocProvider.value( + value: playerCubit, + ), + ], + children: [ + player = PlayerListener(), + ], + ); + await game.ensureAdd(provider); + + playerCubit.kill(); + await Future.microtask(() {}); + expect(player.lastState, equals(PlayerState.dead)); + + playerCubit.riseFromTheDead(); + await Future.microtask(() {}); + expect(player.lastState, equals(PlayerState.alive)); + }, + ); }); }); }