init method Null safety

Future<void> init(
  1. String domain,
  2. {bool requestTrackingAuthorization = false}
)

Asynchronously initializes the EAnalytics SDK

Call it ONCE before any tracking request at the top-level of your app. It will try to sync any failed tracking attemps locally stored. You can optionnally request tracking authorization for iOS devices by passing the requestTrackingAuhtorization flag to the init method.

  await Eulerian.init('test.domain.dev', requestTrackingAuthorization: true)

Implementation

static Future<void> init(String domain, {bool requestTrackingAuthorization = false}) async {
  try {
    assert(!domain.contains('.eulerian.com'), 'Domain cannot contain ".eulerian.com"');
    assert(Uri.parse('https://$domain').isAbsolute, 'Domain is not well formed');

    /* if called during initState, delay initialization */
    if (requestTrackingAuthorization) WidgetsBinding.instance!.addPostFrameCallback((_) => getAdvertiserId(true));

    await EAGlobalParams.init();
    Eulerian._instance.initialized = true;
    Eulerian._instance._postHandler = createPostHandler(domain, _logger);

    /* sync saved properties */
    Eulerian._instance._post(await getStoredProperties(logger: _logger));

    _logger.info('Initilization succeeded for domain $domain');
  } catch (e) {
    _logger.error('Initialization failed ${e.toString()}');
  }
}