appWidget static method
lib/app.dart — the MaterialApp.router wrapper.
When configImport is provided (flavors enabled), the app title is driven
by AppConfig.current.appName instead of a hard-coded string. When it is
null the output is byte-for-byte identical to the single-flavor form.
Implementation
static String appWidget({
required String name,
required String title,
required String themeImport,
required String routerImport,
String? configImport,
}) {
if (configImport != null) {
return '''
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:$name/$configImport';
import 'package:$name/$themeImport';
import 'package:$name/$routerImport';
class MyApp extends ConsumerWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final router = ref.watch(appRouterProvider);
return MaterialApp.router(
title: AppConfig.current.appName,
theme: AppTheme.light,
darkTheme: AppTheme.dark,
routerConfig: router,
debugShowCheckedModeBanner: false,
);
}
}
''';
}
return '''
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:$name/$themeImport';
import 'package:$name/$routerImport';
class MyApp extends ConsumerWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final router = ref.watch(appRouterProvider);
return MaterialApp.router(
title: '$title',
theme: AppTheme.light,
darkTheme: AppTheme.dark,
routerConfig: router,
debugShowCheckedModeBanner: false,
);
}
}
''';
}