flutter_service_container 0.0.10 copy "flutter_service_container: ^0.0.10" to clipboard
flutter_service_container: ^0.0.10 copied to clipboard

Useful widgets for service_container package that support share service provider instances.

flutter_service_container #

pub package CI Last Commits Pull Requests Code size License

Useful widgets for service_container package.

Features #

Widgets:

  1. ServicesRoot provide a root service provider for its child.
  2. ServicesScope provide a scope service provider for its child.
  3. Services inherited widget shared service provider for its child.
  4. ServiceConsumer consumes services.
  5. DeveloperLogPrinter forwards logs to the dart:developer log() API.

Get IServiceProvider instance:

  1. Services.of(context)
    Get the IServiceProvider instance from the nearest Services inherited widget. Notes that ServicesRoot and ServicesScope will create Services inherited widget.
  2. ServiceConsumer(builder: (context, provider){})
    The IServiceProvider instance from the nearest Services inherited widget will pass into the provider parameter of the builder.
  3. Routes If you want to get the IServiceProvider that created or provided by other route, use the Services inherited widget to wrap the widgets of the new route child widget.

Getting started #

Install

flutter pub add flutter_service_container

Usage #

Here's a short example. For a full example, check out example.

// define a logger service
ServiceDescriptor<Logger> $exampleLogger = ServiceDescriptor.singleton((p) => Logger("Example"));

void main() {
  // configure the container, use developer log printer
  containerConfigure.useDeveloperLogPrinter();

  /// Use ServicesRoot to provide a root service provider for the app.
  runApp(
    ServicesRoot(
      printDebugLogs: true,
      child: const MyApp(),
    ),
  );
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    final logger = Services.of(context).getService($exampleLogger);
    logger.info("$MyApp is building");
    return MaterialApp(
      title: 'Flutter service Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: MyHomePage(title: "Flutter service example"),
    );
  }
}

Logging #

Use logging package to logging.
containerConfigure.useDeveloperLogPrinter() extension method will override the default log printer that defined in service_container package and use DeveloperLogPrinter.
DeveloperLogPrinter forwards logs to the dart:developer log() API.

1
likes
160
points
348
downloads

Publisher

unverified uploader

Weekly Downloads

Useful widgets for service_container package that support share service provider instances.

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

flutter, logging, service_container

More

Packages that depend on flutter_service_container