kouyu_handler.dart 2.12 KB
import 'package:appframe/config/locator.dart';
import 'package:appframe/services/dispatcher.dart';
import 'package:appframe/services/kouyu_service.dart';

class KouyuStartHandler extends MessageHandler {
  @override
  Future<dynamic> handleMessage(dynamic params) async {
    if (params is! Map<String, dynamic>) {
      throw Exception('参数错误');
    }

    var lang = params['lang'] as String;
    var type = params['type'] as int;
    var text = params['text'] as String;

    if (lang != 'cn' && lang != 'en') {
      throw Exception('参数错误');
    }

    String coreType;
    if(lang=='cn') {
      if (type == 1) {
        coreType = 'word.eval.cn';
      } else if (type == 2) {
        coreType = 'sent.eval.cn';
      } else if (type == 3) {
        coreType = 'para.eval.cn';
      } else {
        throw Exception('参数错误');
      }
    } else{
      if (type == 1) {
        coreType = 'word.eval';
      } else if (type == 2) {
        coreType = 'sent.eval';
      } else if (type == 3) {
        coreType = 'para.eval';
      } else {
        throw Exception('参数错误');
      }
    }

    return await getIt.get<KouyuService>().start(coreType, text);
  }
}

class KouyuStopHandler extends MessageHandler {
  @override
  Future<dynamic> handleMessage(dynamic params) async {
    Map<String, dynamic> result = await getIt.get<KouyuService>().stop();

    if (result.containsKey('errId')) {
      int errId = result['errId'];
      if (errId != 0) {
        throw Exception('$errId|${result['error']}');
      } else {
        throw Exception('${result['error']}');
      }
    }

    return result;
  }
}

class KouyuCancelHandler extends MessageHandler {
  @override
  Future<dynamic> handleMessage(dynamic params) async {
    return await getIt.get<KouyuService>().cancel();
  }
}

class KouyuPlaybackHandler extends MessageHandler {
  @override
  Future<dynamic> handleMessage(dynamic params) async {
    return getIt.get<KouyuService>().playback();
  }
}

class KouyuStopPlayHandler extends MessageHandler {
  @override
  Future<dynamic> handleMessage(dynamic params) async {
    return getIt.get<KouyuService>().stopPlay();
  }
}