feature_gate_pro 1.0.0 copy "feature_gate_pro: ^1.0.0" to clipboard
feature_gate_pro: ^1.0.0 copied to clipboard

A high-performance, robust Feature Flag SDK for Flutter. Supports Local JSON, Remote Config, custom REST APIs, Percentage Rollouts, and Audience Targeting.

example/lib/main.dart

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // Initialize FlagFlow with a mocked provider demonstrating all features.
  await FlagFlow.initialize(
    providers: [
      MockDemoProvider({
        'new_checkout': const FlagValue(true),
        'welcome_message': const FlagValue('Welcome to FeatureGate Pro!'),
        'button_color': const FlagValue('blue'),
      })
    ],
    // Set up a default user context for targeting/rollout demos
    userContext: const UserContext(
      id: 'user_123',
      country: 'US',
      platform: 'android',
      appVersion: '1.0.0',
    ),
  );

  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'FeatureGate Pro Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const DemoHomePage(),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('FeatureGate Pro Demo'),
        actions: [
          IconButton(
            icon: const Icon(Icons.bug_report),
            tooltip: 'Open Debug Dashboard',
            onPressed: () {
              // Easily integrate the powerful QA Debug Dashboard
              Navigator.push(
                context,
                MaterialPageRoute(builder: (_) => const FeatureGateDebugScreen()),
              );
            },
          )
        ],
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            // 1. FeatureFlagWidget (declarative)
            const FeatureFlagWidget(
              flagKey: 'new_checkout',
              fallback: Text('Old Checkout System'),
              child: Card(
                color: Colors.greenAccent,
                child: Padding(
                  padding: EdgeInsets.all(16.0),
                  child: Text('New Checkout Enabled!'),
                ),
              ),
            ),
            
            const SizedBox(height: 40),

            // 2. FeatureFlagBuilder (imperative strings/colors)
            FeatureFlagBuilder(
              flagKey: 'welcome_message',
              builder: (context, value) {
                return Text(
                  value.asString,
                  style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
                );
              },
            ),

            const SizedBox(height: 20),

            FeatureFlagBuilder(
              flagKey: 'button_color',
              builder: (context, value) {
                final color = value.asString == 'blue' ? Colors.blue : Colors.red;
                return ElevatedButton(
                  style: ElevatedButton.styleFrom(backgroundColor: color),
                  onPressed: () {},
                  child: const Text('Dynamic Button', style: TextStyle(color: Colors.white)),
                );
              },
            ),
          ],
        ),
      ),
    );
  }
}

/// A simple mock provider to simulate remote configs for the example app.
class MockDemoProvider implements FlagProvider {
  final Map<String, FlagValue> flags;
  MockDemoProvider(this.flags);

  @override
  Future<void> fetchAndActivate() async {}
  
  @override
  FeatureFlag? getFlag(String key) {
    if (flags.containsKey(key)) {
      return FeatureFlag(key: key, defaultValue: flags[key]!);
    }
    return null;
  }
  
  @override
  Future<void> initialize() async {}
  
  @override
  Stream<String>? get onFlagChanged => null;
}
1
likes
0
points
353
downloads

Publisher

unverified uploader

Weekly Downloads

A high-performance, robust Feature Flag SDK for Flutter. Supports Local JSON, Remote Config, custom REST APIs, Percentage Rollouts, and Audience Targeting.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, http, shared_preferences

More

Packages that depend on feature_gate_pro