abdalsalam_logic_flutter 0.1.0 copy "abdalsalam_logic_flutter: ^0.1.0" to clipboard
abdalsalam_logic_flutter: ^0.1.0 copied to clipboard

Comprehensive Flutter logic package with modular app state management, networking, storage, auth, and 20+ reusable services following SOLID principles.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:abdalsalam_logic_flutter/abdalsalam_logic_flutter.dart';
import 'examples/app_state_detection_example.dart';
import 'examples/runtime_control_comprehensive_ui.dart';
import 'examples/runtime_control_interactive_demo.dart';
import 'examples/networking_demo_integration.dart';
import 'examples/domain_registration_example.dart' as domain_reg;
import 'storage_designer.dart';
import 'storage_inspector.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  const logConfig = LogConfig(
    coreConfig: LoggerCoreConfig(
      environment: LogEnvironment.development,
      environmentLevels: {
        LogEnvironment.development: LogLevel.debug,
        LogEnvironment.profile: LogLevel.info,
        LogEnvironment.release: LogLevel.warning,
      },
      targetsPerEnvironment: {
        LogEnvironment.development: {LogTarget.console},
        LogEnvironment.profile: {LogTarget.console},
        LogEnvironment.release: {LogTarget.console, LogTarget.file},
      },
      allowUnregisteredModules: true,
      strictMode: false,
    ),
    moduleConfig: LoggerModuleRegistryConfig(
      globalLevel: LogLevel.debug,
      enableColors: true,
      modules: {},
    ),
  );
  
  LoggerImpl.initialize(logConfig);
  
  AppControl.initialize(config: const RuntimeConfig.development());
  AppControl.registerDomains([
    StorageDomain(),
    NetworkingDomain(),
    AuthDomain(),
    AppStateDomain(),
    CacheDomain(),
    SyncDomain(),
  ]);
  await AppControl.start();
  
  const config = AppStateConfig.all();
  
  final appStateManager = AppStateManagerImpl.create(config: config);
  await appStateManager.initialize();
  
  runApp(MyApp(appStateManager: appStateManager));
}

class MyApp extends StatelessWidget {
  final AppStateManager appStateManager;

  const MyApp({required this.appStateManager, super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Logic Package Examples',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        useMaterial3: true,
      ),
      home: HomeMenu(appStateManager: appStateManager),
    );
  }
}

class HomeMenu extends StatelessWidget {
  final AppStateManager appStateManager;

  const HomeMenu({required this.appStateManager, super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Examples')),
      body: Padding(
        padding: const EdgeInsets.all(16),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            const Text('Choose a demo'),
            const SizedBox(height: 12),
            FilledButton(
              onPressed: () {
                Navigator.of(context).push(MaterialPageRoute(
                  builder: (_) => AppStateDetectionExample(
                    appStateManager: appStateManager,
                  ),
                ));
              },
              child: const Text('App State Detection'),
            ),
            const SizedBox(height: 12),
            FilledButton(
              onPressed: () {
                Navigator.of(context).push(MaterialPageRoute(
                  builder: (_) => const RuntimeControlHomePage(),
                ));
              },
              child: const Text('🔌 Runtime Control'),
            ),
            const SizedBox(height: 12),
            FilledButton(
              onPressed: () {
                Navigator.of(context).push(MaterialPageRoute(
                  builder: (_) => const NetworkingDemoWidget(),
                ));
              },
              child: const Text('🌐 Networking Demo'),
            ),
            const SizedBox(height: 12),
            FilledButton(
              onPressed: () {
                Navigator.of(context).push(MaterialPageRoute(
                  builder: (_) => const StorageDesignerPage(),
                ));
              },
              child: const Text('Storage Designer'),
            ),
            const SizedBox(height: 12),
            FilledButton(
              onPressed: () {
                Navigator.of(context).push(MaterialPageRoute(
                  builder: (_) => const StorageInspectorPage(),
                ));
              },
              child: const Text('Storage Inspector'),
            ),
            const SizedBox(height: 12),
            FilledButton(
              onPressed: () {
                Navigator.of(context).push(MaterialPageRoute(
                  builder: (_) => const RuntimeControlInteractiveDemo(),
                ));
              },
              child: const Text('Runtime Control (Interactive)'),
            ),
            const SizedBox(height: 12),
            FilledButton(
              onPressed: () {
                Navigator.of(context).push(MaterialPageRoute(
                  builder: (_) => const RuntimeControlDemoApp(),
                ));
              },
              child: const Text('Runtime Control (Full Demo)'),
            ),
          ],
        ),
      ),
    );
  }
}