withLifecycleEffect method
void
withLifecycleEffect({})
从当前的Context
中获取Lifecycle
并使用
Implementation
void withLifecycleEffect({
LLauncher? launchOnFirstCreate,
LLauncher? launchOnFirstStart,
LLauncher? launchOnFirstResume,
LLauncher? repeatOnStarted,
LLauncher? repeatOnResumed,
LLauncher? launchOnDestroy,
}) {
final lifecycle = Lifecycle.of(this);
final ctx = this;
final cache = lifecycle.extData
.putIfAbsent<Map<BuildContext, _LLauncherObserver>>(
key: _withLifecycleKey, ifAbsent: () => WeakHashMap());
final observer = cache.putIfAbsent(ctx, () {
final observer = _LLauncherObserver._(ctx);
observer.launchOnFirstCreate = launchOnFirstCreate;
observer.launchOnFirstStart = launchOnFirstStart;
observer.launchOnFirstResume = launchOnFirstResume;
observer.launchOnDestroy = launchOnDestroy;
if (repeatOnStarted != null) {
observer.repeatOnStarted = repeatOnStarted;
}
if (repeatOnResumed != null) {
observer.repeatOnResumed = repeatOnResumed;
}
lifecycle.addObserver(observer);
lifecycle.addLifecycleObserver(
LifecycleObserver.eventDestroy(() => cache.remove(ctx)));
return observer;
});
if (repeatOnStarted != null) {
observer.repeatOnStarted = repeatOnStarted;
}
if (repeatOnResumed != null) {
observer.repeatOnResumed = repeatOnResumed;
}
if (launchOnDestroy != null) {
observer.launchOnDestroy = launchOnDestroy;
}
}