bloc.dart
1.43 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
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 '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 {
emit(state.clone());
}
void _gotoGamePage(GotoGamePageEvent event, Emitter<GamesState> emit) async {
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}'.");
}
}
}