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 = 'Movie Emojis';
// deep link prefix (ex: deeplinks://movieemojis)
final String deepLinksPrefix = "movieemojis";
/// 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 an emoji 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 an emoji correctly, they are rewarded 25 coins, you can change this value
/// the number of coins to reward after a correct guess
final int correctEmojiAddedCoins = 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,
];
- 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(),
];