{"id":40,"date":"2025-04-23T04:20:01","date_gmt":"2025-04-23T04:20:01","guid":{"rendered":"https:\/\/documentation.iqonic.design\/vizion-ai\/?p=40"},"modified":"2025-06-27T05:14:45","modified_gmt":"2025-06-27T05:14:45","slug":"flutter-configuration","status":"publish","type":"post","link":"https:\/\/documentation.iqonic.design\/vizion-ai\/flutter-configuration\/","title":{"rendered":"Flutter Configuration"},"content":{"rendered":"<div class=\"nolwrap\">\n<pre class=\"wp-block-preformatted\">Estimated reading: 2 minutes<\/pre>\n\n\n\n<p>Setting up Flutter for your Vizion AI Project<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Changing The App&#8217;s Name<\/strong><\/h2>\n\n\n\n<p>In the main directory, go to&nbsp;<code>lib \u2192 configs.dart<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">const APP_NAME = 'YOUR APP NAME';<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Reconfiguring The Server URL<\/strong><\/h2>\n\n\n\n<p>In the main directory, go to&nbsp;<code>lib \u2192 configs.dart<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">const DOMAIN_URL = \"ADD YOUR DOMAIN URL\";<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Changing The Default Language<a href=\"https:\/\/apps.iqonic.design\/documentation\/vizion-ai-doc\/build\/docs\/getting-started\/app\/Configuration\/flutter#changing-the-default-language\" target=\"_blank\" rel=\"noopener\">\u200b<\/a><\/strong><\/h2>\n\n\n\n<p>In the main directory, go to&nbsp;<code>lib \u2192 configs.dart<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">const DEFAULT_LANGUAGE = \"LANGUAGE CODE\"; \/\/ (e.g., \"en\", \"ar\", \"de\", \"pt\", \"es\")<\/pre>\n\n\n\n<p><strong>TIP<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Set the language code from the provided list&nbsp;<code>[\"en\", \"ar\", \"de\", \"pt\", \"es\"]<\/code>&nbsp;for supported languages in the application. For other languages, customization is required.<\/li>\n\n\n\n<li>Use only the language code, not the entire language name. You can find the language codes&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_ISO_639-1_codes\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"changing-the-app-font\">Changing The App Font<a href=\"https:\/\/apps.iqonic.design\/documentation\/vizion-ai-doc\/build\/docs\/getting-started\/app\/Configuration\/flutter#changing-the-app-font\" target=\"_blank\" rel=\"noopener\">\u200b<\/a><\/h4>\n\n\n\n<p>In the main directory, go to&nbsp;<strong>lib \u2192 app_theme.dart<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">fontFamily: GoogleFonts.FONT_NAME().fontFamily,<br>textTheme: GoogleFonts.FONT_NAMETextTheme(),<\/pre>\n\n\n\n<p>Remember to apply these steps to both the DarkTheme and LightTheme in the app_theme.dart file to ensure consistent behavior across your app&#8217;s themes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Changing Primary &amp; Secondary Color<\/strong><\/h2>\n\n\n\n<p>In the main directory, go to&nbsp;<strong>lib \u2192 utils \u2192 colors.dart<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">var primaryColor = Color(0xFF586AEA);<br>var secondaryColor = Color(0xFFD6FF79);<\/pre>\n\n\n\n<p><strong>TIP<\/strong><\/p>\n\n\n\n<p>Best practice and setting the hex value after 0xFF, you can avoid unexpected color rendering issues and ensure consistent appearance of your UI elements.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Set up AdMob<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Replace Google AdMob IDs for different types of ads in&nbsp;<strong>lib -&gt; config.dart<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">const String interstitialAdId = 'YOUR_INTERSTITIAL_AD_ID';<br>const String nativeAdId = 'YOUR_NATIVE_AD_ID';<br>const String bannerAdId = 'YOUR_BANNER_AD_ID';<br>const String openAdId = 'YOUR_OPEN_AD_ID';<br>const String rewardedAdId = 'YOUR_REWARDED_AD_ID';<br>const String rewardInterstitialAdId = 'YOUR_REWARD_INTERSTITIAL_AD_ID';<\/pre>\n\n\n\n<p>If you haven\u2019t set up AdMob yet, follow these steps:<\/p>\n\n\n\n<p>1.Refer to&nbsp;<a href=\"https:\/\/firebase.google.com\/docs\/admob\/android\/quick-start#set-up-app-in-admob\" target=\"_blank\" rel=\"noreferrer noopener\">Google AdMob<\/a>&nbsp;Document.<\/p>\n\n\n\n<p>2. Return to your Application source code.<\/p>\n\n\n\n<p>3. Open the&nbsp;<strong>lib \u2192 configs.dart<\/strong>&nbsp;file.<\/p>\n\n\n\n<p>4. To ensure proper functionality , replace the variables &#8211; Keys to replace in&nbsp;<strong>lib \u2192 configs.dart<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">   const String interstitialAdId<br>   const String nativeAdId<br>   const String bannerAdId<br>   const String openAdId<br>   const String rewardedAdId<br>   const String rewardInterstitialAdId<\/pre>\n\n\n\n<p>5. Run the application. Your ads are now live.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Change the Google AdMob App ID in AndroidManifest.xml and Info.plist<\/strong><\/h2>\n\n\n\n<p><a href=\"https:\/\/documentation.iqonic.design\/vizion-ai\/configurations-customization\/android-configuration\">Change Google AdMob App ID in AndroidManifest.xml<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/documentation.iqonic.design\/vizion-ai\/configurations-customization\/ios-configuration\">Change Google AdMob App ID in Info.plist<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Add FirebaseOptions<\/strong><\/h2>\n\n\n\n<p><strong>INFO<\/strong><\/p>\n\n\n\n<p>After completion of&nbsp;<a href=\"https:\/\/documentation.iqonic.design\/vizion-ai\/configurations-customization\/firebase-configuration\">Firebase Configuration<\/a>&nbsp;you can proceed further.<\/p>\n\n\n\n<p>In the main directory, go to&nbsp;<strong>lib \u2192 firebase_options.dart<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">final FirebaseOptions firebaseConfig = FirebaseOptions(<br>  apiKey: 'FIREBASE API KEY',<br>  appId:isIOS ? 'FIREBASE iOS APP ID':'FIREBASE iOS ANDROID APP ID',<br>  projectId: 'FIREBASE PROJECT ID',<br>  messagingSenderId: 'FIREBASE SENDER ID',<br>  storageBucket: 'FIREBASE STORAGE BUCKET',<br>  iosBundleId: 'FIREBASE iOS APP BUNDLE ID',<br>);<\/pre>\n\n\n\n<p><strong>Note<\/strong> &#8211; If you&#8217;re using Vizion AI version below 2.0.1, you&#8217;ll locate the firebaseConfig object in&nbsp;<strong>lib \u2192 configs.dart<\/strong>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Open your Firebase Console<\/li>\n<\/ul>\n\n\n\n<p>For&nbsp;<strong>apiKey<\/strong>&nbsp;go to&nbsp;<strong>Project Settings<\/strong>&nbsp;and Click on&nbsp;<strong>General<\/strong>&nbsp;Tab you\u2019ll find&nbsp;<strong>Web API Key<\/strong>&nbsp;and&nbsp;<strong>Project ID<\/strong>&nbsp;and paste it all blocks in dart file mentioned above.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"417\" src=\"https:\/\/documentation.iqonic.design\/vizion-ai\/wp-content\/uploads\/sites\/11\/2025\/04\/Flutter_Configuration1.png\" alt=\"\" class=\"wp-image-284\" \/><\/figure>\n\n\n\n<p>Scroll Down and in Your Apps section you\u2019ll find App Id in Android and iOS section. Copy respective values and paste it to&nbsp;<strong>appId<\/strong>.<br>Copy&nbsp;<strong>Bundle ID<\/strong>&nbsp;and paste it to&nbsp;<strong>iosBundleId<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"553\" src=\"https:\/\/documentation.iqonic.design\/vizion-ai\/wp-content\/uploads\/sites\/11\/2025\/04\/Flutter_Configuration2.png\" alt=\"\" class=\"wp-image-285\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"580\" src=\"https:\/\/documentation.iqonic.design\/vizion-ai\/wp-content\/uploads\/sites\/11\/2025\/04\/Flutter_Configuration3.png\" alt=\"\" class=\"wp-image-286\" \/><\/figure>\n\n\n\n<p>For&nbsp;<strong>messagingSenderId<\/strong>&nbsp;Click on&nbsp;<strong>Cloud Messaging<\/strong>&nbsp;you will see&nbsp;<strong>Sender ID<\/strong>. Copy that paste it to&nbsp;<strong>messagingSenderId<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"497\" src=\"https:\/\/documentation.iqonic.design\/vizion-ai\/wp-content\/uploads\/sites\/11\/2025\/04\/Flutter_Configuration4.png\" alt=\"\" class=\"wp-image-287\" \/><\/figure>\n\n\n\n<p>For&nbsp;<strong>storageBucket<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Navigate to&nbsp;<strong>android \u2192 app<\/strong><\/li>\n\n\n\n<li>Open&nbsp;<strong>google-service.json<\/strong><\/li>\n\n\n\n<li>Under&nbsp;<strong>&#8220;project_info&#8221;<\/strong>&nbsp;find&nbsp;<strong>&#8220;storage_bucket&#8221;<\/strong>&nbsp;and Copy value and paste it into&nbsp;<strong>storageBucket<\/strong>.Note &#8211; You can leave it empty as well.<\/li>\n<\/ul>\n\n\n\n<p><strong>Verify Default Firebase options in Firebase Initialization<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Open&nbsp;<strong>main.dart<\/strong><\/li>\n\n\n\n<li>You will find Firebase.initializeApp in void main() and firebaseMessagingBackgroundHandler() method.<\/li>\n\n\n\n<li>verify that Default Firebase Options for current platform is initialized or not.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\"> await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform).then((value) {<br>    PushNotificationService().setupFirebaseMessaging();<br>    if (kReleaseMode) FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;<br>  }).catchError(onError);<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">Future&lt;void&gt; firebaseMessagingBackgroundHandler(RemoteMessage message) async {<br>  await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);<br>  log('NOTIFICATIONDATA: ${message.data}');<br>  log('notification body--&gt;: ${message.notification}');<br>  log('notification title--&gt;: ${message.notification!.title}');<br>  log('notification body--&gt;: ${message.notification!.body}');<br>}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Update Notification Icon Name<\/strong><\/h2>\n\n\n\n<p>After creating notification icon you can perform this change.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Open&nbsp;<strong>lib \u2192 utils \u2192 push_notification_service.dart<\/strong>.<\/li>\n\n\n\n<li>In showNotification() method find lines below<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">const AndroidInitializationSettings initializationSettingsAndroid = AndroidInitializationSettings('@drawable\/YOUR NOTIFICATION ICON NAME');<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">var androidPlatformChannelSpecifics = AndroidNotificationDetails(<br>    'notification',<br>    'Notification',<br>    importance: Importance.high,<br>    visibility: NotificationVisibility.public,<br>    autoCancel: true,<br>    \/\/color: primaryColor,<br>    playSound: true,<br>    priority: Priority.high,<br>    icon: '@drawable\/YOUR NOTIFICATION ICON NAME',<br>  );<\/pre>\n\n\n\n<p><\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Estimated reading: 2 minutes Setting up Flutter for your Vizion AI Project Changing The App&#8217;s Name In the main directory, go to&nbsp;lib \u2192 configs.dart const APP_NAME = &#8216;YOUR APP NAME&#8217;; Reconfiguring The Server URL In the main directory, go to&nbsp;lib \u2192 configs.dart const DOMAIN_URL = &#8220;ADD YOUR DOMAIN URL&#8221;; Changing The Default Language\u200b In the [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":0,"parent":38,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-40","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"featured_image_src":null,"author_info":{"display_name":"laraveladminiq","author_link":"https:\/\/documentation.iqonic.design\/vizion-ai\/author\/laraveladminiq\/"},"children":[],"_links":{"self":[{"href":"https:\/\/documentation.iqonic.design\/vizion-ai\/wp-json\/wp\/v2\/posts\/40","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/documentation.iqonic.design\/vizion-ai\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/documentation.iqonic.design\/vizion-ai\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/documentation.iqonic.design\/vizion-ai\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/documentation.iqonic.design\/vizion-ai\/wp-json\/wp\/v2\/comments?post=40"}],"version-history":[{"count":6,"href":"https:\/\/documentation.iqonic.design\/vizion-ai\/wp-json\/wp\/v2\/posts\/40\/revisions"}],"predecessor-version":[{"id":513,"href":"https:\/\/documentation.iqonic.design\/vizion-ai\/wp-json\/wp\/v2\/posts\/40\/revisions\/513"}],"up":[{"embeddable":true,"href":"https:\/\/documentation.iqonic.design\/vizion-ai\/wp-json\/wp\/v2\/posts\/38"}],"wp:attachment":[{"href":"https:\/\/documentation.iqonic.design\/vizion-ai\/wp-json\/wp\/v2\/media?parent=40"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/documentation.iqonic.design\/vizion-ai\/wp-json\/wp\/v2\/categories?post=40"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/documentation.iqonic.design\/vizion-ai\/wp-json\/wp\/v2\/tags?post=40"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}