flavorEntryPoint static method
A flavored entry point — lib/main_<flavor>.dart. Selects the flavor's
config via AppConfig.current, then runs the shared MyApp.
When storageImport is provided (Clean), it initializes SharedPreferences
and overrides sharedPreferencesProvider, mirroring the single-flavor
main.dart. configImport is the path (relative to package:$name/) of
the generated app_config.dart.
Implementation
static String flavorEntryPoint({
required String name,
required String flavor,
required String configImport,
String? storageImport,
}) {
if (storageImport != null) {
return '''
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:$name/app.dart';
import 'package:$name/$configImport';
import 'package:$name/$storageImport';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
AppConfig.current = AppConfig.of(Flavor.$flavor);
final prefs = await SharedPreferences.getInstance();
runApp(
ProviderScope(
overrides: [
sharedPreferencesProvider.overrideWithValue(prefs),
],
child: const MyApp(),
),
);
}
''';
}
return '''
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:$name/app.dart';
import 'package:$name/$configImport';
void main() {
AppConfig.current = AppConfig.of(Flavor.$flavor);
runApp(
const ProviderScope(
child: MyApp(),
),
);
}
''';
}