Developer 
Feature flags
This package aims to create an implementation of FLAGD http2 provider based on package openfeature.
Features
- http/http2
- InMemoryCache
Installation
dart pub add eit_flagd_provider -u https://gitea.whitelabel.mobile.embedit.dev/api/packages/platform/pub/
!IMPORTANT You need access token for fetching from private pub repository. ELI add token automatically
Usage
To use eit_flagd_provider you need initialize service and provide configuration.
final service = await EitFlag.http(
    Config(
      host: 'x4osswow8ogo4g4s08scwg80.zoocityboy.space',
      maxRetries: 3,
      onLogEvent: logger.info,
    ),
  );
How to get values
We need to get value of feature flag and decide what's happen in our code. We supports all types supported by flagd now.
// bool value
final value = client.getBooleanValue('myBoolFlag', false);
/// String value
final value = client.getStringValue('myStringFlag', 'none');
/// num value
final value = client.getNumberValue('myFloatFlag', 123.0);
final value = client.getNumberValue('myIntFlag', 123);
/// object value
final value = client.getObjectValue('myObjectFlag',Value.empty());
How to add context to query
This is sample definition of the flag on backend side.
    "fibAlgo": {
      "variants": {
        "recursive": "recursive",
        "memo": "memo",
        "loop": "loop",
        "binet": "binet"
      },
      "defaultVariant": "recursive",
      "state": "ENABLED",
      "targeting": {
        "if": [
          {
            "$ref": "emailWithFaas"
          },
          "binet",
          null
        ]
      }
    },
    "$evaluators": {
    "emailWithFaas": {
      "in": [
        "@faas.com",
        {
          "var": ["email"]
        }
      ]
    }
  }
Query
now we can run our request with default value.
/// standard request
final value = client.getStringValue('fibAlgo','#cccccc');
/// > returns `recursive`
Or we can provide specific context for this flag.
/// request with specific context
client.getStringValue('fibAlgo','#cccccc',evaluationContext: ImmutableContext.fromAttributes({"email": Value.fromString("abc@faas.com")}))
/// > returns `binet`
How to fetch all flags on start
You can initialize connection on start of the app
final service = await EitFlag.http(
    Config(
      host: 'x4osswow8ogo4g4s08scwg80.zoocityboy.space',
      maxRetries: 3,
      onLogEvent: logger.info,
    ),
  );
/// run prefetch, start connection on http2 
service.initialize();