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(),
),
),
);
}