generateAppStorageService function

Future<void> generateAppStorageService({
  1. bool generateSharedPrefs = true,
})

Generates a dart file and installs the required package.

Implementation

Future<void> generateAppStorageService({bool generateSharedPrefs = true}) async {
  final isFree = await FirebaseService.instance.isFreeUseOn(feature: 'local_storage');
  if (!isFree) {
    ConsoleLog.warning(ProjectUtils.freeUseBlockString);
    return;
  }

  final start = DateTime.now();
  ConsoleLog.title(generateSharedPrefs
      ? 'Generating SharedPreferencesService...'
      : 'Generating GetStorageService...');

  DartgenxConfig config = DartgenxConfig.load();

  final file = File(config.outputPath?.appStorageService ??
      "lib/${generateSharedPrefs ? 'shared_preferences_service' : 'get_storage_service'}.dart");

  file.createSync(recursive: true);

  file.writeAsStringSync(generateSharedPrefs ? sharedPreferenceTemplate : getStorageTemplate);
  ConsoleLog.success(
      '${generateSharedPrefs ? 'SharedPreferencesService' : 'GetStorageService'} generated at ${file.path}');

  ConsoleLog.info('Installing required dependencies...');
  ConsoleLog.step('flutter pub add ${generateSharedPrefs ? 'shared_preferences' : 'get_storage'}');

  final result = await Process.run(
    'flutter',
    ['pub', 'add', (generateSharedPrefs ? 'shared_preferences' : 'get_storage')],
    runInShell: true,
  );
  stdout.write(result.stdout);
  stderr.write(result.stderr);

  final duration = DateTime.now().difference(start).inMilliseconds;
  ConsoleLog.info('Completed in ${duration}ms');
  ConsoleLog.line();
}