fstack_cli 1.0.1
fstack_cli: ^1.0.1 copied to clipboard
A modern Flutter scaffolding CLI that builds production-ready architecture in seconds.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:example/core/router/app_router.dart' as AppRouter;
import 'core/theme/app_theme.dart';
import 'core/theme/theme_service.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:example/l10n/app_localizations.dart';
import 'package:example/core/localization/locale_bloc.dart';
import 'package:example/core/localization/locale_event.dart';
import 'package:example/core/localization/locale_state.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
final sharedPrefs = await SharedPreferences.getInstance();
final localeBloc = LocaleBloc();
runApp(MyApp(sharedPrefs: sharedPrefs, localeBloc: localeBloc));
}
class MyApp extends StatelessWidget {
final SharedPreferences sharedPrefs;
final LocaleBloc? localeBloc;
const MyApp({super.key, required this.sharedPrefs, required this.localeBloc});
@override
Widget build(BuildContext context) {
return MultiBlocProvider(
providers: [
BlocProvider<ThemeBloc>(create: (_) => ThemeBloc(sharedPrefs)),
BlocProvider<LocaleBloc>(create: (_) => localeBloc!),
],
child: BlocBuilder<ThemeBloc, ThemeState>(
builder: (context, state) {
return MaterialApp.router(
title: 'example',
routerConfig: AppRouter.router,
theme: AppTheme.lightTheme,
darkTheme: AppTheme.darkTheme,
themeMode: state.mode,
locale: context.watch<LocaleBloc>().state.locale,
localizationsDelegates: const [
AppLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: const [Locale('en'), Locale('fr')],
);
},
),
);
}
}