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