appWidget static method

String appWidget({
  1. required String name,
  2. required String title,
  3. required String themeImport,
  4. required String routerImport,
  5. String? configImport,
})

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,
  );
}
}
''';
}