simple_injector 0.1.1 copy "simple_injector: ^0.1.1" to clipboard
simple_injector: ^0.1.1 copied to clipboard

discontinued
outdated

Inject your dependencies simply and quickly. The dependency is created in the measure that it is injected, if it is configured singleton it is created only in the first one that is injected.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:simple_injector/simple_injector.dart';
import 'package:simple_injector_demo/bloc_modulo.dart';
import 'package:simple_injector_demo/repository_modulo.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  MyApp() {
    SimpleInjector.configure(Flavor.PROD, showDebug: true);
    SimpleInjector().registerModule(RepositoryModulo());
    SimpleInjector().registerModule(BlocModulo());
  }
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  RepositoryTest repository = SimpleInjector().inject();
  RepositoryTest2 repository2 = SimpleInjector().inject();

  Bloc1 bloc1 = SimpleInjector().inject();
  Bloc2 bloc2 = SimpleInjector().inject();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            Text(repository.getTest()),
            Text(repository2.getTest2()),
            Container(
              height: 20.0,
            ),
            Text(bloc1.teste()),
            Text(bloc2.teste())
          ],
        ),
      ),
    );
  }
}

///RepositoryTest
abstract class RepositoryTest {
  String getTest();
}

class RepositoryTestImpl implements RepositoryTest {
  @override
  String getTest() {
    return "Call RepositoryTest!!!";
  }
}

///RepositoryTest2
abstract class RepositoryTest2 {
  String getTest2();
}

class RepositoryTest2Impl implements RepositoryTest2 {
  final RepositoryTest r;

  RepositoryTest2Impl(this.r);

  @override
  String getTest2() {
    return "Call RepositoryTest2!!!\n${r.getTest()}";
  }
}

///Bloc1
class Bloc1 {
  final RepositoryTest repo;

  Bloc1(this.repo);

  String teste() {
    return "BLOC1: ${repo.getTest()}";
  }
}

///Bloc2
class Bloc2 {
  final RepositoryTest2 repo;

  Bloc2(this.repo);

  String teste() {
    return "BLOC2: ${repo.getTest2()}";
  }
}
0
likes
0
pub points
0%
popularity

Publisher

unverified uploader

Inject your dependencies simply and quickly. The dependency is created in the measure that it is injected, if it is configured singleton it is created only in the first one that is injected.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

flutter

More

Packages that depend on simple_injector