64 lines
2.2 KiB
Dart

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:wyatt_app_template/core/dependency_injection/get_it.dart';
import 'package:wyatt_app_template/core/flavors/flavor.dart';
import 'package:wyatt_app_template/core/routes/router.dart';
import 'package:wyatt_app_template/data/repositories/counter_repository_impl.dart';
import 'package:wyatt_app_template/domain/repositories/counter_repository.dart';
import 'package:wyatt_app_template/gen/app_localizations.dart';
import 'package:wyatt_app_template/presentation/features/counter/blocs/counter_bloc/counter_bloc.dart';
import 'package:wyatt_bloc_helper/wyatt_bloc_helper.dart';
class App extends StatelessWidget {
const App({super.key});
Widget _flavorBanner(Widget child) {
final flavor = Flavor.get();
if (flavor.banner != null && !kReleaseMode) {
return Directionality(
textDirection: TextDirection.ltr,
child: Banner(
location: BannerLocation.topEnd,
message: flavor.banner!,
color: flavor.bannerColor,
child: child,
),
);
}
return child;
}
@override
Widget build(BuildContext context) => MultiProvider(
repositoryProviders: [
RepositoryProvider<CounterRepository>(
create: (_) => CounterRepositoryImpl(counterDataSource: getIt()),
),
],
blocProviders: [
BlocProvider<CounterBloc>(
create: (_) => CounterBloc(),
),
],
child: _flavorBanner(
MaterialApp.router(
title: 'Display Name',
debugShowCheckedModeBanner: false,
routerDelegate: AppRouter.router.routerDelegate,
routeInformationParser: AppRouter.router.routeInformationParser,
routeInformationProvider: AppRouter.router.routeInformationProvider,
localizationsDelegates: const [
AppLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: AppLocalizations.supportedLocales,
),
),
);
}