empathetech_flutter_ui 7.3.1 empathetech_flutter_ui: ^7.3.1 copied to clipboard
Build apps for anyone. EFUI makes building user accessible and customizable apps Ez. So everyone can enjoy your great idea!
/* open_ui
* Copyright (c) 2022-2024 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:feedback/feedback.dart';
import 'package:go_router/go_router.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:empathetech_flutter_ui/empathetech_flutter_ui.dart';
import 'package:flutter_platform_widgets/flutter_platform_widgets.dart';
import 'package:flutter_localized_locales/flutter_localized_locales.dart';
void main() async {
// Setup the app //
// Most apps need this
// https://stackoverflow.com/questions/63873338/
WidgetsFlutterBinding.ensureInitialized();
// Set device orientation(s)
await SystemChrome.setPreferredOrientations(<DeviceOrientation>[
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown,
DeviceOrientation.landscapeLeft,
DeviceOrientation.landscapeRight,
]);
// Initialize EzConfig //
final SharedPreferences prefs = await SharedPreferences.getInstance();
EzConfig.init(
// Paths to any locally stored images the app uses
assetPaths: <String>{},
preferences: prefs,
// Your brand colors, custom styling, etc
defaults: empathetechConfig,
);
// Run the app //
// With a feedback wrapper
late final TextStyle lightFeedbackText = buildBody(Colors.black);
late final TextStyle darkFeedbackText = buildBody(Colors.white);
// Run the app!
runApp(BetterFeedback(
theme: FeedbackThemeData(
background: Colors.grey,
feedbackSheetColor: Colors.white,
activeFeedbackModeColor: empathPurple,
bottomSheetDescriptionStyle: lightFeedbackText,
bottomSheetTextInputStyle: lightFeedbackText,
sheetIsDraggable: true,
dragHandleColor: Colors.black,
colorScheme: const ColorScheme.light(primary: empathPurple),
),
darkTheme: FeedbackThemeData(
background: Colors.grey,
feedbackSheetColor: Colors.black,
activeFeedbackModeColor: empathEucalyptus,
bottomSheetDescriptionStyle: darkFeedbackText,
bottomSheetTextInputStyle: darkFeedbackText,
sheetIsDraggable: true,
dragHandleColor: Colors.white,
colorScheme: const ColorScheme.dark(primary: empathEucalyptus),
),
themeMode: EzConfig.getThemeMode(),
localizationsDelegates: <LocalizationsDelegate<dynamic>>[
const LocaleNamesLocalizationsDelegate(),
...EFUILang.localizationsDelegates,
EmpathetechFeedbackLocalizationsDelegate(),
],
localeOverride: EzConfig.getLocale(),
child: const OpenUI(),
));
}
/// Initialize a path based router for web-enabled apps
/// Or any other app that requires deep linking
/// https://docs.flutter.dev/ui/navigation/deep-linking
final GoRouter router = GoRouter(
initialLocation: homePath,
routes: <RouteBase>[
GoRoute(
path: homePath,
name: homePath,
builder: (_, __) => const HomeScreen(),
routes: <RouteBase>[
GoRoute(
path: textSettingsPath,
name: textSettingsPath,
builder: (_, __) => const TextSettingsScreen(),
),
GoRoute(
path: layoutSettingsPath,
name: layoutSettingsPath,
builder: (_, __) => const LayoutSettingsScreen(),
),
GoRoute(
path: colorSettingsPath,
name: colorSettingsPath,
builder: (_, __) => const ColorSettingsScreen(),
),
GoRoute(
path: imageSettingsPath,
name: imageSettingsPath,
builder: (_, __) => const ImageSettingsScreen(),
),
],
),
],
);
class OpenUI extends StatelessWidget {
const OpenUI({super.key});
@override
Widget build(BuildContext context) {
return EzAppProvider(
app: PlatformApp.router(
// Production ready!
debugShowCheckedModeBanner: false,
// Language handlers
localizationsDelegates: <LocalizationsDelegate<dynamic>>{
const LocaleNamesLocalizationsDelegate(),
...EFUILang.localizationsDelegates,
EmpathetechFeedbackLocalizationsDelegate(),
},
// Supported languages
supportedLocales: EFUILang.supportedLocales,
// Current language
locale: EzConfig.getLocale(),
title: appTitle,
routerConfig: router,
),
);
}
}