First Time Configuration
App Config

Customize App

You can customize a lot on the app from a single file lib/src/utils/config_utils.dart

General Config:

Configure App Title, DeepLink URL Prefix and PlayStore/AppStore App Links here

  // title of the app
  final String appTitle = 'Logo Quiz';
 
  // deep link prefix (ex: deeplinks://logoquiz)
  final String deepLinksPrefix = "logoquiz";
 
  /// play store and app store links (for sharing the app)
  final String playStoreLink = "PLAYSTORE_APP_LINK";
  final String appStoreLink = "APPSTORE_APP_LINK";

Ads Config:

Configure Ads parameters here

  • Choose the type of ad you want to use in the app here (applovin, admob)
  /// Ad type (admob or applovin)
  final AdType adType = AdType.applovin;
  • By Default, Interstitial Ads (FullScreen Ads) are shown every 4 times you enter a logo game page (puzzle page), you can custimze this value. Note that for some Ad Networks, they might ban you if you show too many ads in a short period of time so be cautious when changing this.
  /// show interstitial ad every [showInterstitialAdEvery] time (ex if 4 it means that the interstitial ad will be show every 4 times the user enters the game page)
  final int showInterstitialAdEvery = 4;
  • How many times do we retry to reload the intersitial ad before it fails. If for some reason the intersitial ad is not loaded, we retry reloading it 3 times then stop trying to reload. You can change this value.
  /// how many times we retry to load intersitital ad before it fails
  final int maxInterstitialRetryAttempts = 3;
  • How many times do we retry to reload the rewarded ad before it fails. If for some reason the rewarded ad is not loaded, we retry reloading it 3 times then stop trying to reload. You can change this value.
  /// how many times we retry to load rewarded ad before it fails
  final int maxRewardedRetryAttempts = 3;

Coins Config:

Configure Coins Parameters here

  • By default, every new player starts with 50 coins, you can change this value
  /// the number of coins the user starts with (first time playing)
  final int startingCoins = 50;
  • By default, when a player guesses a logo correctly, they are rewarded 25 coins, you can change this value
  /// the number of coins to reward after a correct guess
  final int correctLogoAddedCoins = 25;
  • When a player completes a rewarded video ad, they are rewarded 100 coins, you can change this value
  /// number of coins to reward after completing a rewarded ad
  final int rewardedAdCoins = 100;

Settings Config:

