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(),
];