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