Configure Settings Parameters here

  • You can choose to activate the Sound Effect in the App or disable it (will also show/hide it from the UI)
  /// whether to activate the Sound Effect option setting (disabling this will also hide it from the UI)
  final bool activateSFXSetting = true;
  • You can choose to activate the Vibration in the App or disable it (will also show/hide it from the UI)
  /// whether to activate the vibration option setting (disabling this will also hide it from the UI)
  final bool activateVibrationSetting = true;
  • You can choose to activate the Share App in the App or disable it (will also show/hide it from the Home Page)
  /// show or hide share app from the home page
  final bool activateShareApp = true;
  • You can choose to activate the Rate App in the App or disable it (will also show/hide it from the Home Page)
  /// show or hide rate app from the home page
  final bool activateRateApp = true;
  • You can choose to activate the Fortune Wheel in the App or disable it (will also show/hide it from the UI)
  /// activate daily fortune wheel
  final bool activateFortuneWheel = true;
  • You can customize the Fortune Wheel and the different values the player can gain and the color for each one
  /// fortune wheel items (customize colors and coins)
  final List<WheelModel> wheelItems = [
    WheelModel(color: Colors.red, coins: 100),
    WheelModel(color: Colors.blue, coins: 40),
    WheelModel(color: Colors.green, coins: 10),
    WheelModel(color: Colors.yellow, coins: 500),
    WheelModel(color: Colors.orange, coins: 30),
    WheelModel(color: Colors.purple, coins: 50),
    WheelModel(color: Colors.pink, coins: 20),
    WheelModel(color: Colors.orangeAccent, coins: 1000),
  ];
  • You can customize the Hints used in the game (removing one item will hide it from the UI)
  /// show/hide hints from the game and customize cost of each hint
  final List<HintModel> hints = [
    HintModel(key: 'reveal_letter', cost: 20),
    HintModel(key: 'remove_letter', cost: 10),
    HintModel(key: 'solve_quiz', cost: 100),
  ];
  • You can customize the App Languages from here
  /// list of app langugages (add or remove language configuration)
  final List<AppLangModel> appLangs = [
    AppLangModel(
      langCode: "en",
      countryCode: "us",
      langTitle: "English",
      locale: const Locale("en"),
      assetPath: 'assets/images/flags_icons/us.svg',
    ),
    AppLangModel(
      langCode: "fr",
      countryCode: "fr",
      langTitle: "Français",
      locale: const Locale("fr"),
      assetPath: 'assets/images/flags_icons/fr.svg',
    ),
    AppLangModel(
      langCode: "es",
      countryCode: "es",
      langTitle: "Español",
      locale: const Locale("es"),
      assetPath: 'assets/images/flags_icons/es.svg',
    ),
    AppLangModel(
      langCode: "zh",
      countryCode: "cn",
      langTitle: "中国人",
      locale: const Locale("zh"),
      assetPath: 'assets/images/flags_icons/cn.svg',
    ),
    AppLangModel(
      langCode: "ar",
      countryCode: "sa",
      langTitle: "عربي",
      locale: const Locale("ar"),
      assetPath: 'assets/images/flags_icons/sa.svg',
    ),
    AppLangModel(
      langCode: "de",
      countryCode: "de",
      langTitle: "Deutsch",
      locale: const Locale("de"),
      assetPath: 'assets/images/flags_icons/de.svg',
    ),
    AppLangModel(
      langCode: "pt",
      countryCode: "pt",
      langTitle: "Português",
      locale: const Locale("pt"),
      assetPath: 'assets/images/flags_icons/pt.svg',
    ),
    AppLangModel(
      langCode: "ru",
      countryCode: "ru",
      langTitle: "Русский",
      locale: const Locale("ru"),
      assetPath: 'assets/images/flags_icons/ru.svg',
    ),
    AppLangModel(
      langCode: "ja",
      countryCode: "jp",
      langTitle: "日本",
      locale: const Locale("ja"),
      assetPath: 'assets/images/flags_icons/jp.svg',
    ),
    AppLangModel(
      langCode: "hi",
      countryCode: "in",
      langTitle: "हिंदी",
      locale: const Locale("hi"),
      assetPath: 'assets/images/flags_icons/in.svg',
    ),
  ];
  • You can customize the In-App-Purchase Products here (hiding them will remove them from the UI and won't load them)
  /// In-App-Purchase products (App Store/Play Store) customise coins to obtain after each purchase
  final List<InAppPurchaseModel> products = [
    InAppPurchaseModel(
      id: 'removed_ads',
      title: 'Remove Ads',
      coins: 0,
      assetPath: AssetUtils.removeAdsAsset,
      type: 'non_consumable',
      isRemoveAds: true,
    ),
    InAppPurchaseModel(
      id: 'coins_500',
      title: '500 Coins',
      coins: 500,
      assetPath: AssetUtils.coin500Asset,
      type: 'consumable',
    ),
    InAppPurchaseModel(
      id: 'coins_1000',
      title: '1000 Coins',
      coins: 1000,
      assetPath: AssetUtils.coin1000Asset,
      type: 'consumable',
    ),
    InAppPurchaseModel(
      id: 'coins_10000',
      title: '10000 Coins',
      coins: 10000,
      assetPath: AssetUtils.coin10000Asset,
      type: 'consumable',
    ),
    InAppPurchaseModel(
      id: 'coins_20000',
      title: '20000 Coins',
      coins: 20000,
      assetPath: AssetUtils.coin20000Asset,
      type: 'consumable',
    ),
  ];
  • We precached images at the start of the app when it is launched so the app runs smoother, if you have a .JPG or .PNG asset, you can add it to this list to precache it
  /// this list represents the .PNG and .JPG assets that will be [precached] for better performace
  /// if you add a .PNG or .JPG asset, add it here to be precached as well
  final List<String> precacheImageAssets = [
    AssetUtils.logoAsset,
    AssetUtils.removeAdsAsset,
    AssetUtils.coin500Asset,
    AssetUtils.coin1000Asset,
    AssetUtils.coin10000Asset,
    AssetUtils.coin20000Asset,
    'assets/images/logo_data/classic/level1/KFC.png',
    'assets/images/logo_data/old/level1/Instagram.png',
    'assets/images/logo_data/videogame/level1/Minecraft.png',
    'assets/images/logo_data/computer/level1/Microsoft.png',
    'assets/images/logo_data/car/level1/Porsche.png',
    'assets/images/logo_data/anime/level1/JoJo.png',
    'assets/images/logo_data/college_sports/level1/Michigan.png',
    'assets/images/logo_data/airline/level1/ThaiAirways.png',
    'assets/images/logo_data/american_candy/level1/Snickers.png',
    'assets/images/logo_data/clothing/level1/Fila.png',
    'assets/images/logo_data/fastfood/level1/McDonalds.png',
    'assets/images/logo_data/softdrink/level1/RedBull.png',
    'assets/images/logo_data/movie/level1/Ghostbusters.png',
    'assets/images/logo_data/tv_show/level2/BreakingBad.png',
    'assets/images/logo_data/national_soccer_team/level1/England.png',
    'assets/images/logo_data/nba/level1/ChicagoBulls.png',
    'assets/images/logo_data/nfl/level2/ClevelandBrowns.png',
    'assets/images/logo_data/nhl/level1/PittsburghPenguins.png',
    'assets/images/logo_data/mlb/level1/SanFranciscoGiants.png',
  ];
  • We precached images at the start of the app when it is launched so the app runs smoother, if you have a .SVG asset, you can add it to this list to precache it
  /// this list represents the .SVG assets that will be [precached] for better performace
  /// if you add a .SVG asset, add it here to be precached as well
  late List<String> precacheSVGAssets = [
    AssetUtils.backgroundAsset,
    AssetUtils.blueCapAsset,
    AssetUtils.backIcon,
    AssetUtils.lockAsset,
    AssetUtils.helpIcon,
    AssetUtils.deleteCharIcon,
    AssetUtils.shareIcon,
    AssetUtils.resetIcon,
    AssetUtils.starsAsset,
    ...appLangs.map((l) => l.assetPath).toList(),
  ];