Reactter provides several methods to manage dependencies in a more efficient way.
These methods are used to create and manipulate dependencies in a more organized way.
Reactter . register
The Reactter . register
method is used to register a new dependency in Reactter.
It returns true
if the dependency is registered successfully, otherwise return false
.
Syntax
bool Reactter . register < T >(
DependencyMode mode = DependencyMode . builder ,
Parameters
builder
: A function that returns an instance of the T
dependency.
id
: An optional identifier for the T
dependency. If not provided, the dependency will be registered with the type of the dependency.
mode
: The mode of the dependency. It can be DependencyMode . builder
, DependencyMode . factory
, or DependencyMode . singleton
.
The default value is DependencyMode . builder
. Learn more about it in DependencyMode .
Example
See the example below to understand how to use the Reactter . register
method in different scenarios.
import 'package:reactter/reactter.dart' ;
class CounterController {
// Create a reactive state using the ` Signal ` class
import 'package:reactter/reactter.dart' ;
import 'counter_controller.dart' ;
Reactter . register < CounterController >(() => CounterController ()) ;
final counterController = Reactter . get < CounterController >() ! ;
// Listen to the state changes
print ( 'Count: ${ counterController . count . value } ' ) ;
counterController . increment () ;
counterController . decrement () ;
Reactter . delete < CounterController >() ;
// Error: "Can't update when it's been disposed", because the dependency instance was deleted
// counterController.increment();
// Can't get the dependency instance, because the dependency register was deleted
final counterController2 = Reactter . get < CounterController >() ;
print ( "counterController2: $ counterController2 " ) ; // counterController2: null
// Register a dependency by using `id` parameter
Reactter . register (() => CounterController () , id : 'count2' ) ;
// Get the dependency by using `id` parameter
final counterControllerById = Reactter . get < CounterController >( 'count2' ) ! ;
print ( "counterControllerById: $ counterControllerById " ) ;
// Delete the dependency by using `id` parameter
Reactter . delete < CounterController >( 'count2' ) ;
// Register a dependency by using `mode` parameter as singleton mode
Reactter . register (() => CounterController () , mode : DependencyMode . singleton ) ;
final counterControllerBySingletonMode = Reactter . get < CounterController >() ! ;
print ( "counterControllerBySingletonMode: $ counterControllerBySingletonMode " ) ;
Reactter . delete < CounterController >() ;
// Can get the dependency again, because it's singleton mode
final counterControllerBySingletonMode2 = Reactter . get < CounterController >() ! ;
print ( "counterControllerBySingletonMode2: $ counterControllerBySingletonMode2 " ) ;
// Use `onlyDependency` parameter to delete the dependency instance only
Reactter . destroy < CounterController >(onlyDependency : true ) ;
// Can't get the dependency instance, because the dependency register was destroyed
final counterControllerBySingletonMode3 = Reactter . get < CounterController >() ;
print ( "counterControllerBySingletonMode3: $ counterControllerBySingletonMode3 " ) ; // counterControllerBySingletonMode3: null
// If you need to delete the dependency fully, use ` Reactter.destroy ` method by forcing it, because it's singleton mode
Reactter . destroy < CounterController >() ;
Reactter . lazyBuilder
The Reactter . lazyBuilder
method is used to register a new dependency as DependencyMode . builder
in Reactter.
It returns true
if the dependency is registered successfully, otherwise return false
.
This method is similar to the Reactter . register
method.
Syntax
bool Reactter . lazyBuilder < T >(
Parameters
builder
: A function that returns an instance of the T
dependency.
id
: An optional identifier for the T
dependency. If not provided, the dependency will be registered with the type of the dependency.
Example
See the example below to understand how to use the Reactter . lazyBuilder
method in different scenarios.
import 'package:reactter/reactter.dart' ;
class CounterController {
// Create a reactive state using the ` Signal ` class
import 'package:reactter/reactter.dart' ;
import 'counter_controller.dart' ;
// Register a dependency as builder mode.
Reactter . lazyBuilder < CounterController >(() => CounterController ()) ;
final counterController = Reactter . get < CounterController >() ! ;
// Listen to the state changes
print ( 'Count: ${ counterController . count . value } ' ) ;
counterController . increment () ;
counterController . decrement () ;
Reactter . delete < CounterController >() ;
// Error: "Can't update when it's been disposed", because the dependency instance was deleted
// counterController.increment();
// Can't get the dependency instance, because the dependency register was deleted
final counterController2 = Reactter . get < CounterController >() ;
print ( "counterController2: $ counterController2 " ) ; // counterController2: null
// Register a dependency by using `id` parameter as builder mode
Reactter . lazyBuilder (() => CounterController () , id : 'count2' ) ;
// Get the dependency by using `id` parameter
final counterControllerById = Reactter . get < CounterController >( 'count2' ) ! ;
print ( "counterControllerById: $ counterControllerById " ) ;
// Delete the dependency by using `id` parameter
Reactter . delete < CounterController >( 'count2' ) ;
Reactter . lazyFactory
The Reactter . lazyFactory
method is used to register a new dependency as DependencyMode . factory
in Reactter.
It returns true
if the dependency is registered successfully, otherwise return false
.
This method is similar to the Reactter . register
method but with the DependencyMode . factory
mode.
Syntax
bool Reactter . lazyFactory < T >(
Parameters
builder
: A function that returns an instance of the T
dependency.
id
: An optional identifier for the T
dependency. If not provided, the dependency will be registered with the type of the dependency.
Example
See the example below to understand how to use the Reactter . lazyFactory
method in different scenarios.
import 'package:reactter/reactter.dart' ;
class CounterController {
// Create a reactive state using the ` Signal ` class
import 'package:reactter/reactter.dart' ;
import 'counter_controller.dart' ;
// Register a dependency as factory mode.
Reactter . lazyFactory < CounterController >(() => CounterController ()) ;
final counterController = Reactter . get < CounterController >() ! ;
// Listen to the state changes
print ( 'Count: ${ counterController . count . value } ' ) ;
counterController . increment () ;
counterController . decrement () ;
Reactter . delete < CounterController >() ;
// Error: "Can't update when it's been disposed", because the dependency instance was deleted
// counterController.increment();
// Can get the dependency again, because it's factory mode
final contController2 = Reactter . get < CounterController >() ;
print ( "contController2: $ contController2 " ) ;
// Register a dependency by using `id` parameter as factory mode
Reactter . lazyFactory (() => CounterController () , id : 'count2' ) ;
// Get the dependency by using `id` parameter
final counterControllerById = Reactter . get < CounterController >( 'count2' ) ! ;
print ( "counterControllerById: $ counterControllerById " ) ;
// Delete the dependency by using `id` parameter fully
Reactter . destroy < CounterController >( 'count2' ) ;
Reactter . lazySingleton
The Reactter . lazySingleton
method is used to register a new dependency as DependencyMode . singleton
in Reactter.
It returns true
if the dependency is registered successfully, otherwise return false
.
This method is similar to the Reactter . register
method but with the DependencyMode . singleton
mode.
Syntax
bool Reactter . lazySingleton < T >(
Parameters
builder
: A function that returns an instance of the T
dependency.
id
: An optional identifier for the T
dependency. If not provided, the dependency will be registered with the type of the dependency.
Example
See the example below to understand how to use the Reactter . lazySingleton
method in different scenarios.
import 'package:reactter/reactter.dart' ;
class CounterController {
// Create a reactive state using the ` Signal ` class
import 'package:reactter/reactter.dart' ;
import 'counter_controller.dart' ;
// Register a dependency as singleton mode.
Reactter . lazySingleton < CounterController >(() => CounterController ()) ;
final counterController = Reactter . get < CounterController >() ! ;
// Listen to the state changes
print ( 'Count: ${ counterController . count . value } ' ) ;
counterController . increment () ;
counterController . decrement () ;
// Can't delete the dependency, because it's singleton mode
Reactter . delete < CounterController >() ;
// Can't update the state, because it's singleton mode
// counterController.increment();
// Can get the dependency again, because it's singleton mode
final contController2 = Reactter . get < CounterController >() ;
print ( "contController2: $ contController2 " ) ;
// Register a dependency by using `id` parameter as singleton mode
Reactter . lazySingleton (() => CounterController () , id : 'count2' ) ;
// Get the dependency by using `id` parameter
final counterControllerById = Reactter . get < CounterController >( 'count2' ) ! ;
print ( "counterControllerById: $ counterControllerById " ) ;
// If you need to delete the dependency fully, use ` Reactter.destroy ` method by forcing it, because it's singleton mode
Reactter . destroy < CounterController >(id : 'count2' ) ;
// Use `onlyDependency` parameter to delete the dependency instance only
Reactter . destroy < CounterController >(onlyDependency : true ) ;
// Can't get the dependency instance, because the dependency register was destroyed
final counterControllerById2 = Reactter . get < CounterController >( 'count2' ) ;
print ( "counterControllerById2: $ counterControllerById2 " ) ; // counterControllerById2: null
// Can get the dependency again, because its register is skipped from destroying.
final counterController3 = Reactter . get < CounterController >() ! ;
print ( "counterController3: $ counterController3 " ) ;
Reactter . create
The Reactter . create
method is used to register the dependency(if it is not already registered), create the dependency instance(if it hasn’t been created yet) and then return it.
Syntax
T Reactter . create < T >( T Function () builder , {
DependencyMode mode = DependencyMode . builder ,
Parameters
builder
: A function that returns an instance of the T
dependency.
id
: An optional identifier for the T
dependency. If not provided, the default instance of the dependency is used.
Example
See the example below to understand how to use the Reactter . create
method in different scenarios.
import 'package:reactter/reactter.dart' ;
class CounterController {
// Create a reactive state using the ` Signal ` class
import 'package:reactter/reactter.dart' ;
import 'counter_controller.dart' ;
final counterController = Reactter . create < CounterController >(() => CounterController ()) ;
print ( "counterController: $ counterController " ) ;
// Listen to the state changes
print ( 'Count: ${ counterController . count . value } ' ) ;
counterController . increment () ;
counterController . decrement () ;
Reactter . delete < CounterController >() ;
// Can't update the state, because the dependency register was deleted
// counterController.increment();
// Can't get the dependency instance, because the dependency register was deleted
final counterController2 = Reactter . get < CounterController >() ;
print ( "counterController2: $ counterController2 " ) ; // counterController2: null
// Create a dependency by using `id` parameter
final counterControllerById = Reactter . create (
() => CounterController () ,
print ( "counterControllerById: $ counterControllerById " ) ;
// Delete the dependency by using `id` parameter
Reactter . delete < CounterController >( 'count2' ) ;
// Create a dependency by using `mode` parameter as singleton mode
final counterControllerBySingletonMode = Reactter . create (
() => CounterController () ,
mode : DependencyMode . singleton ,
print ( "counterControllerBySingletonMode: $ counterControllerBySingletonMode " ) ;
Reactter . delete < CounterController >() ;
// Can get the dependency again, because it's dependency
final counterControllerBySingletonMode2 = Reactter . get < CounterController >() ! ;
print ( "counterControllerBySingletonMode2: $ counterControllerBySingletonMode2 " ) ;
Reactter . builder
The Reactter . create
method is used to register the dependency as DependencyMode . builder
(if it is not already registered), create the dependency instance(if it hasn’t been created yet) and then return it.
This method is similar to the Reactter . create
method.
Syntax
T Reactter . builder < T >( T Function () builder , {
Parameters
builder
: A function that returns an instance of the T
dependency.
id
: An optional identifier for the T
dependency. If not provided, the default instance of the dependency is used.
Example
See the example below to understand how to use the Reactter . builder
method in different scenarios.
import 'package:reactter/reactter.dart' ;
class CounterController {
// Create a reactive state using the ` Signal ` class
import 'package:reactter/reactter.dart' ;
import 'counter_controller.dart' ;
// Create a dependency as builder mode.
final counterController = Reactter . builder < CounterController >(() => CounterController ()) ;
print ( "counterController: $ counterController " ) ;
// Listen to the state changes
print ( 'Count: ${ counterController . count . value } ' ) ;
counterController . increment () ;
counterController . decrement () ;
Reactter . delete < CounterController >() ;
// Can't update the state, because the dependency register was deleted
// counterController.increment();
// Can't get the dependency instance, because the dependency register was deleted
final counterController2 = Reactter . get < CounterController >() ;
print ( "counterController2: $ counterController2 " ) ; // counterController2: null
// Create a dependency by using `id` parameter as builder mode
final counterControllerById = Reactter . builder (
() => CounterController () ,
print ( "counterControllerById: $ counterControllerById " ) ;
// Delete the dependency by using `id` parameter
Reactter . delete < CounterController >( 'count2' ) ;
Reactter . factory
The Reactter . factory
method is used to register the dependency as DependencyMode . factory
(if it is not already registered), create the dependency instance(if it hasn’t been created yet) and then return it.
This method is similar to the Reactter . create
method but with the DependencyMode . factory
mode.
Syntax
T Reactter . factory< T > ( T Function () builder , {
Parameters
builder
: A function that returns an instance of the T
dependency.
id
: An optional identifier for the T
dependency. If not provided, the default instance of the dependency is used.
Example
See the example below to understand how to use the Reactter . factory
method in different scenarios.
import 'package:reactter/reactter.dart' ;
class CounterController {
// Create a reactive state using the ` Signal ` class
import 'package:reactter/reactter.dart' ;
import 'counter_controller.dart' ;
// Create a dependency as factory mode.
final counterController = Reactter . factory < CounterController > (() => CounterController ()) ;
print ( "counterController: $ counterController " ) ;
// Listen to the state changes
print ( 'Count: ${ counterController . count . value } ' ) ;
counterController . increment () ;
counterController . decrement () ;
Reactter . delete < CounterController >() ;
// Can get the dependency again, because it's factory mode
final contController2 = Reactter . get < CounterController >() ;
print ( "contController2: $ contController2 " ) ;
// Create a dependency by using `id` parameter as factory mode
final counterControllerById = Reactter . factory (
() => CounterController () ,
print ( "counterControllerById: $ counterControllerById " ) ;
// Delete the dependency by using `id` parameter fully
Reactter . destroy < CounterController >( 'count2' ) ;
Reactter . singleton
The Reactter . singleton
method is used to register the dependency as DependencyMode . singleton
(if it is not already registered), create the dependency instance(if it hasn’t been created yet) and then return it.
This method is similar to the Reactter . create
method but with the DependencyMode . singleton
mode.
Syntax
T Reactter . singleton < T >( T Function () builder , {
Parameters
builder
: A function that returns an instance of the T
dependency.
id
: An optional identifier for the T
dependency. If not provided, the default instance of the dependency is used.
Example
See the example below to understand how to use the Reactter . singleton
method in different scenarios.
import 'package:reactter/reactter.dart' ;
class CounterController {
// Create a reactive state using the ` Signal ` class
import 'package:reactter/reactter.dart' ;
import 'counter_controller.dart' ;
// Create a dependency as singleton mode.
final counterController = Reactter . singleton < CounterController >(() => CounterController ()) ;
print ( "counterController: $ counterController " ) ;
// Listen to the state changes
print ( 'Count: ${ counterController . count . value } ' ) ;
counterController . increment () ;
counterController . decrement () ;
// Can't delete the dependency, because it's singleton mode
Reactter . delete < CounterController >() ;
// Can update the state, because it's singleton mode
counterController . increment () ;
// Can get the dependency again, because it's singleton mode
final contController2 = Reactter . get < CounterController >() ;
print ( "contController2: $ contController2 " ) ;
// Create a dependency by using `id` parameter as singleton mode
final counterControllerById = Reactter . singleton (
() => CounterController () ,
print ( "counterControllerById: $ counterControllerById " ) ;
// Delete the dependency by using `id` parameter
Reactter . delete < CounterController >( 'count2' ) ;
// Can get the dependency again, because it's singleton mode
final counterControllerById2 = Reactter . get < CounterController >( 'count2' ) ! ;
// If you need to delete the dependency fully, use ` Reactter.destroy ` method by forcing it, because it's singleton mode
Reactter . destroy < CounterController >(id : 'count2' ) ;
// Use `onlyDependency` parameter to delete the dependency instance only
Reactter . destroy < CounterController >(onlyDependency : true ) ;
// Can't get the dependency instance, because the dependency register was destroyed
final counterControllerById3 = Reactter . get < CounterController >( 'count2' ) ;
print ( "counterControllerById3: $ counterControllerById3 " ) ; // counterControllerById3: null
// Can get the dependency again, because its register is skipped from destroying.
final counterController3 = Reactter . get < CounterController >() ! ;
print ( "counterController3: $ counterController3 " ) ;
Reactter . get
The Reactter . get
method is used to get the dependency instance from the Reactter. If the dependency is not registered, it will return null
.
Syntax
T ? Reactter . get < T >([ String ? id]) ;
Parameters
id
: An optional identifier for the T
dependency. If not provided, If not provided, the method will attempt to retrieve the dependency instance using the default identifier.
Example
See the example below to understand how to use the Reactter . get
method in different scenarios.
import 'package:reactter/reactter.dart' ;
class CounterController {
// Create a reactive state using the ` Signal ` class
import 'package:reactter/reactter.dart' ;
import 'counter_controller.dart' ;
Reactter . register < CounterController >(() => CounterController ()) ;
final counterController = Reactter . get < CounterController >() ! ;
print ( "counterController: $ counterController " ) ;
// Listen to the state changes
print ( 'Count: ${ counterController . count . value } ' ) ;
counterController . increment () ;
counterController . decrement () ;
// Can't delete the dependency, because it's singleton mode
Reactter . delete < CounterController >() ;
// Can't update the state, because it's singleton mode
// counterController.increment();
// Can't get the dependency again, because the dependency register was deleted
final counterController2 = Reactter . get < CounterController >() ;
print ( "counterController2: $ counterController2 " ) ; // counterController2: null
// Register a dependency by using `id` parameter as singleton mode
Reactter . register (() => CounterController () , id : 'count2' ) ;
// Get the dependency by using `id` parameter
final counterControllerById = Reactter . get < CounterController >( 'count2' ) ! ;
print ( "counterControllerById: $ counterControllerById " ) ;
// Delete the dependency by using `id` parameter
Reactter . delete < CounterController >( 'count2' ) ;
// Get the dependency by using `id` parameter but its register doesn't exist
final counterControllerById2 = Reactter . get < CounterController >( 'foo' ) ;
print ( "counterControllerById2: $ counterControllerById2 " ) ; // counterControllerById2: null
Reactter . find
The Reactter . find
method is used to find the dependency instance from the Reactter.
If the dependency is not created, it will return null
.
Syntax
T ? Reactter . find < T >([ String ? id]) ;
Parameters
id
: An optional identifier for the T
dependency. If not provided, the method will attempt to find the default instance of the dependency.
Example
See the example below to understand how to use the Reactter . find
method in different scenarios.
import 'package:reactter/reactter.dart' ;
class CounterController {
// Create a reactive state using the ` Signal ` class
import 'package:reactter/reactter.dart' ;
import 'counter_controller.dart' ;
// Register a dependency as factory mode
Reactter . lazyFactory < CounterController >(() => CounterController ()) ;
// Can't find the dependency instance, because the dependency is not created yet
final counterController = Reactter . find < CounterController >() ;
print ( "counterController: $ counterController " ) ; // counterController: null
// Create a dependency as factory mode
final counterController2 = Reactter . factory< CounterController > () ! ;
print ( "counterController2: $ counterController2 " ) ;
final counterController3 = Reactter . find < CounterController >() ! ;
print ( "counterController3: $ counterController3 " ) ;
// Listen to the state changes
counterController2 . count ,
print ( 'Count: ${ counterController2 . count . value } ' ) ;
counterController2 . increment () ;
counterController2 . decrement () ;
Reactter . delete < CounterController >() ;
// Can't update the state, because the dependency register was deleted
// counterController2.increment();
// Create a dependency by using `id` parameter as factory mode
final counterControllerById = Reactter . factory< CounterController > ( 'count2' ) ! ;
print ( "counterControllerById: $ counterControllerById " ) ;
// Find the dependency by using `id` parameter
final counterControllerById2 = Reactter . find < CounterController >( 'count2' ) ! ;
print ( "counterControllerById2: $ counterControllerById2 " ) ;
// Delete the dependency by using `id` parameter
Reactter . delete < CounterController >( 'count2' ) ;
// Can't find the dependency instance by using `id` parameter, because the dependency was deleted
final counterControllerById3 = Reactter . find < CounterController >( 'count2' ) ;
print ( "counterControllerById3: $ counterControllerById3 " ) ; // counterControllerById3: null
// Can't update the state, because the dependency register was deleted
// counterControllerById.increment();
Reactter . exists
The Reactter . exists
method is used to check if the dependency instance exists in Reactter.
It returns true
if the dependency instance exists, otherwise return false
.
Syntax
bool Reactter . exists < T >([ String ? id]) ;
Parameters
id
: An optional identifier for the T
dependency. If not provided, the method will attempt to check the default instance of the dependency.
Example
See the example below to understand how to use the Reactter . exists
method in different scenarios.
import 'package:reactter/reactter.dart' ;
class CounterController {
// Create a reactive state using the ` Signal ` class
import 'package:reactter/reactter.dart' ;
import 'counter_controller.dart' ;
// Register a dependency as factory mode
Reactter . lazyFactory < CounterController >(() => CounterController ()) ;
// Can't find the dependency instance, because the dependency is not created yet
final isExists = Reactter . exists < CounterController >() ;
print ( "CounterController exists: $ isExists " ) ; // CounterController exists: false
// Create a dependency as factory mode
final counterController = Reactter . factory< CounterController > () ! ;
print ( "counterController: $ counterController " ) ;
final isExists2 = Reactter . exists < CounterController >() ;
print ( "CounterController exists: $ isExists2 " ) ; // CountCountroller exists: true
// Listen to the state changes
print ( 'Count: ${ counterController . count . value } ' ) ;
counterController . increment () ;
counterController . decrement () ;
Reactter . delete < CounterController >() ;
// Can't update the state, because the dependency register was deleted
// counterController.increment();
// Create a dependency by using `id` parameter as factory mode
final counterControllerById = Reactter . factory< CounterController > ( 'count2' ) ! ;
print ( "counterControllerById: $ counterControllerById " ) ;
// Find the dependency by using `id` parameter
final isExistsById = Reactter . exists < CounterController >( 'count2' ) ;
print ( "CounterController exists: $ isExistsById " ) ; // CounterController exists: true
// Delete the dependency by using `id` parameter
Reactter . delete < CounterController >( 'count2' ) ;
// Can't find the dependency instance by using `id` parameter, because the dependency was deleted
final isExistsById2 = Reactter . exists < CounterController >( 'count2' ) ;
print ( "CounterController exists: $ isExistsById2 " ) ; // CounterController exists: false
// Can't update the state, because the dependency register was deleted
// counterControllerById.increment();
Reactter . getDependencyMode
The Reactter . getDependencyMode
method is used to get the dependency mode of the dependency.
Syntax
DependencyMode ? Reactter . getDependencyMode < T >([ String ? id]) ;
Parameters
id
: An optional identifier for the T
dependency. If not provided, the method will attempt to get the default instance of the dependency.
Example
See the example below to understand how to use the Reactter . getDependencyMode
method in different scenarios.
import 'package:reactter/reactter.dart' ;
class CounterController {
// Create a reactive state using the ` Signal ` class
import 'package:reactter/reactter.dart' ;
import 'counter_controller.dart' ;
// Register a dependency as builder mode
Reactter . builder < CounterController >(() => CounterController ()) ;
final counterController = Reactter . get < CounterController >() ! ;
print ( "counterController: $ counterController " ) ;
// Get the dependency mode
final dependencyMode = Reactter . getDependencyMode < CounterController >() ;
print ( "Dependency mode: $ dependencyMode " ) ; // Dependency mode: DependencyMode.builder
// Listen to the state changes
print ( 'Count: ${ counterController . count . value } ' ) ;
counterController . increment () ;
counterController . decrement () ;
Reactter . delete < CounterController >() ;
// Can't get the dependency mode, because the dependency was deleted
final dependencyMode2 = Reactter . getDependencyMode < CounterController >() ;
print ( "Dependency mode: $ dependencyMode2 " ) ; // Dependency mode: null
// Register a dependency by using `id` parameter as factory mode
Reactter . lazyFactory (() => CounterController () , id : 'count2' ) ;
// Get the dependency by using `id` parameter
final counterControllerById = Reactter . get < CounterController >( 'count2' ) ! ;
print ( "counterControllerById: $ counterControllerById " ) ;
// Delete the dependency by using `id` parameter
Reactter . delete < CounterController >( 'count2' ) ;
// Get the dependency mode by using `id` parameter
final dependencyModeById2 = Reactter . getDependencyMode < CounterController >( 'count2' ) ;
print ( "Dependency mode: $ dependencyModeById2 " ) ; // Dependency mode: DependencyMode.factory
// If you need to delete the dependency fully, use ` Reactter.destroy ` method by forcing it, because it's factory mode
Reactter . destroy < CounterController >(id : 'count2' ) ;
// Can't get the dependency mode, because the dependency was destroyed
final dependencyModeById2 = Reactter . getDependencyMode < CounterController >( 'count2' ) ;
print ( "Dependency mode: $ dependencyModeById2 " ) ; // Dependency mode: null
// Create a dependency as singleton mode
final counterController2 = Reactter . singleton < CounterController >() ! ;
print ( "counterController2: $ counterController2 " ) ;
// Get the dependency mode by using `id` parameter
final dependencyMode3 = Reactter . getDependencyMode < CounterController >() ;
print ( "Dependency mode: $ dependencyMode3 " ) ; // Dependency mode: DependencyMode.singleton
// If you need to delete the dependency fully, use ` Reactter.destroy ` method by forcing it, because it's singleton mode
Reactter . destroy < CounterController >() ;
// Can't get the dependency mode, because the dependency was destroyed
final dependencyMode4 = Reactter . getDependencyMode < CounterController >() ;
print ( "Dependency mode: $ dependencyMode4 " ) ; // Dependency mode: null
Reactter . delete
The Reactter . delete
method is used to delete the dependency instance from the Reactter.
It returns true
if the dependency is deleted successfully, otherwise return false
.
Syntax
bool Reactter . delete < T >([ String ? id]) ;
Parameters
id
: An optional identifier for the T
dependency. If not provided, the method will attempt to delete the default instance of the dependency.
Example
See the example below to understand how to use the Reactter . delete
method in different scenarios.
import 'package:reactter/reactter.dart' ;
class CounterController {
// Create a reactive state using the ` Signal ` class
import 'package:reactter/reactter.dart' ;
import 'counter_controller.dart' ;
Reactter . register < CounterController >(() => CounterController ()) ;
final counterController = Reactter . get < CounterController >() ! ;
print ( "counterController: $ counterController " ) ;
// Listen to the state changes
print ( 'Count: ${ counterController . count . value } ' ) ;
counterController . increment () ;
counterController . decrement () ;
Reactter . delete < CounterController >() ;
// Can't update the state, because the dependency register was deleted
// counterController.increment();
// Can't get the dependency instance, because the dependency register was deleted
final counterController2 = Reactter . get < CounterController >() ;
print ( "counterController2: $ counterController2 " ) ; // counterController2: null
// Register a dependency by using `id` parameter
Reactter . register (() => CounterController () , id : 'count2' ) ;
// Get the dependency by using `id` parameter
final counterControllerById = Reactter . get < CounterController >( 'count2' ) ! ;
print ( "counterControllerById: $ counterControllerById " ) ;
// Delete the dependency by using `id` parameter
Reactter . delete < CounterController >( 'count2' ) ;
// Get the dependency by using `id` parameter but its register doesn't exist
final counterControllerById2 = Reactter . get < CounterController >( 'foo' ) ;
print ( "counterControllerById2: $ counterControllerById2 " ) ; // counterControllerById2: null
Reactter . destroy
The Reactter . destroy
method is used to destroy the dependency instance and its register from the Reactter.
It returns true
if the dependency is destroyed successfully, otherwise return false
.
Syntax
bool Reactter . destroy < T >({
bool onlyDependency = false ,
Parameters
id
: An optional identifier for the T
dependency. If not provided, the method will attempt to destroy the default instance of the dependency.
onlyDependency
: An optional parameter to delete the dependency instance only. The default value is false
.
Example
See the example below to understand how to use the Reactter . destroy
method in different scenarios.
import 'package:reactter/reactter.dart' ;
class CounterController {
// Create a reactive state using the ` Signal ` class
import 'package:reactter/reactter.dart' ;
import 'counter_controller.dart' ;
// Create a dependency as factory mode
final counterController = Reactter . singleton < CounterController >(() => CounterController ()) ;
// Listen to the state changes
print ( 'Count: ${ counterController . count . value } ' ) ;
counterController . increment () ;
counterController . decrement () ;
// Destroy the dependency instance only
Reactter . destroy < CounterController >(onlyDependency : true ) ;
// Can get the dependency again, because its register is skipped from destroying.
final counterController2 = Reactter . get < CounterController >() ! ;
// Destroy the dependency instance and its register
Reactter . destroy < CounterController >() ;
// Can't update the state, because the dependency register was destroyed
// counterController.increment();
// Can't get the dependency instance, because the dependency register was destroyed
final counterController2 = Reactter . get < CounterController >() ;
print ( "counterController2: $ counterController2 " ) ; // counterController2: null
// Create a dependency by using `id` parameter as singleton mode
final counterControllerById = Reactter . singleton (() => CounterController () , id : 'count2' ) ;
print ( "counterControllerById: $ counterControllerById " ) ;
// Destroy the dependency by using `id` parameter
Reactter . destroy < CounterController >(id : 'count2' ) ;
// Can't get the dependency instance, because the dependency register was destroyed
final counterControllerById2 = Reactter . get < CounterController >( 'count2' ) ;
print ( "counterControllerById2: $ counterControllerById2 " ) ; // counterControllerById2: null
Reactter . unregister
The Reactter . unregister
method is used to unregister the dependency from the Reactter.
It returns true
if the dependency is unregistered successfully, otherwise return false
.
Syntax
bool Reactter . unregister < T >([ String ? id]) ;
Parameters
id
: An optional identifier for the T
dependency. If not provided, the method will attempt to unregister the default instance of the dependency.
Example
See the example below to understand how to use the Reactter . unregister
method in different scenarios.
import 'package:reactter/reactter.dart' ;
class CounterController {
// Create a reactive state using the ` Signal ` class
import 'package:reactter/reactter.dart' ;
import 'counter_controller.dart' ;
// Create a dependency as factory mode
final counterController = Reactter . factory< CounterController > (() => CounterController ()) ;
// Listen to the state changes
print ( 'Count: ${ counterController . count . value } ' ) ;
counterController . increment () ;
counterController . decrement () ;
// Can't unregister the dependency, because the dependency is active
Reactter . unregister < CounterController >() ;
Reactter . delete < CounterController >() ;
// Can get the dependency again, because it's factory mode
final contController2 = Reactter . get < CounterController >() ;
print ( "contController2: $ contController2 " ) ;
// Can unregister the dependency, because the dependency is deleted
Reactter . unregister < CounterController >() ;
// Can't update the state, because the dependency register was unregistered
// counterController.increment();
// Can't get the dependency instance, because the dependency register was unregistered
final counterController3 = Reactter . get < CounterController >() ;
print ( "counterController3: $ counterController3 " ) ; // counterController2: null
// Create a dependency by using `id` parameter as factory mode
final counterControllerById = Reactter . factory (() => CounterController () , id : 'count2' ) ;
print ( "counterControllerById: $ counterControllerById " ) ;
// Delete the dependency by using `id` parameter
Reactter . delete < CounterController >( 'count2' ) ;
// Unregister the dependency by using `id` parameter
Reactter . unregister < CounterController >( 'count2' ) ;
// Can't get the dependency instance, because the dependency register was unregistered
final counterControllerById2 = Reactter . get < CounterController >( 'count2' ) ;
print ( "counterControllerById2: $ counterControllerById2 " ) ; // counterControllerById2: null
Reactter . isRegistered
The Reactter . isRegistered
method is used to check if the dependency is registered in Reactter.
It returns true
if the dependency is registered, otherwise return false
.
Syntax
bool Reactter . isRegistered < T >([ String ? id]) ;
Parameters
id
: An optional identifier for the T
dependency. If not provided, the method will attempt to check the default instance of the dependency.
Example
See the example below to understand how to use the Reactter . isRegistered
method in different scenarios.
import 'package:reactter/reactter.dart' ;
class CounterController {
// Create a reactive state using the ` Signal ` class
import 'package:reactter/reactter.dart' ;
import 'counter_controller.dart' ;
// The dependency is not registered yet
final isRegistered = Reactter . isRegistered < CounterController >() ;
print ( "CounterController is registered: $ isRegistered " ) ; // CounterController is registered: false
// Register a dependency as factory mode
Reactter . lazyFactory < CounterController >(() => CounterController ()) ;
// The dependency is registered
final isRegistered2 = Reactter . isRegistered < CounterController >() ;
print ( "CounterController is registered: $ isRegistered2 " ) ; // CounterController is registered: true
// Create a dependency as factory mode
final counterController = Reactter . factory < CounterController > () ! ;
print ( "counterController: $ counterController " ) ;
// Listen to the state changes
print ( 'Count: ${ counterController . count . value } ' ) ;
counterController . increment () ;
counterController . decrement () ;
Reactter . delete < CounterController >() ;
// The dependency is registered, because it's factory mode
final isRegistered3 = Reactter . isRegistered < CounterController >() ;
print ( "CounterController is registered: $ isRegistered3 " ) ; // CounterController is registered: true
// Can't update the state, because the dependency register was deleted
// counterController.increment();
// Create a dependency by using `id` parameter as factory mode
final counterControllerById = Reactter . factory < CounterController > ( 'count2' ) ! ;
print ( "counterControllerById: $ counterControllerById " ) ;
// Delete the dependency by using `id` parameter
Reactter . delete < CounterController >( 'count2' ) ;
// The dependency is registered
final isRegisteredById = Reactter . isRegistered < CounterController >( 'count2' ) ;
print ( "CounterController is registered: $ isRegisteredById " ) ; // CounterController is registered: true
// Unregister the dependency by using `id` parameter
Reactter . unregister < CounterController >( 'count2' ) ;
// The dependency is not registered
final isRegisteredById2 = Reactter . isRegistered < CounterController >( 'count2' ) ;
print ( "CounterController is registered: $ isRegisteredById2 " ) ; // CounterController is registered: false
// Can't update the state, because the dependency register was deleted
// counterControllerById.increment();