layer_kit 1.0.2 copy "layer_kit: ^1.0.2" to clipboard
layer_kit: ^1.0.2 copied to clipboard

A Flutter architecture package that combines Clean Architecture and MVVM patterns using Provider for state management.

example/lib/main.dart

//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//               CREATED BY NAYAN PARMAR
//                      © 2025
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

import 'dart:io';

import 'package:layer_kit/core/utils/layerkit_initializer.dart';
import "package:layer_kit_example/config/lang/lang.dart";
import 'package:layer_kit_example/config/routes/routes.dart';
import 'package:layer_kit_example/config/theme/app_colors.dart';
import "package:layer_kit_example/config/theme/theme_provider.dart";
import "package:layer_kit_example/core/callbacks/callbacks.dart";
import 'package:layer_kit_example/core/constants/app_constants.dart';
import 'package:layer_kit_example/core/helper/global_prefs.dart';
import 'package:layer_kit_example/src/splash/screens/splash_screen.dart';
import "package:easy_localization/easy_localization.dart";
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:layer_kit/layer_kit.dart';
import 'package:provider/provider.dart';
import "package:toastification/toastification.dart";
import 'package:url_strategy/url_strategy.dart';

import 'di_container.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  /// FIREBASE SETUP
  ///
  // await Firebase.initializeApp(
  //   options: DefaultFirebaseOptions.currentPlatform,
  // );
  // await _setupFirebaseCrashlytics();
  ///
  /// /////////////

  await Di.init();
  await GlobalPrefs.init();
  await EasyLocalization.ensureInitialized();
  await LayerKitInitializer.ensureInitialized();

  HttpOverrides.global = MyHttpOverrides();

  setPathUrlStrategy();
  runApp(MultiProvider(
    providers: Di.changeNotifierProviders,
    child: EasyLocalization(
      supportedLocales: Locl.values.map((Locl e) => e.locale).toList(),
      path: 'lib/config/lang',
      fallbackLocale: Locl.en.locale,
      assetLoader: RootBundleAssetLoader(),
      child: LayerKitInitializer(
        envType: EnvType.development,
        showApiReqLog: true,
        showApiResLog: true,
        child: MyApp(),
      ),
    ),
  ));
}

/// CODE FOR FIREBASE CRASHLYTICS
///
// Future<void> _setupFirebaseCrashlytics() async {
//   await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(!kDebugMode);
//   FlutterError.onError = (FlutterErrorDetails details) {
//     if (kDebugMode) {
//       FlutterError.dumpErrorToConsole(details);
//     } else {
//       FirebaseCrashlytics.instance.recordFlutterError(details);
//     }
//   };
//
//   PlatformDispatcher.instance.onError = (error, stack) {
//     FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
//     return true;
//   };
// }
/// ////////////////////////////////////////

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
    widgetBinding((_) {
      context.themeProvider.loadCurrentTheme(context);
    });
  }

  @override
  Widget build(BuildContext context) {
    SystemChrome.setPreferredOrientations([
      DeviceOrientation.portraitUp,
      DeviceOrientation.portraitDown,
      // DeviceOrientation.landscapeRight,
      // DeviceOrientation.landscapeLeft,
    ]);

    return Consumer<ThemeProvider>(builder: (context, state, _) {
      return AppResponsiveTheme(
        themeMode: state.theme,
        config: ColorConfig(
          lightColors: AppColors.light().toThemeColor(),
          darkColors: AppColors.dark().toThemeColor(),
        ),
        child: ToastificationWrapper(
          child: MaterialApp(
            title: AppConsts.appName,
            navigatorKey: AppRouter.navigatorKey,
            debugShowCheckedModeBanner: false,
            onGenerateRoute: (s) => AppRouter.generateRoute(s, SplashScreen()),
            scrollBehavior: const StretchScrollBehavior(),
            initialRoute: Routes.splash.path,
            localizationsDelegates: context.localizationDelegates,
            supportedLocales: context.supportedLocales,
            locale: context.locale,
            theme: state.darkTheme ? ThemeData.dark() : ThemeData.light(),
            builder: (context, child) {
              return MediaQuery(
                data: MediaQuery.of(context).copyWith(textScaler: const TextScaler.linear(1.0)),
                child: child ?? SizedBox(),
              );
            },
          ),
        ),
      );
    });
  }
}
3
likes
140
points
246
downloads

Publisher

verified publishertcircle.kesug.com

Weekly Downloads

A Flutter architecture package that combines Clean Architecture and MVVM patterns using Provider for state management.

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

args, flutter, flutter_easy_routing, path, recase, responsive_theme

More

Packages that depend on layer_kit