Core

A set of static methods/getters to unify dependency injection, logging, etc, across app's modules/sfeatures

Start unifying your features by just overriding inject & get methods

Note:

  • This example use flutter_inject as dependency injection package
  • This example use dart:developer for the logging method
  • For dependency injection, you can use any context based package
import 'dart:developer' as dev;
import 'package:flutter/material.dart';
import 'package:flutter_inject/flutter_inject.dart' as pkg;
import 'package:modulapp_core/modulapp_core.dart';

void main() {
  // Define project's dependency injection
  Core.inject = <T>({required factory, required builder}) => pkg.Inject<T>(builder: builder, factory: factory);
  // Define project's instance getter through context
  Core.get = <T>(context) => pkg.Dependency.get<T>(context);
  // Define project's logging method
  Core.log = <T>(msg1, [msg2, msg3]) => dev.log('[$msg1] $msg2\n$msg3');

  runApp(
    MaterialApp(
      // Note: here we're calling injectAll which an alias of Core.injectAll
      home: injectAll(
        dependencies: [
          Dependency<String>((context) => 'This text has been injected'),
          Dependency<int>((context) => 5),
        ],
        builder: (context) => const HomeView(),
      ),
    ),
  );
}

Libraries

modulapp_core