screenSetter function

void screenSetter(
  1. File file,
  2. String packageName,
  3. String name, {
  4. String? controllerName,
  5. String path = '',
})

Implementation

void screenSetter(File file, String packageName, String name, {String? controllerName, String path = ''}) {
  var scaffold = '''return const Scaffold(
      body:Center(
        child:Text('$name'),
      ),
    );''';

  final hasController = controllerName != null;

  if (hasController) {
    scaffold = '''return GetBuilder<$controllerName>(
      init: $controllerName(),
      builder: (controller) {
        $scaffold
      },
    );''';
  }

  var directives = [
    Directive.import('package:get/get.dart'),
    Directive.import('package:flutter/material.dart'),
    if (hasController) ...[
      Directive.import(
          'package:' + packageName + '/controllers/$path' + name.toLowerCase() + '_screen_controller.dart'),
    ]
  ];

  var lib = Library((b) => b
    ..directives.addAll(directives)
    ..body.add(statelessWidgetGenerator('${name}Screen', scaffold)));
  file.writeAsStringSync(formatter.format(DartEmitter.scoped(useNullSafetySyntax: true).visitLibrary(lib).toString()));
}