bloc.dart
1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import 'package:bloc/bloc.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart';
import 'package:wow_english/common/extension/string_extension.dart';
import 'package:wow_english/utils/audio_player_util.dart';
import 'event.dart';
import 'game_entity.dart';
import 'state.dart';
class GamesBloc extends Bloc<GamesEvent, GamesState> {
late MethodChannel _methodChannel;
//手动初始化4个GameEntity对象
final List<GameEntity> _games = [
GameEntity()
..id = 1
..imageName = 'game_food_1'.assetPng
..name = 'Food',
GameEntity()
..id = 2
..imageName = 'game_halloween_2'.assetPng
..name = 'Halloween',
GameEntity()
..id = 3
..imageName = 'game_toy_3'.assetPng
..name = 'Toy',
GameEntity()
..id = 4
..imageName = 'game_animal_4'.assetPng
..name = 'Animal'
];
List<GameEntity> get listData => _games;
GamesBloc() : super(GamesState().init()) {
on<InitEvent>(_init);
on<GotoGamePageEvent>(_gotoGamePage);
}
void _init(InitEvent event, Emitter<GamesState> emit) async {
AudioPlayerUtil.getInstance().playAudio(AudioPlayerUtilType.inMyTummy);
emit(state.clone());
}
void _gotoGamePage(GotoGamePageEvent event, Emitter<GamesState> emit) async {
await AudioPlayerUtil.getInstance().pause();
try {
_methodChannel = const MethodChannel('wow_english/game_method_channel');
await _methodChannel
.invokeMethod('openGamePage', {"gameId": event.gameId});
} on PlatformException catch (e) {
debugPrint("Failed to go to native page: '${e.message}'.");
}
}
}