Blame view

lib/pages/games/bloc.dart 1.43 KB
a4c3106a   吴启风   feat:游戏列表页
1
2
3
  import 'package:bloc/bloc.dart';
  import 'package:flutter/cupertino.dart';
  import 'package:flutter/services.dart';
2879454a   吴启风   feat:调通支付宝支付&游戏列表页
4
  import 'package:wow_english/common/extension/string_extension.dart';
a4c3106a   吴启风   feat:游戏列表页
5
6
  
  import 'event.dart';
2879454a   吴启风   feat:调通支付宝支付&游戏列表页
7
  import 'game_entity.dart';
a4c3106a   吴启风   feat:游戏列表页
8
9
10
11
12
13
  import 'state.dart';
  
  class GamesBloc extends Bloc<GamesEvent, GamesState> {
  
    late MethodChannel _methodChannel;
  
2879454a   吴启风   feat:调通支付宝支付&游戏列表页
14
15
16
17
    //手动初始化4个GameEntity对象
     final List<GameEntity> _games = [
      GameEntity()
        ..id = 1
e62c1a97   吴启风   feat:1、游戏列表页优化;2、...
18
19
        ..imageName = 'game_food_1'.assetPng
        ..name = 'Food',
2879454a   吴启风   feat:调通支付宝支付&游戏列表页
20
21
      GameEntity()
        ..id = 2
e62c1a97   吴启风   feat:1、游戏列表页优化;2、...
22
23
        ..imageName = 'game_halloween_2'.assetPng
        ..name = 'Halloween',
2879454a   吴启风   feat:调通支付宝支付&游戏列表页
24
25
      GameEntity()
        ..id = 3
e62c1a97   吴启风   feat:1、游戏列表页优化;2、...
26
27
        ..imageName = 'game_toy_3'.assetPng
        ..name = 'Toy',
2879454a   吴启风   feat:调通支付宝支付&游戏列表页
28
29
      GameEntity()
        ..id = 4
e62c1a97   吴启风   feat:1、游戏列表页优化;2、...
30
31
        ..imageName = 'game_animal_4'.assetPng
        ..name = 'Animal'
2879454a   吴启风   feat:调通支付宝支付&游戏列表页
32
33
34
35
    ];
  
     List<GameEntity> get listData => _games;
  
a4c3106a   吴启风   feat:游戏列表页
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
    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}'.");
      }
    }
  }