lib/confidence_flutter_sdk.dart (94 lines of code) (raw):

import 'dart:async'; import 'confidence_flutter_sdk_platform_interface.dart'; class ConfidenceFlutterSdk { Map<String, dynamic> _flags = {}; bool isInitialized = false; Future<bool> isStorageEmpty() async { return ConfidenceFlutterSdkPlatform.instance.isStorageEmpty(); } Future<void> putContext(String key, dynamic value) async { await ConfidenceFlutterSdkPlatform.instance.putContext(key, value); if(isInitialized) { await fetchAndActivate(); } } Future<void> putAllContext(Map<String, dynamic> context) async { await ConfidenceFlutterSdkPlatform.instance.putAllContext(context); if(isInitialized) { await fetchAndActivate(); } } void track(String eventName, Map<String, dynamic> data) { ConfidenceFlutterSdkPlatform.instance.track(eventName, data); } void flush() { ConfidenceFlutterSdkPlatform.instance.flush(); } bool getBool(String key, bool defaultValue) { unawaited(ConfidenceFlutterSdkPlatform.instance.getBool(key, defaultValue)); return resolveKey(key) ?? defaultValue; } T? resolveKey<T>(String key) { List<String> keys = key.split("."); Map<String, dynamic> flags = _flags; for(int i = 0; i < keys.length; i++) { String element = keys[i]; if (flags.containsKey(element)) { if(flags[element] is Map<String, dynamic>) { flags = flags[element]; } else { return parse<T>(flags[element]); } } else { return null; } } return parse<T>(flags); } T parse<T>(dynamic value) { if(T == String) { return value.toString() as T; } else if(T == int) { return int.parse(value.toString()) as T; } else if(T == bool) { return bool.parse(value.toString()) as T; } else if(T == double) { return double.parse(value.toString()) as T; } else if(T == Map<String, dynamic>) { return value as T; } else { return value as T; } } int getInt(String key, int defaultValue) { unawaited(ConfidenceFlutterSdkPlatform.instance.getInt(key, defaultValue)); return resolveKey<int>(key) ?? defaultValue; } String getString(String key, String defaultValue) { unawaited(ConfidenceFlutterSdkPlatform.instance.getString(key, defaultValue)); return resolveKey(key) ?? defaultValue; } Map<String, dynamic> getObject(String key, Map<String, dynamic> defaultValue) { unawaited(ConfidenceFlutterSdkPlatform.instance.getObject(key, defaultValue)); return resolveKey(key) ?? defaultValue; } double getDouble(String key, double defaultValue) { unawaited(ConfidenceFlutterSdkPlatform.instance.getDouble(key, defaultValue)); return resolveKey(key) ?? defaultValue; } Future<void> setup(String apiKey) async { return await ConfidenceFlutterSdkPlatform.instance.setup(apiKey); } Future<void> fetchAndActivate() async { await ConfidenceFlutterSdkPlatform.instance.fetchAndActivate(); await fillAllFlags(); } Future<void> fillAllFlags() async { _flags = await ConfidenceFlutterSdkPlatform.instance.readAllFlags(); isInitialized = true; } Future<void> activateAndFetchAsync() async { await ConfidenceFlutterSdkPlatform.instance.activateAndFetchAsync(); await fillAllFlags(); } }