starter function

Future<void> starter(
  1. List<String> args
)

generate a Flutter starter project

Implementation

Future<void> starter(List<String> args) async {
  List<String> params = args.toList();

  String org = '';
  String android = '';
  String ios = '';
  String name = '';
  String template = 'provider';

  List<String> fargs = [];

  if (params.contains('--p')) {
    int idx = params.indexOf('--p');
    name = params[idx + 1];
    fargs.add('--project-name');
    fargs.add(name);
    params.removeAt(idx);
    params.removeAt(idx);
  }

  if (params.contains('-p')) {
    int idx = params.indexOf('-p');
    name = params[idx + 1];
    fargs.add('--project-name');
    fargs.add(name);
    params.removeAt(idx);
    params.removeAt(idx);
  }

  if (params.contains('--org')) {
    int idx = params.indexOf('--org');
    org = params[idx + 1];
    fargs.add('--org');
    fargs.add(org);
    params.removeAt(idx);
    params.removeAt(idx);
  }

  if (params.contains('-org')) {
    int idx = params.indexOf('-org');
    org = params[idx + 1];
    fargs.add('--org');
    fargs.add(org);
    params.removeAt(idx);
    params.removeAt(idx);
  }

  if (params.contains('--a')) {
    int idx = params.indexOf('--a');
    android = params[idx + 1];
    fargs.add('--android-language');
    fargs.add(android);
    params.removeAt(idx);
    params.removeAt(idx);
  }

  if (params.contains('-a')) {
    int idx = params.indexOf('-a');
    android = params[idx + 1];
    fargs.add('--android-language');
    fargs.add(android);
    params.removeAt(idx);
    params.removeAt(idx);
  }

  if (params.contains('--i')) {
    int idx = params.indexOf('--i');
    ios = params[idx + 1];
    fargs.add('--ios-language');
    fargs.add(ios);
    params.removeAt(idx);
    params.removeAt(idx);
  }

  if (params.contains('-i')) {
    int idx = params.indexOf('-i');
    ios = params[idx + 1];
    fargs.add('--ios-language');
    fargs.add(ios);
    params.removeAt(idx);
    params.removeAt(idx);
  }

  if (params.contains('--bloc')) {
    template = 'bloc';
    params.remove('--bloc');
  }

  if (params.contains('--cubit')) {
    template = 'cubit';
    params.remove('--cubit');
  }

  if (params.contains('--getx')) {
    template = 'getx';
    params.remove('--getx');
  }

  if (params.contains('--get')) {
    template = 'getx';
    params.remove('--get');
  }

  /* if (params.contains('--mobx')) {
    template = 'mobx';
    params.remove('--mobx');
  } */

  if (params.contains('--provider')) {
    template = 'provider';
    params.remove('--provider');
  }

  if (params.contains('--riverpod')) {
    template = 'riverpod';
    params.remove('--riverpod');
  }

  String project = params.first;
  fargs.add(project);

  Process process = await Process.start(
    'flutter',
    ['create', ...fargs],
    runInShell: true,
    mode: ProcessStartMode.inheritStdio,
  );

  process.exitCode.then((_) {
    _template(project, template, org);

    print('');
    print('Installing dependencies...');
    print('');

    final res = Process.runSync(
      'cd $project && flutter pub get',
      [],
      runInShell: true,
    );

    print(res.stdout);
    print('');
    print('All done!');
    print('Use this command to run your application:');
    print('');
    print('  \$ cd $project');
    print('  \$ f r');

    exit(0);
  });
}