Line data Source code
1 : part of rx_bloc_generator; 2 : 3 : /// Generates the content of the blocClass 4 : /// 5 : /// Example: 6 : /// abstract class ${RxBlocName}Bloc extends RxBlocBase 7 : /// implements {RxBlocName}BlocEvents, {RxBlocName}BlocStates, 8 : /// {RxBlocName}BlocType { 9 : /// 10 : /// /// Events 11 : /// ... 12 : /// /// States 13 : /// ... 14 : /// /// Type - events, states getters 15 : /// ... 16 : /// /// Dispose of all the opened streams 17 : /// ... 18 : /// } 19 : /// 20 : class _BlocClass implements _BuilderContract { 21 1 : const _BlocClass( 22 : this.className, 23 : this.blocTypeClassName, 24 : this.eventClassName, 25 : this.stateClassName, 26 : this.eventsMethods, 27 : this.statesFields, 28 : ); 29 : 30 : final String className; 31 : 32 : final String blocTypeClassName; 33 : 34 : final String eventClassName; 35 : 36 : final String stateClassName; 37 : 38 : final List<MethodElement> eventsMethods; 39 : 40 : final List<FieldElement> statesFields; 41 : 42 1 : @override 43 1 : Class build() => Class( 44 1 : (b) => b 45 3 : ..docs.addAll(<String>[ 46 4 : '/// [$className] extended by the [${className.substring(1)}]', 47 : '/// {@nodoc}', 48 : ]) 49 1 : ..abstract = true 50 2 : ..name = className 51 3 : ..extend = refer((RxBlocBase).toString()) 52 3 : ..implements.addAll(<Reference>[ 53 2 : refer(eventClassName), 54 2 : refer(stateClassName), 55 2 : refer(blocTypeClassName), 56 : ]) 57 3 : ..fields.addAll(<Field>[ 58 : // Example: 59 : // final _compositeSubscription = CompositeSubscription(); 60 2 : _CompositionField().build(), 61 : 62 : // Example: 63 : // final _${eventName}Event = PublishSubject<void>(); 64 1 : ...eventsMethods 65 4 : .map((MethodElement method) => _EventField(method).build()) 66 1 : .toList(), 67 : 68 : // Example: 69 : // Stream<int> _{stateName}State; 70 1 : ...statesFields 71 4 : .map((FieldElement field) => _StateField(field).build()) 72 1 : .toList(), 73 : ]) 74 2 : ..methods.addAll( 75 1 : <Method>[ 76 : // Example: 77 : // void {eventName}() => _${eventName}Event.add(null); 78 1 : ...eventsMethods 79 4 : .map((MethodElement method) => _EventMethod(method).build()) 80 1 : .toList(), 81 : 82 : // Example: 83 : // Stream<int> get {stateName} => 84 : // _{stateName}State ??= _mapTo{StateName}State(); 85 1 : ...statesFields 86 1 : .map( 87 3 : (FieldElement field) => _StateGetterMethod(field).build()) 88 1 : .toList(), 89 : 90 : // Example: 91 : // Stream<int> _mapTo{StateName}State(); 92 1 : ...statesFields 93 4 : .map((FieldElement field) => _StateMethod(field).build()) 94 1 : .toList(), 95 : 96 : // Example: 97 : // {BlocName}BlocEvents get events => this; 98 3 : _StaticStateGetterMethod(eventClassName, true).build(), 99 : 100 : // Example: 101 : // {BlocName}BlocStates get states => this; 102 3 : _StaticStateGetterMethod(stateClassName, false).build(), 103 : 104 : // Example: 105 : // void dispose() { 106 : // .._${eventMethod1}Event.close(); 107 : // .._${eventMethod2}Event.close(); 108 : // ... 109 : // ..super.dispose(); 110 : // } 111 3 : _DisposeMethod(eventsMethods).build(), 112 : ], 113 : ), 114 : ); 115 : }