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
onDeletemethod.onClosemight 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 underlyingFutureback to the caller at runtime despite thevoidreturn type, which tripssetState's "callback returned a Future" assertion for any caller wrapping this insetState(() => controller.recordSoftPromptDismissed())(exactly howAppVersionGateOverlay.onSoftDismissis 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