CoolFlutterIjkManager.m 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. //
  2. // Created by Caijinglong on 2019-03-08.
  3. //
  4. #import "CoolFlutterIjkManager.h"
  5. #import "CoolFlutterIJK.h"
  6. #import <IJKMediaFramework/IJKMediaFramework.h>
  7. #import "CoolIjkOption.h"
  8. @implementation CoolFlutterIjkManager {
  9. NSMutableDictionary<NSNumber *, CoolFlutterIJK *> *dict;
  10. }
  11. - (instancetype)initWithRegistrar:(NSObject <FlutterPluginRegistrar> *)registrar {
  12. self = [super init];
  13. if (self) {
  14. self.registrar = registrar;
  15. dict = [NSMutableDictionary new];
  16. }
  17. return self;
  18. }
  19. + (instancetype)managerWithRegistrar:(NSObject <FlutterPluginRegistrar> *)registrar {
  20. return [[self alloc] initWithRegistrar:registrar];
  21. }
  22. - (int64_t)createWithCall:(FlutterMethodCall*) call {
  23. NSArray<CoolIjkOption*>* options = [self getOptionsFromCall:call];
  24. CoolFlutterIJK *ijk = [CoolFlutterIJK ijkWithRegistrar:self.registrar];
  25. ijk.options = options;
  26. NSNumber *number = @([ijk id]);
  27. dict[number] = ijk;
  28. return [ijk id];
  29. }
  30. -(NSArray<CoolIjkOption*>*)getOptionsFromCall:(FlutterMethodCall *)call{
  31. NSMutableArray<CoolIjkOption*> *array = [NSMutableArray new];
  32. NSDictionary *args = call.arguments;
  33. NSArray *dartOptions = args[@"options"];
  34. for (NSDictionary *dict in dartOptions){
  35. int type = [dict[@"category"] intValue];
  36. NSString *key = dict[@"key"];
  37. id value = dict[@"value"];
  38. CoolIjkOption *option = [CoolIjkOption new];
  39. option.key = key;
  40. option.value = value;
  41. option.type = type;
  42. [array addObject:option];
  43. }
  44. return array;
  45. }
  46. - (CoolFlutterIJK *)findIJKWithId:(int64_t)id {
  47. return dict[@(id)];
  48. }
  49. - (int)ijkCount{
  50. if(!dict){
  51. return 0;
  52. }
  53. return [dict count];
  54. }
  55. - (void)disposeWithId:(int64_t)id {
  56. CoolFlutterIJK *ijk = dict[@(id)];
  57. if (ijk) {
  58. [ijk dispose];
  59. [dict removeObjectForKey:@(id)];
  60. }
  61. }
  62. - (void)disposeAll {
  63. NSArray<NSNumber *> *keys = dict.allKeys;
  64. for (NSNumber *key in keys) {
  65. CoolFlutterIJK *ijk = dict[key];
  66. [dict removeObjectForKey:key];
  67. [ijk dispose];
  68. }
  69. }
  70. @end