mealory_ui 0.0.1+2 copy "mealory_ui: ^0.0.1+2" to clipboard
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,
    );
  }
}