Scope class abstract

This is an abstract interface for a custom developer interface that is considered to be implemented by their BaseScopeContainer.

For example, you have a ScopeContainer:

class SomeScopeContainer extends ScopeContainer { late final appManagerDep = dep(() => AppManager());

late final navigationDep = dep(() => Navigation());

late final reporterDep = dep(() => Reporter()); }

But you don't want to share actual deps with your consumers or you don't want them to know anything about your SomeScopeContainer implementation.

Then you create an interface:

abstract class SomeScope implements BaseScope { AppManager get appManager;

NavigationManager get navigationManager; }

and implement it by your SomeScopeContainer:

class SomeScopeContainer extends ScopeContainer implements SomeScope { @override AppManager get appManager => appManagerDep.get;

@override NavigationManager get navigationManager => navigationDep.get;

late final appManagerDep = dep(() => AppManager());

late final navigationDep = dep(() => Navigation());

late final reporterDep = dep(() => Reporter()); }

It helps you in two ways:

  1. You can now use BaseScopeHolder (or Child/Data/ChildData-ScopeHolder) and pass your interface as a first generic parameter for your ScopeHolder. It narrows access to your deps giving only the contract that is declared by the interface.
  2. You can pass you interface as a parent to your ChildScopeHolder instead of actual BaseScopeContainer implementation. It also narrows access to deps from the parent.
Implementers

Properties

hashCode int
The hash code for this object.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited