OrgFeatureGate class

Wraps an org-scoped feature screen with an entitlement check.

If the org has the required entitlement, renders child unchanged. Otherwise renders an editorial-style gated layout: an EditorialHeader (so the user knows what feature they're looking at), an UpgradePrompt card with the right CTA for their role, and a muted bullet list of highlights so prospects can see what they would unlock instead of staring at an empty viewport. The server-side RLS still enforces the gate if this widget is bypassed — it's purely a UX hint.

Usage:

body: OrgFeatureGate(
  orgId: widget.orgId,
  feature: 'SSO/SAML',
  check: (ent) => ent.canUseSso,
  highlights: const [
    'SAML 2.0 single sign-on',
    'SCIM provisioning',
    'Customizable session policies',
  ],
  child: _ssoConfigForm(),
),
Inheritance
Available extensions

Constructors

OrgFeatureGate({Key? key, required String orgId, required String feature, required bool check(OrgEntitlement), required Widget child, String? kicker, String? title, List<String> highlights = const []})
const

Properties

check → bool Function(OrgEntitlement)
Entitlement check against the org's resolved plan. Receives the org's OrgEntitlement and returns true if access is allowed.
final
child → Widget
final
feature → String
Human-readable feature name shown in the upgrade prompt.
final
hashCode → int
The hash code for this object.
no setterinherited
highlights → List<String>
Bullet points describing what the gated feature offers. Rendered as a muted preview list below the upgrade card so the screen does not feel empty when access is denied.
final
key → Key?
Controls how one widget replaces another widget in the tree.
finalinherited
kicker → String?
Optional editorial-header kicker shown on the gated screen (defaults to "Locked"). Used so the page reads as a proper screen rather than a bare upsell banner.
final
orgId → String
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
title → String?
Optional editorial-header title shown on the gated screen (defaults to "$feature").
final

Methods

animate({Key? key, List<Effect>? effects, AnimateCallback? onInit, AnimateCallback? onPlay, AnimateCallback? onComplete, bool? autoPlay, Duration? delay, AnimationController? controller, Adapter? adapter, double? target, double? value}) → Animate

Available on Widget, provided by the AnimateWidgetExtensions extension

Wraps the target Widget in an Animate instance, and returns the instance for chaining calls. Ex. myWidget.animate() is equivalent to Animate(child: myWidget).
build(BuildContext context, WidgetRef ref) → Widget
Describes the part of the user interface represented by this widget.
override
createElement() → ConsumerStatefulElement
Creates a StatefulElement to manage this widget's location in the tree.
inherited
createState() → _ConsumerState
Creates the mutable state for this widget at a given location in the tree.
inherited
debugDescribeChildren() → List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) → String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) → String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String
Returns a one-line detailed description of the object.
inherited
toStringShort() → String
A short, textual description of this widget.
inherited

Operators

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