openFunction method

void openFunction({
  1. required String name,
  2. String modifier = '',
  3. String returnType = 'void',
  4. List<(String, String)> positional = const [],
  5. List<(String, String, String?)> named = const [],
})

Opens a function/method block with arguments.

Implementation

void openFunction({
  required String name,
  String modifier = '',
  String returnType = 'void',
  List<(String, String)> positional = const [],
  List<(String, String, String?)> named = const [],
}) {
  final params = <String>[];
  for (final arg in positional) {
    params.add('${arg.$1} ${arg.$2}');
  }

  if (named.isNotEmpty) {
    final namedParams = <String>[];
    for (final arg in named) {
      final type = arg.$1;
      final paramName = arg.$2;
      final defaultValue = arg.$3;
      if (defaultValue != null && defaultValue.isNotEmpty) {
        namedParams.add('$type $paramName = $defaultValue');
      } else {
        namedParams.add('$type $paramName');
      }
    }

    params.add('{${namedParams.join(', ')}}');
  }

  modifier = modifier.isEmpty ? '' : '$modifier ';
  final signature = '$returnType $name(${params.join(', ')}) $modifier{';
  openBlock(signature);
}