lazyPut<S> method
Creates a new Instance lazily from the <S>builder() callback.
The first time you call June.find(), the builder() callback will create
the Instance and persisted as a Singleton (like you would
use June.put()).
Using June.intelligentManagement as IntelligentManagement.keepFactory has
the same outcome as using fenix:true :
The internal register of builder() will remain in memory to recreate
the Instance if the Instance has been removed with June.delete().
Therefore, future calls to June.find() will return the same Instance.
If you need to make use of JuneState's life-cycle
(onInit(), onStart(), onClose()) fenix is a great choice to mix with
JuneBuilder() and JuneX() widgets, and/or JuneMaterialApp Navigation.
You could use June.lazyPut(fenix:true) in your app's main() instead
of Connections() for each JunePage.
And the memory management will be similar.
Subsequent calls to June.lazyPut() with the same parameters
(<S> and optionally tag will not override the original).
Implementation
void lazyPut<S>(
BuilderPattern<S> builder, {
String? tag,
bool? fenix,
bool permanent = false,
}) {
_insert(
isSingleton: true,
name: tag,
permanent: permanent,
builder: builder,
fenix: fenix ??
June.intelligentManagement == IntelligentManagement.keepFactory,
);
}