keyboard_method_handler.dart 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import 'dart:convert';
  2. import 'package:flutter/services.dart';
  3. import 'package:keyboard/data/bean/member_info.dart';
  4. import 'package:keyboard/data/repository/account_repository.dart';
  5. import 'package:keyboard/data/repository/characters_repository.dart';
  6. import 'package:keyboard/data/repository/keyboard_repository.dart';
  7. import '../utils/mmkv_util.dart';
  8. class KeyboardMethodHandler {
  9. final KeyboardRepository keyboardRepository;
  10. final CharactersRepository charactersRepository;
  11. final AccountRepository accountRepository;
  12. // 用处存储选中的键盘id
  13. static const String keyboardSelect = 'keyboard_select';
  14. bool get isLogin => accountRepository.isLogin.value;
  15. bool get isMember => accountRepository.isMember.value;
  16. KeyboardMethodHandler(
  17. this.keyboardRepository,
  18. this.charactersRepository,
  19. this.accountRepository,
  20. );
  21. Future<dynamic> handleMethodCall(MethodCall call) async {
  22. switch (call.method) {
  23. case 'getKeyboardList':
  24. return _handleGetKeyboardList(call);
  25. case 'selectedKeyboard':
  26. return _handleSelectedKeyboard(call);
  27. case 'getCharacterList':
  28. return _handleGetCharacterList(call);
  29. case 'getCurrentKeyboardId':
  30. return _handleGetCurrentKeyboardId(call);
  31. case 'getPrologueList':
  32. return _handleGetPrologueList(call);
  33. case 'isLogin':
  34. return isLogin;
  35. case 'isMember':
  36. return isMember;
  37. default:
  38. throw MissingPluginException('Not implemented: ${call.method}');
  39. }
  40. }
  41. Future<String> _handleGetKeyboardList(MethodCall call) async {
  42. String? type = call.arguments?['type'] as String?;
  43. final keyboardList = await keyboardRepository.getKeyboardList(type: type);
  44. final selectKeyboardId = KVUtil.getString(keyboardSelect, null);
  45. if (selectKeyboardId != null) {
  46. for (var element in keyboardList.keyboardInfos) {
  47. if (element.id == selectKeyboardId) {
  48. element.isSelect = true;
  49. }
  50. }
  51. }
  52. return jsonEncode(keyboardList.toJson());
  53. }
  54. Future<String> _handleSelectedKeyboard(MethodCall call) async {
  55. final String keyboardId = call.arguments['keyboardId'];
  56. KVUtil.putString(keyboardSelect, keyboardId);
  57. return "{}";
  58. }
  59. Future<String> _handleGetCurrentKeyboardId(MethodCall call) async {
  60. String? keyboardId = KVUtil.getString(keyboardSelect, null);
  61. if (keyboardId == null) {
  62. return "{}";
  63. }
  64. return jsonEncode({"keyboardId": keyboardId});
  65. }
  66. Future<String> _handleGetCharacterList(MethodCall call) async {
  67. final String keyboardId = call.arguments['keyboardId'];
  68. final characterList = await keyboardRepository.getKeyboardCharacterList(
  69. keyboardId: keyboardId,
  70. );
  71. return jsonEncode(characterList.toJson());
  72. }
  73. // 获取开场白列表
  74. Future<String> _handleGetPrologueList(MethodCall call) async {
  75. final prologueList = await keyboardRepository.getPrologueList();
  76. return jsonEncode(prologueList.toJson());
  77. }
  78. }