Line data Source code
1 : part of rx_bloc_generator; 2 : 3 : /// Generates class like.. 4 : /// 5 : /// Example: 6 : /// .. class _EventMethodArgs { 7 : /// .. _EventMethodArgs({this.argExample}); 8 : /// .. final int argExample; 9 : /// .. } 10 : class _EventArgumentsClass implements _BuilderContract { 11 1 : const _EventArgumentsClass(this.method); 12 : 13 : final MethodElement method; 14 : 15 1 : @override 16 1 : Class build() => Class( 17 1 : (b) => b 18 3 : ..docs.addAll([ 19 : '/// Helps providing the arguments in the [Subject.add] for', 20 5 : '/// [${method.enclosingElement.name ?? ''}.${method.name}] event' 21 1 : ]) 22 4 : ..name = '_${method.name.capitalize()}EventArgs' 23 3 : ..constructors.add( 24 1 : Constructor( 25 1 : (builder) => builder 26 1 : ..constant = true 27 2 : ..requiredParameters.addAll( 28 4 : method.parameters.whereRequired().clone(toThis: true)) 29 2 : ..optionalParameters.addAll( 30 4 : method.parameters.whereOptional().clone(toThis: true)), 31 : ), 32 : ) 33 2 : ..fields.addAll( 34 3 : method.parameters.map( 35 2 : (ParameterElement parameter) => Field( 36 1 : (b) => b 37 1 : ..modifier = FieldModifier.final$ 38 3 : ..type = refer(parameter.getTypeDisplayName()) 39 2 : ..name = parameter.name, 40 : ), 41 : ), 42 : ), 43 : ); 44 : }