A set of APIs for commonly used programming patterns and utilities, such as dependency injection, logging, and configuration.

pub package Build Status

Configuration

import 'package:extensions/configuration.dart';

void main() {
  var configurationBuilder = ConfigurationBuilder()
    // Adds a memory collection to the configuration system.
    ..addInMemoryCollection(
      <String, String>{
        'Logging:LogLevel:Default': 'Warning',
      }.entries,
    );

  var config = configurationBuilder.build();
  print(config['Logging:LogLevel:Default']);
}

Dependency Injection

import 'package:extensions/dependency_injection.dart';

void main() {
  var serviceCollection = ServiceCollection();
  serviceCollection.addSingleton<MyService>(
    implementationInstance: MyService(),
  );
  var services = serviceCollection.buildServiceProvider();
  var myService = services.getRequiredService<MyService>();
}

Logging

package:extensions/logging.dart' provides a class [LoggerFactory][LoggerFactory] to create a [Logger`]Logger for a specific category.

import 'package:extensions/logging.dart';

void main() {
  LoggerFactory.create(
    (builder) => builder
    ..addDebug()
    ..setMinimumLevel(LogLevel.debug),
  ).createLogger('MyLogger').logDebug('Hello World');
}

The preceeding code uses the LoggerFactory static method LoggerFactory.create to create a Logger. The output is displayed in the debug window and looks like this:

[MyLogger] LogLevel.debug: Hello World

Generic Host

import 'package:extensions/hosting.dart' 

Future<void> main(List<String> args) async =>
    await Host.createDefaultBuilder(args)
        .useConsoleLifetime()
        .build()
        .run();

Extensions is a derived work of the dotnet/runtime

Libraries

configuration
Configuration
configuration_io
dependency_injection
Dependency Injection
hosting
Hosting
hosting_io
io
logging
Logging
options
Options
primitives
Primitives