empathetech_flutter_ui 12.0.0 copy "empathetech_flutter_ui: ^12.0.0" to clipboard
empathetech_flutter_ui: ^12.0.0 copied to clipboard

Build apps for anyone. EFUI makes building truly accessible apps Ez. So anyone can enjoy your great idea!

example/lib/main.dart

/* open_ui
 * Copyright (c) 2026 Empathetech LLC. All rights reserved.
 * See LICENSE for distribution and usage details.
 */

import './screens/export.dart';
import './utils/export.dart';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter/foundation.dart';
import 'package:go_router/go_router.dart';
import 'package:window_manager/window_manager.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:empathetech_flutter_ui/empathetech_flutter_ui.dart';

void main() async {
  // Configure the app //

  WidgetsFlutterBinding.ensureInitialized();
  await SystemChrome.setPreferredOrientations(DeviceOrientation.values);

  EzConfig.init(
    appName: thisAppName,
    androidPackage: thisPackageName,
    assetPaths: <String>{},
    defaults: isMobile() ? mobileDefaults : desktopDefaults,
    localeFallback: americanEnglish,
    l10nFallback: await EFUILang.delegate.load(americanEnglish),
    preferences: await SharedPreferencesWithCache.create(
      cacheOptions: SharedPreferencesWithCacheOptions(
        allowList: allEZConfigKeys.keys.toSet(),
      ),
    ),
  );

  if (!kIsWeb && !isMobile()) {
    await windowManager.ensureInitialized();

    await windowManager.waitUntilReadyToShow(
      const WindowOptions(minimumSize: Size(500, 500)),
      () async {
        await windowManager.show();
        await windowManager.focus();
      },
    );
  }

  // Run the app //

  final (Locale storedLocale, EFUILang storedEFUILang) = await ezStoredL10n();

  runApp(OpenUI(
    storedLocale,
    storedEFUILang,
    await Lang.delegate.load(storedLocale),
  ));
}

class OpenUI extends StatelessWidget {
  final Locale storedLocale;
  final EFUILang storedEFUILang;
  final Lang storedLang;

  const OpenUI(
    this.storedLocale,
    this.storedEFUILang,
    this.storedLang, {
    super.key,
  });

  @override
  Widget build(BuildContext context) => EzConfigurableApp(
        localizationsDelegates: ezLocalizationsDelegates(Lang.localizationsDelegates),
        supportedLocales: Lang.supportedLocales,
        locale: storedLocale,
        el10n: storedEFUILang,
        appCache: OpenUICache(storedLocale, storedLang),
        routerConfig: GoRouter(
          navigatorKey: ezRootNav,
          initialLocation: homePath,
          errorBuilder: (_, __) => ErrorScreen(),
          routes: <RouteBase>[
            // Home
            GoRoute(
              path: homePath,
              name: homePath,
              pageBuilder: (BuildContext context, GoRouterState state) =>
                  ezPageBuilder(context, state, HomeScreen()),
              routes: <RouteBase>[
                // Archive
                GoRoute(
                  path: archiveScreenPath,
                  name: archiveScreenPath,
                  pageBuilder: (BuildContext context, GoRouterState state) =>
                      ezPageBuilder(context, state, ArchiveScreen((state.extra as EAGConfig))),
                ),

                // Generate
                GoRoute(
                  path: generateScreenPath,
                  name: generateScreenPath,
                  pageBuilder: (BuildContext context, GoRouterState state) =>
                      ezPageBuilder(context, state, GenerateScreen((state.extra as EAGConfig))),
                ),

                // Settings
                GoRoute(
                  path: settingsHubPath,
                  name: settingsHubPath,
                  pageBuilder: (BuildContext context, GoRouterState state) =>
                      ezPageBuilder(context, state, SettingsHubScreen()),
                ),
              ],
            ),
          ],
        ),
      );
}