mealory_ui 0.0.1+2
mealory_ui: ^0.0.1+2 copied to clipboard
Design system for Flutter applications
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:mealory_ui/services/services.dart';
// providers
import 'providers/provider_locale.dart';
import 'providers/provider_theme.dart';
// resources
import 'resources/constants.dart';
// screens
import 'screens/screen_splash.dart';
import 'screens/screen_storybook.dart';
void main() async {
await ServiceTimeZone.initialize();
runApp(
ProviderScope(
child: GestureDetector(
onTap: () => FocusManager.instance.primaryFocus?.unfocus(),
child: const App(),
),
),
);
}
class App extends ConsumerWidget {
const App({
super.key,
});
// The root of application.
@override
Widget build(BuildContext context, WidgetRef ref) {
return FutureBuilder(
future: Future.wait([
ref.read(themeProvider.notifier).load(),
ref.read(localeProvider.notifier).load(),
]),
builder: (context, snapshot) {
if (snapshot.connectionState != ConnectionState.done) {
return _build(ref: ref, home: const ScreenSplash());
}
return _build(ref: ref, home: const ScreenStorybook());
},
);
}
Widget _build({
required WidgetRef ref,
required Widget home,
}) {
final ThemeData theme = ref.watch(themeProvider).theme;
final Locale locale = ref.watch(localeProvider);
return MaterialApp(
title: title,
home: home,
theme: theme,
locale: locale,
scaffoldMessengerKey: SnackBarService.scaffoldKey,
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
debugShowCheckedModeBanner: false,
);
}
}