omega_architecture 0.0.12 copy "omega_architecture: ^0.0.12" to clipboard
omega_architecture: ^0.0.12 copied to clipboard

A reactive, agent-based architecture framework for Flutter applications.

example/lib/main.dart

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:omega_architecture/omega/bootstrap/omega_runtime.dart';
import 'package:omega_architecture/omega_architecture.dart';
import 'omega/app_semantics.dart';
import 'omega/omega_setup.dart';

void main() {
  // Si se abre con ?omega_inspector=1 (p. ej. desde OmegaInspectorLauncher en web), mostrar solo el receiver.
  if (Uri.base.queryParameters['omega_inspector'] == '1') {
    runApp(MaterialApp(
      title: 'Omega Inspector',
      theme: ThemeData(primarySwatch: Colors.orange),
      home: const OmegaInspectorReceiver(),
    ));
    return;
  }
  final runtime = OmegaRuntime.bootstrap(createOmegaConfig);
  runApp(
    OmegaScope(
      channel: runtime.channel,
      flowManager: runtime.flowManager,
      initialFlowId: runtime.initialFlowId,
      child: MyApp(navigator: runtime.navigator),
    ),
  );
}

class MyApp extends StatelessWidget {
  final OmegaNavigator navigator;

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      navigatorKey: navigator.navigatorKey,
      title: "Omega Example",
      theme: ThemeData(primarySwatch: Colors.blue),
      home: const _RootHandler(),
    );
  }
}

class _RootHandler extends StatefulWidget {
  const _RootHandler();

  @override
  State<_RootHandler> createState() => _RootHandlerState();
}

class _RootHandlerState extends State<_RootHandler> {
  @override
  void initState() {
    super.initState();

    WidgetsBinding.instance.addPostFrameCallback((_) {
      final scope = OmegaScope.of(context);
      // 1) Activar el flow inicial (ej. authFlow)
      if (scope.initialFlowId != null) {
        scope.flowManager.switchTo(scope.initialFlowId!);
      }
      // 2) Navegar a la pantalla de login (nombres tipados: AppIntent / AppEvent)
      final intent = OmegaIntent.fromName(AppIntent.navigateLogin);
      scope.channel.emit(
        OmegaEvent.fromName(AppEvent.navigationIntent, payload: intent),
      );
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: kDebugMode
          ? AppBar(
              title: const Text('Omega Example'),
              actions: const [
                _DocsLink(),
                OmegaInspectorLauncher(),
              ],
            )
          : null,
      body: const Center(child: Text("Omega Running")),
    );
  }
}

/// Button that shows the documentation link (web doc or run `omega doc`).
class _DocsLink extends StatelessWidget {
  const _DocsLink();

  @override
  Widget build(BuildContext context) {
    return IconButton(
      icon: const Icon(Icons.menu_book),
      tooltip: 'Documentación',
      onPressed: () {
        ScaffoldMessenger.of(context).showSnackBar(
          const SnackBar(
            content: Text(
              'Documentación web: yefersonsegura.com/proyects/omega/ · O ejecuta: omega doc',
            ),
            duration: Duration(seconds: 5),
          ),
        );
      },
    );
  }
}
1
likes
145
points
239
downloads

Publisher

verified publisheryefersonsegura.com

Weekly Downloads

A reactive, agent-based architecture framework for Flutter applications.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, web

More

Packages that depend on omega_architecture