NotificationFlowConfig.fromAppConfig constructor

NotificationFlowConfig.fromAppConfig({
  1. bool showGoToSettingsPrompt = true,
  2. Duration? goToSettingsAskAgainAfter,
  3. int? goToSettingsMaxAskCount,
  4. NotificationFlowStrings strings = const NotificationFlowStrings(),
  5. Future<bool> valuePropositionBuilder(
    1. BuildContext context
    )?,
  6. Future<bool> goToSettingsBuilder(
    1. BuildContext context
    )?,
  7. Future<bool> askAgainBuilder(
    1. BuildContext context,
    2. NotificationDenialInfo info
    )?,
})

Creates a NotificationFlowConfig using values from AppConfigBase.

This factory reads the notification re-request configuration from AppConfigBase, which supports environment variables, Firebase Remote Config, and programmatic defaults.

Use this to create a config that can be dynamically controlled via Remote Config.

Pass a non-null goToSettingsAskAgainAfter / goToSettingsMaxAskCount to override the AppConfigBase value inline. When null (the default), the values are pulled from AppConfigBase.notificationGoToSettingsAskAgainDays and AppConfigBase.notificationGoToSettingsMaxAskCount respectively.

Implementation

factory NotificationFlowConfig.fromAppConfig({
  // Go-to-settings: pass non-null to override AppConfigBase value
  bool showGoToSettingsPrompt = true,
  Duration? goToSettingsAskAgainAfter,
  int? goToSettingsMaxAskCount,
  // Strings and builders
  NotificationFlowStrings strings = const NotificationFlowStrings(),
  Future<bool> Function(BuildContext context)? valuePropositionBuilder,
  Future<bool> Function(BuildContext context)? goToSettingsBuilder,
  Future<bool> Function(BuildContext context, NotificationDenialInfo info)? askAgainBuilder,
}) {
  return NotificationFlowConfig(
    askAgainAfter: Duration(days: AppConfigBase.notificationAskAgainDays),
    askAgainMultiplier: AppConfigBase.notificationAskAgainMultiplier,
    maxAskCount: AppConfigBase.notificationMaxAskCount,
    showGoToSettingsPrompt: showGoToSettingsPrompt,
    goToSettingsAskAgainAfter: goToSettingsAskAgainAfter ??
        Duration(days: AppConfigBase.notificationGoToSettingsAskAgainDays),
    goToSettingsMaxAskCount:
        goToSettingsMaxAskCount ?? AppConfigBase.notificationGoToSettingsMaxAskCount,
    strings: strings,
    valuePropositionBuilder: valuePropositionBuilder,
    goToSettingsBuilder: goToSettingsBuilder,
    askAgainBuilder: askAgainBuilder,
  );
}