installPackage function

Future<void> installPackage(
  1. String name
)

Implementation

Future<void> installPackage(String name) async {
  var response =
      await http.get(Uri.parse('https://pub.dev/api/packages/$name'));
  if (response.statusCode == HttpStatus.notFound) {
    print('${ColorsText.red}  ✗ Package not found: $name${ColorsText.reset}');
    print('${ColorsText.gray}    ${response.body}${ColorsText.reset}');
  } else if (response.statusCode == 200) {
    Map<String, dynamic> data = json.decode(response.body);
    String latestVersion =
        name == 'responsive_framework' ? '0.2.0' : data['latest']['version'];
    final pubspec = File('pubspec.yaml').readAsStringSync();
    if (!pubspec.contains(name)) {
      final updatedPubspec = pubspec.replaceFirst(
        'dependencies:\n',
        "dependencies:\n  $name: ^$latestVersion\n",
      );
      File('pubspec.yaml').writeAsStringSync(updatedPubspec);
      print(
          '${ColorsText.green}  ✓${ColorsText.reset} Installed: ${ColorsText.cyan}$name${ColorsText.reset} ${ColorsText.gray}^$latestVersion${ColorsText.reset}');
    } else {
      print(
          '${ColorsText.gray}  - Already installed: $name${ColorsText.reset}');
    }
  }
}