riverpod_injected_generator 1.1.0 copy "riverpod_injected_generator: ^1.1.0" to clipboard
riverpod_injected_generator: ^1.1.0 copied to clipboard

A small code generator for simple dependency injection via riverpod

example/riverpod_injected_generator_example.dart

// ignore_for_file: avoid_unused_constructor_parameters for testing

import 'package:riverpod_injected/riverpod_injected.dart';

part 'riverpod_injected_generator_example.di.g.dart';
part 'riverpod_injected_generator_example.g.dart';

@riverDi
class const TestSimple();

@riverDi
class const TestReferring1(TestSimple simple);

@riverDi
class const TestReferring2.create(
  TestSimple simple, {
  TestReferring1? referring1,
});

@riverDi
class Basic;

@riverDi
class BasicDefault {
  new(Basic basic);
}

@riverDi
class BasicNamed {
  @providerConstructor
  new named(Basic basic);
}

@riverDi
class Factory {
  factory() => _Factory();
}

class _Factory implements Factory;

@riverDi
class FromMethod {
  const new _();

  @providerConstructor
  static FromMethod createInstance() => const ._();
}

@riverDi
class const Competing.primary() {
  const factory() = Competing.primary;

  @providerConstructor
  const factory internal() = Competing.primary;
}

@riverDiAsync
class FromFuture {
  const new _();

  @providerConstructor
  static Future<FromFuture> createInstance() async => const ._();
}

@riverDiAsync
class FromFutureOr {
  const new _();

  @providerConstructor
  static FutureOr<FromFutureOr> createInstance() => const ._();
}

@riverpod
int externalFunc(Ref ref) => 42;

@riverpod
class ExternalNotifier extends _$ExternalNotifier {
  @override
  int build() => 42;
}

@riverpod
Future<int> externalAsync(Ref ref) async => 42;

@riverpod
class AsyncExternalNotifier extends _$AsyncExternalNotifier {
  @override
  Future<int> build() async => 42;
}

@riverDiAsyncSingleton
class FromExternal(
  @From(externalFunc) int func,
  @From(ExternalNotifier, read: true) int clazz,
  @From.notifier(ExternalNotifier) ExternalNotifier notifier,
  @From.async(externalAsync, read: true) int async,
  @From.async(AsyncExternalNotifier) int asyncNotifier,
  AsyncExternalNotifier auto,
  @From('externalFuncProvider') int named,
);

@riverDi
class Dispose1 {
  @disposeMethod
  void dispose() {}
}

@riverDi
class Dispose2 {
  @disposeMethod
  static void dispose(Dispose2 _) {}

  static void disposeOther(Dispose3 _) {}
}

@RiverDi(onDispose: Dispose2.disposeOther)
class Dispose3;

void _dispose4(Dispose4 _) {}

@RiverDi(onDispose: _dispose4)
class Dispose4;