generateSingleMainBoilerplate method

String generateSingleMainBoilerplate(
  1. FlavorConfig config
)

Implementation

String generateSingleMainBoilerplate(FlavorConfig config) {
  final configPath = config.appConfigPath;
  final relativePath = p.relative(configPath, from: 'lib');
  final flavors = config.flavors;
  final cases =
      flavors.map((f) => "    case '\$f': return Flavor.\$f;").join('\n');

  return """
import '$relativePath';
import 'package:flutter/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';

Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
const flavorString = String.fromEnvironment('FLAVOR');
final flavor = _getFlavor(flavorString);
await dotenv.load(fileName: '.env.\$flavorString');
AppConfig.init(flavor);
runApp(const MyApp());
}

Flavor _getFlavor(String flavor) {
switch (flavor) {
$cases
  default: return Flavor.${flavors.first};
}
}

class MyApp extends StatelessWidget {
const MyApp({super.key});

@override
Widget build(BuildContext context) {
  return const MaterialApp(
    home: Scaffold(
      body: Center(child: Text('Hello Flavor')),
    ),
  );
}
}
""";
}