AppVersionGateController class

Reads version-gate policy from a RemoteConfigService (which already gives "asset default, remote merges in, remote fail/corrupt keeps last-good" for free — see ENH-58) and evaluates it — no separate cache of its own, since RemoteConfigService already is the last-known-good cache. Keys read: appVersionMinimum, appVersionRecommended, appVersionMaintenanceActive, appVersionMaintenanceMessage, appVersionStoreUrl.

Also tracks the soft-update prompt's own cooldown — a dismissible prompt re-shown every single launch is just noise.

Inheritance
  • Object
  • GetLifeCycle
  • DisposableInterface
  • GetxService
  • AppVersionGateController

Constructors

AppVersionGateController({required RemoteConfigService remoteConfig, Duration softPromptCooldown = const Duration(days: 3)})

Properties

config → AppVersionGateConfig
no setter
hashCode → int
The hash code for this object.
no setterinherited
initialized → bool
Checks whether the controller has already been initialized.
no setterinherited
isClosed → bool
Checks whether the controller has already been closed.
no setterinherited
onDelete → InternalFinalCallback<void>
Internal callback that starts the cycle of this controller.
finalinherited
onStart → InternalFinalCallback<void>
Called at the exact moment the widget is allocated in memory. It uses an internal "callable" type, to avoid any @overrides in subclases. This method should be internal and is required to define the lifetime cycle of the subclass.
finalinherited
remoteConfig → RemoteConfigService
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
softPromptCooldown → Duration
final
softPromptDue → bool
no setter

Methods

$configureLifeCycle() → void
inherited
decisionFor(String currentVersion) → GateDecision
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
onClose() → void
Called before onDelete method. onClose might be used to dispose resources used by the controller. Like closing events, or streams before the controller is destroyed. Or dispose objects that can potentially create some memory leaks, like TextEditingControllers, AnimationControllers. Might be useful as well to persist some data on disk.
inherited
onInit() → void
Called immediately after the widget is allocated in memory. You might use this to initialize something for the controller.
inherited
onReady() → void
Called 1 frame after onInit(). It is the perfect place to enter navigation events, like snackbar, dialogs, or a new route, or async request.
inherited
recordSoftPromptDismissed() → void
Block body (not => StorageService.to.setInt(...)) on purpose — an arrow body would still hand the underlying Future back to the caller at runtime despite the void return type, which trips setState's "callback returned a Future" assertion for any caller wrapping this in setState(() => controller.recordSoftPromptDismissed()) (exactly how AppVersionGateOverlay.onSoftDismiss is typically used).
toString() → String
A string representation of this object.
inherited

Operators

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

Static Properties

maybe → AppVersionGateController?
no setter