{"id":1304,"date":"2021-10-20T02:19:45","date_gmt":"2021-10-20T02:19:45","guid":{"rendered":"https:\/\/fluentreports.com\/blog\/?p=1304"},"modified":"2021-11-04T21:04:27","modified_gmt":"2021-11-04T21:04:27","slug":"multi-platform-development-flutter","status":"publish","type":"post","link":"https:\/\/fluentreports.com\/blog\/?p=1304","title":{"rendered":"Multi-platform Development (Flutter)"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/fluentreports.com\/blog\/wp-content\/uploads\/2021\/11\/image-6.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"90\" src=\"https:\/\/fluentreports.com\/blog\/wp-content\/uploads\/2021\/11\/image-6.png\" alt=\"\" class=\"wp-image-1398\"\/><\/a><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"about-this-series\">About this Series<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If you haven't read the intro, I discuss a lot of the core information about this, I have included the Raw Stats in each of the blog posts so you can easily reference it while reading about each of the products.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/fluentreports.com\/blog\/?p=1288\">Introduction<\/a><\/li><li><a href=\"https:\/\/fluentreports.com\/blog\/?p=1293\">Tauri<\/a> <\/li><li><a href=\"https:\/\/fluentreports.com\/blog\/?p=1290\">Electron and NW.JS<\/a> <\/li><li><a href=\"https:\/\/fluentreports.com\/blog\/?p=1302\">NodeGui<\/a><\/li><li><a href=\"https:\/\/fluentreports.com\/blog\/?p=1304\">Flutter<\/a> (this one)<\/li><li><a href=\"https:\/\/fluentreports.com\/blog\/?p=1345\">Yue<\/a><\/li><li><a href=\"https:\/\/fluentreports.com\/blog\/?p=1350\">Node-GTK<\/a> <\/li><li><a href=\"https:\/\/fluentreports.com\/blog\/?p=1306\">Wrapping it up<\/a><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"raw-stats\">Raw Stats<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>Platform<\/td><td>AppImage File Size<\/td><td class=\"has-text-align-right\" data-align=\"right\">Hello Memory AppImage<\/td><td>Hello Memory Unbundled<\/td><td>Graphic AppImage<\/td><td>Graphic Unbundled<\/td><\/tr><tr><td>Electron<\/td><td>97 Megs<\/td><td class=\"has-text-align-right\" data-align=\"right\">203<\/td><td>129<\/td><td>401<\/td><td>316<\/td><\/tr><tr><td>NW.JS<\/td><td>110 Megs<\/td><td class=\"has-text-align-right\" data-align=\"right\">274<\/td><td>163<\/td><td>515<\/td><td>389<\/td><\/tr><tr><td>Tauri<\/td><td>71 Megs<\/td><td class=\"has-text-align-right\" data-align=\"right\">192<\/td><td>52<\/td><td>364<\/td><td>301<\/td><\/tr><tr><td>NodeGui<\/td><td>47 Megs<\/td><td class=\"has-text-align-right\" data-align=\"right\">437<\/td><td>53<\/td><td>760<\/td><td>467<\/td><\/tr><tr><td>Yue<\/td><td>19 Megs<\/td><td class=\"has-text-align-right\" data-align=\"right\">59<\/td><td>43<\/td><td>302<\/td><td>292<\/td><\/tr><tr><td>Node-GTK<\/td><td>100 Megs<\/td><td class=\"has-text-align-right\" data-align=\"right\">85<\/td><td>70<\/td><td>90<\/td><td>89<\/td><\/tr><tr><td>Flutter<\/td><td>70 Megs<\/td><td class=\"has-text-align-right\" data-align=\"right\">124<\/td><td>53<\/td><td>337<\/td><td>321<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"flutter\">Flutter<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/flutter.dev\" target=\"_blank\" rel=\"noreferrer noopener\">Flutter<\/a> is the odd man out, I'm not going to go much into this one as it isn't JavaScript or HTML.   But it is a complete compiled cross platform app development system and it provided a interesting base-line to compare the rest of the projects too.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I was extremely surprised by the memory usage on Flutter.  I really expected it to decimate the rest of the pack.   However, even its hello world is identical to NodeGui and Tauri slightly beats it.   When you actually use a chunk of graphics, even Electron had a better memory usage.    This really goes to show you that just because the app is compiled and controls everything doesn't mean it will do much or any better than a pure WebView based application.   <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">With <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/openkraken\/kraken\" target=\"_blank\">Kracken<\/a>, in the near future it could be a viable method to deliver HTML\/JS based apps to multiple systems.  However, with it eating memory on complex apps as much as a WebView does it begs to wonder if it is worth it.     It will be very interesting to see how well Kracken does in the future and do some actual benchmarks using it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"summary\">Summary<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I've never been a fan of Flutter for mobile.  I've developed several apps for clients using it.  And I know both its strengths and weaknesses on the mobile side.   I personally would not develop any mobile applications of my own using Flutter do to several underlying design flaws.    For the web, I feel like Google just had to try and reinvent \"Flash\".   So welcome to our brand new and totally awesome Flash v0.20...<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, with that said, I can't fault any other developers for there usage of Flutter.   It has some of the BEST developer tools I've ever seen or ever used.  Now with Linux, Mac and Windows support it does beg me to take a serious look at using it for actual desktop apps. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>About this Series If you haven't read the intro, I discuss a lot of the core information about this, I have included the Raw Stats in each of the blog posts so you can easily reference it while reading about each of the products. Introduction Tauri Electron and NW.JS NodeGui Flutter (this one) Yue Node-GTK&hellip; <a class=\"more-link\" href=\"https:\/\/fluentreports.com\/blog\/?p=1304\">Continue reading <span class=\"screen-reader-text\">Multi-platform Development (Flutter)<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1384,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","footnotes":""},"categories":[154,3,4,7],"tags":[156,159,155],"class_list":["post-1304","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cross-platform","category-javascript","category-node-js","category-performance","tag-cross-platform","tag-flutter","tag-multi-platform","entry"],"_links":{"self":[{"href":"https:\/\/fluentreports.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1304","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fluentreports.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fluentreports.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fluentreports.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fluentreports.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1304"}],"version-history":[{"count":9,"href":"https:\/\/fluentreports.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1304\/revisions"}],"predecessor-version":[{"id":1400,"href":"https:\/\/fluentreports.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1304\/revisions\/1400"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fluentreports.com\/blog\/index.php?rest_route=\/wp\/v2\/media\/1384"}],"wp:attachment":[{"href":"https:\/\/fluentreports.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1304"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fluentreports.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1304"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fluentreports.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}