Line data Source code
1 : part of rx_bloc_generator; 2 : 3 : /// Builds the dispose method 4 : /// Example: 5 : /// 6 : /// void dispose() { 7 : /// .._${eventMethod1}Event.close(); 8 : /// .._${eventMethod2}Event.close(); 9 : /// ... 10 : /// ..super.dispose(); 11 : /// } 12 : class _DisposeMethod implements _BuilderContract { 13 1 : const _DisposeMethod(this.eventMethods); 14 : 15 : final List<MethodElement> eventMethods; 16 : 17 1 : @override 18 1 : Method build() => Method.returnsVoid( 19 1 : (b) => b 20 3 : ..docs.addAll(['']) // A new line 21 3 : ..annotations.add(refer('override')) 22 1 : ..name = 'dispose' 23 2 : ..body = CodeExpression( 24 2 : Block.of([ 25 2 : ...eventMethods.map( 26 1 : (MethodElement method) => 27 6 : refer('${method.eventFieldName}.close').call([]).statement, 28 : ), 29 4 : refer('_compositeSubscription.dispose').call([]).statement, 30 4 : refer('super.dispose').call([]).statement, 31 : ]), 32 1 : ).code, 33 : ); 34 : }