{"id":2395,"date":"2020-10-13T11:22:08","date_gmt":"2020-10-13T11:22:08","guid":{"rendered":"https:\/\/devexperts.com\/blog\/?p=2395"},"modified":"2022-08-11T16:26:52","modified_gmt":"2022-08-11T16:26:52","slug":"flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone","status":"publish","type":"post","link":"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/","title":{"rendered":"Flutter, Flutter Little Bat: Is Cross-Platform Development Finally for Everyone?"},"content":{"rendered":"\n<div class=\"wp-block-devexperts-custom-thumbnail\"><figure><picture><source media=\"(max-width: 639px)\" data-srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/mockup-01-600x338.png 2x, https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/mockup-01-300x169.png 1x\"\/><source media=\"(min-width: 640px) and (max-width: 767px)\" data-srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/mockup-01-1168x657.png 2x, https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/mockup-01-600x338.png 1x\"\/><source media=\"(min-width: 768px) and (max-width: 1023px)\" data-srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/mockup-01-1168x657.png 2x, https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/mockup-01-728x410.png 1x\"\/><source media=\"(min-width: 1024px) and (max-width: 1279px)\" data-srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/mockup-01-1168x657.png 1x, https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/mockup-01-690x388.png 1x\"\/><source media=\"(min-width: 1280px)\" data-srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/mockup-01-1752x986.png 2x,\n\t\t\t\thttps:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/mockup-01-1752x986.png 1.5x,\n\t\t\t\thttps:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/mockup-01-870x489.png 1x\"\/><img decoding=\"async\" class=\"singleThumbnail lazyload\" src=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/mockup-01-1024x576.png\" data-src=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/mockup-01-870x489.png\"\/><\/picture><\/figure><\/div>\n\n\n\n<p>We\u2019ve recently seen lot of discussion concerning Flutter, specifically, whether it\u2019s the new silver bullet (spoiler alert: it&#8217;s not) of mobile development, or if it\u2019s just another awful cross-platform framework that allows developers to build sub-par applications, while putting in little to no effort (second spoiler alert: you <em>will<\/em> have a bad app with minimal effort, but the framework isn\u2019t to blame). I\u2019ve decided to write a few words on Flutter, as well as cross-platform approaches overall and how they fit in with Fintech and trading apps in particular. Let\u2019s see how they stack up.&nbsp;<\/p>\n\n\n\n<p>For starters, Flutter is a mobile cross-platform development framework that in theory, allows you to write the app once and run it on multiple platforms, mainly, iOS and Android. From there, you could write a web app using the same codebase, but I\u2019ll try to stick to mobile to keep it simple for now.&nbsp;<\/p>\n\n\n\n<p>Given that the idea is pretty promising, Flutter is not the first attempt to make it work. Today, Microsoft has Xamarin, Facebook has ReactNative, even Devexperts used to have a cross-platform framework with a less fancy name, called MOBUI at one point in time. So, Google decided they needed their own technology, targeting&nbsp;the same goal, but that addressed a few of the weakest points of cross-platform development.<\/p>\n\n\n\n<p>So, let\u2019s have a brief look under the hood.&nbsp;<\/p>\n\n\n\n<p>Flutter compiles into the native binaries on both platforms. These binaries are then called from the respective application wrapper, which then provides your app with the canvas to draw on, as well as all the inputs you&#8217;d typically receive from the user or the external world. This is sort of a gamedev-style approach to the interaction with the underlying OS, aside from the framework built on top of that.<\/p>\n\n\n\n<p>The thing to mention is that Flutter uses the Dart programming language. It\u2019s not widely used in the industry, but that\u2019s no problem. Syntax-wise, Dart is absolutely familiar to anyone who knows Java, Kotlin or Swift. Of course it has some minor, convenient features; but that said, it does not prevent developers from figuring out how the code works right away.<\/p>\n\n\n\n<p>On top of that, Flutter provides developers with a rich and beautiful UI kit, including a set of ready-to-go widgets. Even though none of them have anything to do with the native controls, they are designed to look exactly like the native ones. So we have both Material(Android-like) and Cupertino(iOS-like) controls. More on that later.<\/p>\n\n\n\n<p>What does this all mean in practice? Several things:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>The UI can be super fast and responsive, given the framework\u2019s low operational overhead.<\/li><li>There is no \u201cmagic\u201d happening, unlike ReactNative or Xamarin \u2013 no virtual machine, no intermediate code generation \u2013 the code written is the code run. Which is good news both in terms of debugging and performance profiling.<\/li><li>It is pretty easy to kick-start application development using Flutter. Moreover, it\u2019s simple to sketch a great (and even native)-looking UI for both platforms.<\/li><\/ol>\n\n\n\n<p>But let\u2019s get back to Dart. Aside from the syntax, I didn&#8217;t mention one thing yet: Dart is a single-threaded language. It is designed to operate on top of the event loop, allowing you to perform asynchronous operations. For the most part, that\u2019s what developers need. This approach not only simplifies memory management, but also guards you against all the concurrency problems developers can face.&nbsp;<\/p>\n\n\n\n<p>While that all sounds good as it addresses a lot of the development pain, it&#8217;s still not a one-size-fits-all solution. The thing is, the simpler your application, the higher the chances technology like Flutter will fit your use case. Here I would totally agree with Juhani Lehtim\u00e4ki from Snapp, who gives us this awesome diagram:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"639\" src=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/cross-platform-development-android-ios-1024x639.png\" alt=\"\" class=\"wp-image-2396\" srcset=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/cross-platform-development-android-ios-1024x639.png 1024w, https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/cross-platform-development-android-ios-300x187.png 300w, https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/cross-platform-development-android-ios-768x479.png 768w, https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/cross-platform-development-android-ios-320x200.png 320w, https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/cross-platform-development-android-ios-382x238.png 382w, https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/cross-platform-development-android-ios-578x361.png 578w, https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/cross-platform-development-android-ios.png 1235w\" sizes=\"auto, (max-width: 959px) calc(100vw - 30px), 870px\" \/><figcaption>The simpler your application, the higher the chances technology like Flutter will fit your use case. Credit: Juhani Lehtim\u00e4ki, https:\/\/medium.com\/snapp-mobile\/the-fundamental-problems-with-cross-platform-frameworks-cea57ac18fef<\/figcaption><\/figure>\n\n\n\n<p>And this is not a bad thing at all. Today we are seeing a widespread demand for super simple apps. If the industry becomes capable of creating these apps cheaper and faster, more businesses will be able to afford a modern and sleek app \u2013 and more importantly, to support it over a period of time without paying for two separate apps individually.<\/p>\n\n\n\n<p>On the topic of more sophisticated mobile solutions, let&#8217;s have a look at what does not work so well to the right of the orange dashed line.<\/p>\n\n\n\n<p>The first topic would be the single-threaded asynchronous approach versus concurrency. The first one will definitely work if your app doesn\u2019t load or compute the data dynamically. It might be an app consisting of pre-composed static content, or a basic fetch-and-display application. For instance we have a list of &lt;some things&gt;, each one has a separate page with the details and actions. We load this list once, and work with it. We can change the filter and reload the list once in a while, but that does not change the picture dramatically.<\/p>\n\n\n\n<p>Now, imagine the other extreme: real-time data streaming to the app, changing the values multiple times a second. Also imagine having a mathematical model that combines both user input and the streaming data and updates the values of a number of the fields on the screen, as well as their existence. Now you live in my world!&nbsp;<\/p>\n\n\n\n<p>In order to achieve this while making the process fast and fluid, you need a number of things. First, an asynchronous data transfer protocol. You need a way to explicitly specify which logic can run on the main thread, and which might be unpredictably slow and must be moved out. Second, you need a way to orchestrate all this. In other words, you need more control. Flutter wasn\u2019t designed for this.&nbsp;<\/p>\n\n\n\n<p>Could you still do it? Oh you could. You could work with multiple Isolates. Or you could write this natively and leverage the interop, which is workable in this case. The main hesitation is whether this approach would pay off. To put it simply, this is a tool that doesn&#8217;t fit the use case. All these \u201coverly complex\u201d multithreading concepts, such as shared memory, atomic transactions, synchronization, concurrent algorithms and data structures, are here for a reason. In the real world, we have tons of cases where the developer needs them to create a working code. As the complexity of the app grows, the probability you\u2019ll need more control becomes more and more significant.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video height=\"610\" style=\"aspect-ratio: 282 \/ 610;\" width=\"282\" autoplay controls loop muted preload=\"auto\" src=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/iphone-watchlist2-1.mp4\" playsinline><\/video><figcaption>Real-time data streaming to the app, changing the values multiple times a second (a watchlist of currency pairs on iPhone)<\/figcaption><\/figure>\n\n\n\n<p>But suppose you don\u2019t have loads of real-time data. If you have an app that doesn\u2019t do any crazy real-time stuff, probably be fine living in a single-threaded asynchronous world. Are things any different? Yes and no. Yes, because we have one less issue No, because in any application development fields, you\u2019ll see the same picture: At some point on a complexity scale, a generic cross-platform solution doesn\u2019t provide you enough control to allow your program to work flawlessly.&nbsp;<\/p>\n\n\n\n<p>For example, back to the Flutter widget packs: Material and Cupertino. Why two? In order to create a beautiful app, you have to respect the platform\u2019s native UI and UX. So while you could pick and choose only one of them, this is not the best possible solution. That said, you need both &#8211; one that will look great on iOS and another for Android. This means you\u2019ll basically have to write the code at the UI level twice. But then doesn\u2019t that sound like native mobile development?<\/p>\n\n\n\n<p>Why doesn\u2019t Flutter do this automatically? In short, it needs to respect the nuances of the platforms to do so &#8211; just like the developer &#8211; and that is not a trivial task. Or ignore them and compromise the user experience. The developer could do the same thing to optimize the cost or length of the project. It\u2019s an option \u2013 one to choose sometimes, but this is a trade-off, not a silver bullet.&nbsp;<\/p>\n\n\n\n<p>By this point, I risk sounding like my dad trying to prove to the younger generation that music from my days was better. But let\u2019s take a closer look at the industry to see if I\u2019m alone here.&nbsp;<\/p>\n\n\n\n<p>As we know, Airbnb has <a href=\"https:\/\/medium.com\/airbnb-engineering\/sunsetting-react-native-1868ba28e30a\" target=\"_blank\" rel=\"noreferrer noopener\">sunsetted<\/a> ReactNative, and Udacity <a href=\"https:\/\/engineering.udacity.com\/react-native-a-retrospective-from-the-mobile-engineering-team-at-udacity-89975d6a8102\" target=\"_blank\" rel=\"noreferrer noopener\">removed <\/a>everything written in the same technology shortly after. More interestingly, Facebook, the company behind ReactNative, was rewriting the Messenger app from the ground up. Did they go the cross-platform route, given their expertise? <a href=\"https:\/\/engineering.fb.com\/data-infrastructure\/messenger\/\" target=\"_blank\" rel=\"noreferrer noopener\">No<\/a>, they decided to go native for some very valid reasons.<\/p>\n\n\n\n<p>Speaking of Flutter and Google, they have made one relatively straightforward AdMob application using this technology, while keeping everything else native. The thing is, AdMob is specifically a fetch-and-display application, for which Flutter makes perfect sense. But it doubtedly makes sense for most others.&nbsp;<\/p>\n\n\n\n<p>As a final word on Flutter, I\u2019d say it\u2019s a great tool for making simple and stylish applications very fast. A market for these kinds of apps does exist; and on that market, Flutter might be unbeatable. But would it change the mobile development landscape forever? I highly doubt it.&nbsp;<\/p>\n\n\n\n<p>What if you still like the idea of writing once instead of multiple times? The point is, you can do all that for the code that doesn&#8217;t immediately interact with the user or the operating system itself. So for example, if you have a mathematical model calculating something to show the resulting numbers to the user, you can do it. We have several ways to achieve this.<\/p>\n\n\n\n<p>First, <em>as much is possible<\/em>, move the common logic to the server-side. But in doing so comes clear limitations. There is a network between the user and the logic. Which could lead to latency and slow loading times for large data sets.<\/p>\n\n\n\n<p>Second, there are ways to reuse the logic on the client-side while keeping apps native. Each approach is not universal and has its limitations, but deserves evaluation.<\/p>\n\n\n\n<p>Since September, Kotlin Multiplatform for mobile <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2020\/08\/kotlin-multiplatform-mobile-goes-alpha\/\" target=\"_blank\" rel=\"noreferrer noopener\">goes Alpha<\/a>, which, given it is Alpha, has some limitations that don\u2019t suit us, but could work well for other cases.<\/p>\n\n\n\n<p>We are currently using <a href=\"https:\/\/developers.google.com\/j2objc\" target=\"_blank\" rel=\"noreferrer noopener\">j2Objc<\/a> to reuse Java-code compiled as an Obj-C library for iOS. Of course, Java and Obj-C don\u2019t sound fancy in the world of Swift and Kotlin, but this is a well-established solution proven to work even for very complex use cases.&nbsp;<\/p>\n\n\n\n<p>And finally, it\u2019s possible to share C++ libraries, but in our experience dealing with JNI complexities, platform specifics and lower-level programming language doesn\u2019t seem to pay off.&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We\u2019ve recently seen lot of discussion concerning Flutter, specifically, whether it\u2019s the new silver bullet (spoiler alert: it&#8217;s not) of &hellip; <\/p>\n","protected":false},"author":39,"featured_media":2398,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2020],"tags":[36,11,34],"class_list":["post-2395","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-fintech","tag-development","tag-financial-software","tag-mobile"],"acf":{"nifty_post_card_image":4531,"nifty_post_card_index_big":"","nifty_post_inner_image":4752,"nifty_post_card_banner":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Flutter, Flutter Little Bat: Is Cross-Platform Development for Everyone?<\/title>\n<meta name=\"description\" content=\"We\u2019ve recently seen lot of discussion concerning Flutter, specifically, whether it\u2019s the new silver bullet of mobile development\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Flutter, Flutter Little Bat: Is Cross-Platform Development Finally for Everyone?\" \/>\n<meta property=\"og:description\" content=\"We\u2019ve recently seen lot of discussion concerning Flutter, specifically, whether it\u2019s the new silver bullet of mobile development\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/\" \/>\n<meta property=\"og:site_name\" content=\"Devexperts Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/devexperts\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-10-13T11:22:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-08-11T16:26:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/flutter-cross-platform-mobile-development-fb-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Sergey Afanasiev\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/flutter-cross-platform-mobile-development-fb-1.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@devexperts\" \/>\n<meta name=\"twitter:site\" content=\"@devexperts\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sergey Afanasiev\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/\"},\"author\":{\"name\":\"Sergey Afanasiev\"},\"headline\":\"Flutter, Flutter Little Bat: Is Cross-Platform Development Finally for Everyone?\",\"datePublished\":\"2020-10-13T11:22:08+00:00\",\"dateModified\":\"2022-08-11T16:26:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/\"},\"wordCount\":1816,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/devexperts.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/flutter-cross-platform-mobile-development-1.png\",\"keywords\":[\"development\",\"financial software\",\"mobile\"],\"articleSection\":[\"Fintech\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/\",\"url\":\"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/\",\"name\":\"Flutter, Flutter Little Bat: Is Cross-Platform Development for Everyone?\",\"isPartOf\":{\"@id\":\"https:\/\/devexperts.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/flutter-cross-platform-mobile-development-1.png\",\"datePublished\":\"2020-10-13T11:22:08+00:00\",\"dateModified\":\"2022-08-11T16:26:52+00:00\",\"description\":\"We\u2019ve recently seen lot of discussion concerning Flutter, specifically, whether it\u2019s the new silver bullet of mobile development\",\"breadcrumb\":{\"@id\":\"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/#primaryimage\",\"url\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/flutter-cross-platform-mobile-development-1.png\",\"contentUrl\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/flutter-cross-platform-mobile-development-1.png\",\"width\":3840,\"height\":700,\"caption\":\"Flutter, flutter little bat: a mobile cross-platform development framework\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/devexperts.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Flutter, Flutter Little Bat: Is Cross-Platform Development Finally for Everyone?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/devexperts.com\/blog\/#website\",\"url\":\"https:\/\/devexperts.com\/blog\/\",\"name\":\"Devexperts Blog\",\"description\":\"We make complex finance ideas on technology, innovation and business simple\",\"publisher\":{\"@id\":\"https:\/\/devexperts.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/devexperts.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/devexperts.com\/blog\/#organization\",\"name\":\"Devexperts LLC\",\"url\":\"https:\/\/devexperts.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/devexperts.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2019\/08\/DX-logo.png\",\"contentUrl\":\"https:\/\/devexperts.com\/blog\/app\/uploads\/2019\/08\/DX-logo.png\",\"width\":167,\"height\":30,\"caption\":\"Devexperts LLC\"},\"image\":{\"@id\":\"https:\/\/devexperts.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/devexperts\/\",\"https:\/\/x.com\/devexperts\",\"https:\/\/www.linkedin.com\/company\/devexperts\",\"https:\/\/www.youtube.com\/channel\/UCF3FRmes2KrcVsTXQ1aAB5w\/featured\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Flutter, Flutter Little Bat: Is Cross-Platform Development for Everyone?","description":"We\u2019ve recently seen lot of discussion concerning Flutter, specifically, whether it\u2019s the new silver bullet of mobile development","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/","og_locale":"en_US","og_type":"article","og_title":"Flutter, Flutter Little Bat: Is Cross-Platform Development Finally for Everyone?","og_description":"We\u2019ve recently seen lot of discussion concerning Flutter, specifically, whether it\u2019s the new silver bullet of mobile development","og_url":"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/","og_site_name":"Devexperts Blog","article_publisher":"https:\/\/www.facebook.com\/devexperts\/","article_published_time":"2020-10-13T11:22:08+00:00","article_modified_time":"2022-08-11T16:26:52+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/flutter-cross-platform-mobile-development-fb-1.jpg","type":"image\/jpeg"}],"author":"Sergey Afanasiev","twitter_card":"summary_large_image","twitter_image":"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/flutter-cross-platform-mobile-development-fb-1.jpg","twitter_creator":"@devexperts","twitter_site":"@devexperts","twitter_misc":{"Written by":"Sergey Afanasiev","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/#article","isPartOf":{"@id":"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/"},"author":{"name":"Sergey Afanasiev"},"headline":"Flutter, Flutter Little Bat: Is Cross-Platform Development Finally for Everyone?","datePublished":"2020-10-13T11:22:08+00:00","dateModified":"2022-08-11T16:26:52+00:00","mainEntityOfPage":{"@id":"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/"},"wordCount":1816,"commentCount":0,"publisher":{"@id":"https:\/\/devexperts.com\/blog\/#organization"},"image":{"@id":"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/#primaryimage"},"thumbnailUrl":"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/flutter-cross-platform-mobile-development-1.png","keywords":["development","financial software","mobile"],"articleSection":["Fintech"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/","url":"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/","name":"Flutter, Flutter Little Bat: Is Cross-Platform Development for Everyone?","isPartOf":{"@id":"https:\/\/devexperts.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/#primaryimage"},"image":{"@id":"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/#primaryimage"},"thumbnailUrl":"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/flutter-cross-platform-mobile-development-1.png","datePublished":"2020-10-13T11:22:08+00:00","dateModified":"2022-08-11T16:26:52+00:00","description":"We\u2019ve recently seen lot of discussion concerning Flutter, specifically, whether it\u2019s the new silver bullet of mobile development","breadcrumb":{"@id":"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/#primaryimage","url":"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/flutter-cross-platform-mobile-development-1.png","contentUrl":"https:\/\/devexperts.com\/blog\/app\/uploads\/2020\/10\/flutter-cross-platform-mobile-development-1.png","width":3840,"height":700,"caption":"Flutter, flutter little bat: a mobile cross-platform development framework"},{"@type":"BreadcrumbList","@id":"https:\/\/devexperts.com\/blog\/flutter-flutter-little-bat-is-cross-platform-development-finally-for-everyone\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devexperts.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Flutter, Flutter Little Bat: Is Cross-Platform Development Finally for Everyone?"}]},{"@type":"WebSite","@id":"https:\/\/devexperts.com\/blog\/#website","url":"https:\/\/devexperts.com\/blog\/","name":"Devexperts Blog","description":"We make complex finance ideas on technology, innovation and business simple","publisher":{"@id":"https:\/\/devexperts.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devexperts.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/devexperts.com\/blog\/#organization","name":"Devexperts LLC","url":"https:\/\/devexperts.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/devexperts.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/devexperts.com\/blog\/app\/uploads\/2019\/08\/DX-logo.png","contentUrl":"https:\/\/devexperts.com\/blog\/app\/uploads\/2019\/08\/DX-logo.png","width":167,"height":30,"caption":"Devexperts LLC"},"image":{"@id":"https:\/\/devexperts.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/devexperts\/","https:\/\/x.com\/devexperts","https:\/\/www.linkedin.com\/company\/devexperts","https:\/\/www.youtube.com\/channel\/UCF3FRmes2KrcVsTXQ1aAB5w\/featured"]}]}},"_links":{"self":[{"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/posts\/2395","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/users\/39"}],"replies":[{"embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/comments?post=2395"}],"version-history":[{"count":29,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/posts\/2395\/revisions"}],"predecessor-version":[{"id":4794,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/posts\/2395\/revisions\/4794"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/media\/2398"}],"wp:attachment":[{"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/media?parent=2395"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/categories?post=2395"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devexperts.com\/blog\/wp-json\/wp\/v2\/tags?post=2395"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}