这是indexloc提供的服务,不要输入任何密码

flutter_access_gates 0.2.5 copy "flutter_access_gates: ^0.2.5" to clipboard
flutter_access_gates: ^0.2.5 copied to clipboard

A declarative access control layer for Flutter UI. Includes FeatureGate, PermissionGate, and support for hot-reloadable flags.

flutter_access_gates #

Declarative access control for Flutter UI.

🔐 Feature flags, permission-based widgets, role gates, and flexible access strategies — all in one.


✨ Opportunities #

Gates Purpose
FeatureGate By future flags
PermissionGate By permission rules
RoleGate By user roles
GateUiBuilder By custom condtioons
CompositeAccessGate All conditions AND
DebugGate Only in debug-mode
SimpleFeatureGate Only Map use

Use Example #

import 'package:flutter/material.dart';
import 'package:flutter_access_gates/flutter_access_gates.dart';

void main() {
  runApp(const ExampleApp());
}

final class FakeAccessStrategy implements AccessStrategy {
  final Set<String> allowedPermissions;
  final Set<String> allowedRoles;
  final Set<String> enabledFeatures;

  const FakeAccessStrategy({
    this.allowedPermissions = const {},
    this.allowedRoles = const {},
    this.enabledFeatures = const {},
  });

  @override
  bool hasPermission(BuildContext context, String permission) {
    return allowedPermissions.contains(permission);
  }

  @override
  bool hasRole(BuildContext context, String role) {
    return allowedRoles.contains(role);
  }

  @override
  bool isFeatureEnabled(BuildContext context, String flag) {
    return enabledFeatures.contains(flag);
  }
}

final class ExampleApp extends StatelessWidget {
  const ExampleApp({super.key});

  @override
  Widget build(BuildContext context) {
    return FeatureFlags(
      controller: FeatureFlagsController({'dev_mode': true}),
      child: AccessStrategyProvider(
        strategy: const FakeAccessStrategy(
          allowedRoles: {'admin'},
          allowedPermissions: {'edit'},
          enabledFeatures: {'dev_mode'},
        ),
        child: MaterialApp(
          home: Scaffold(
            appBar: AppBar(title: const Text('Access Gates Example')),
            body: const ExamplePage(),
          ),
        ),
      ),
    );
  }
}

final class ExamplePage extends StatelessWidget {
  const ExamplePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        const FeatureGate(
          flag: 'dev_mode',
          child: Text('FeatureGate: dev_mode active'),
        ),
        const PermissionGate(
          permission: 'edit',
          child: Text('PermissionGate: edit granted'),
        ),
        const RoleGate(
          role: 'admin',
          child: Text('RoleGate: admin'),
        ),
        GateUiBuilder(
          condition: (ctx) => true,
          builder: (_) => const Text('GateUiBuilder: always shown'),
        ),
        CompositeAccessGate(
          conditions: [
            (ctx) => true,
            (ctx) => true,
          ],
          child: const Text('CompositeGate: all conditions passed'),
        ),
        const DebugGate(
          fallback: Text('DebugGate: fallback (not debug)'),
          child: Text('DebugGate: only in debug'),
        ),
      ],
    );
  }
}

Conceptions #

Instead of manual access conditions check:

if (user.hasPermission('edit')) {
  return ElevatedButton(...);
}

Simply using declarative widget:

PermissionGate(
  permission: 'edit',
  child: ElevatedButton(...),
)

Install #

Add pakage in pubspec.yaml:

dependencies:
  flutter_access_gates: ^0.2.2

Then execute:

flutter pub get

Documentation #


Tip #

You can explore more practical examples inside the example/ folder.

1
likes
160
points
42
downloads

Publisher

unverified uploader

Weekly Downloads

A declarative access control layer for Flutter UI. Includes FeatureGate, PermissionGate, and support for hot-reloadable flags.

Repository (GitHub)
View/report issues

Topics

#feature-flags #permissions #gates #conditional-ui #access-control

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

flutter, provider

More

Packages that depend on flutter_access_gates