007-1400x800

Why Flutter picked Dart

Reasons that Explain Why Flutter uses Dart!

One of the most important reasons why programmers love Flutter and prefer it over other frameworks is because of the programming language Dart. During the inception of Flutter, programmers analyzed and evaluated many languages and ended up choosing Dart due to some astonishing reasons and benefits it offers to the programming. Here are some of the reasons why Flutter uses Dart.

What is Dart?

Dart is a client-optimized language for fast apps on any platform. Dart is free and open source  

Dart is a programming language designed for client development, such as for the web and mobile apps. It is developed by Google and can also be used to build server and desktop applications. Dart is an object-oriented, class-based, garbage-collected language with C-style syntax. The underlying graphics framework and the Dart virtual machine are implemented in C/C++.

 

Build fast apps on any platform with Dart

Develop apps with a programming language specialized for the needs of user-interface creation. Dart provides the language and runtimes that power Flutter apps, but Dart also supports many core developers’ tasks like formatting, analyzing, and testing code.

Why did Flutter choose to use Dart?

During the initial development phase, the Flutter team looked at a lot of languages and runtimes, and ultimately adopted Dart for the framework and widgets. Flutter used four primary dimensions for evaluation, and considered the needs of framework authors, developers, and end users. Flutter found many languages met some requirements, but Dart scored highly on all of Flutter evaluation dimensions and met all Flutter requirements and criteria.

Dart runtimes and compilers support the combination of two critical features for Flutter: a JIT-based fast development cycle that allows for shape changing and stateful hot reloads in a language with types, plus an Ahead-of-Time compiler that emits efficient ARM code for fast startup and predictable performance of production deployments.

In addition, Flutter have the opportunity to work closely with the Dart community, which is actively investing resources in improving Dart for use in Flutter. For example, when Flutter adopted Dart, the language didn’t have an ahead-of-time toolchain for producing native binaries, which is instrumental in achieving predictable, high performance, but now the language does because the Dart team built it for Flutter. Similarly, the Dart VM has previously been optimized for throughput, but the Flutter team is now optimizing the VM for latency, which is more important for Flutter’s workload.

Dart scores highly for Flutter on the following primary criteria:

Developer productivity

One of Flutter’s main value propositions is that it saves engineering resources by letting developers create apps for both iOS and Android with the same codebase. Using a highly productive language accelerates developers further and makes Flutter more attractive. This was very important to both Flutter framework team as well as Flutter developers. The majority of Flutter is built in the same language Flutter give to Flutter users, so Flutter need to stay productive at 100k’s lines of code, without sacrificing approachability or readability of the framework and widgets for Flutter developers.

Object-orientation

For Flutter, Flutter want a language that’s suited to Flutter’s problem domain: creating visual user experiences. The industry has multiple decades of experience building user interface frameworks in object-oriented languages. While Flutter could use a non-object-oriented language, this would mean reinventing the wheel to solve several hard problems. Plus, the vast majority of developers have experience with object-oriented development, making it easier to learn how to develop with Flutter.

Predictable, high performance

With Flutter, Flutter want to empower developers to create fast, fluid user experiences. In order to achieve that, Flutter need to be able to run a significant amount of end-developer code during every animation frame. That means Flutter need a language that both delivers high performance and predictable performance, without periodic pauses that would cause dropped frames.

Fast allocation

The Flutter framework uses a functional-style flow that depends heavily on the underlying memory allocator efficiently handling small, short-lived allocations. This style was developed in languages with this property and doesn’t work efficiently in languages that lack this facility.

 

If anyone are looking for reasons why Flutter uses Dart, this information is for them. There are some excellent benefits Dart offers to the developers to be used as a compiler and executor for developing superior, comprehensive, robust and fast apps.

 

002-1400x800

Flutter, single code base multiple platforms

Current applications that you have come across on your mobile device or laptop require multiple teams to maintain the code base. There is an iOS team, which wrote and now supports the whole application in the Swift programming language for Apple devices. There is the Android team, that coded the same application in a different language and supports it separately from the iOS team. There is the Web team that again wrote the same application in yet another set of languages and has to support it in that set of languages.

If you have an idea for an application, before you even realize your dream to reach everyone on the globe, you will need a business plan and budget to support at least three teams. If your budget doesn’t cater for three teams, you need to compromise, will my application only be available on Android devices or Apple devices or Web only.

Introducing Flutter

Flutter has been developed by Google and released in 2017. As an open-source code base, it is supported by 1000s of developers worldwide. Improvements are contributed to the framework daily.

Flutter is a portable framework, with a single code base and minimal adjustments it can be deployed to Android Devices, iOS devices, as a Web Application, Desktop application (Windows, macOS, Linux based Ubuntu)!

Flutter has no competition in this space. It is fast and scalable, and no other framework supports this many distinct environments.

It allows your team to focus more of your energy and resources developing your business vision. Think about the solution that your business provides and what the value add of your solution is. Ensure that all your customers have the same experience, no matter their device of choice and without your business blowing out of proportion the technology budget.

Be technology agnostic, never miss out on a potential customer again, just because your business does not support a specific technology platform.

Keep you team size agile and business focused, without the need for so many experts in so many different technologies

Shift the way your technology team thinks about developing your application. If your customers do not usually use mobile applications, that is no longer a problem, you can reach them via the Web using the same code base.

006-1400x800

Flutter Web is stable, yeah 😊

Flutter web support hits the stable milestone

Publish to web and mobile from the same codebase

A summary of Mariam Hasnany product manager @Google post found on https://medium.com/@mariam.hasnany

Flutter vision for Flutter is to be a portable UI framework for building beautiful app experiences on any platform. Today, as part of Flutter 2, they announced that Flutter’s web support has hit the stable milestone. And this stable release of Flutter for Web, will seriously impact the industry, the possibilities, and peculiarities of app development.

The first Flutter release in 2017 supported iOS and Android and has been used to bring over 150,000 apps to mobile app stores. Since the first release of Flutter, this framework gained leading positions among cross-platform mobile development technologies. The updated Flutter 2 is suitable for all platforms. Developers use one codebase to adjust apps to any operating system – from Android, iOS, and Windows to macOS or Linux Flutter is even suitable for smart TV and home appliances.

Now, adding web support means that those same apps can reach an even broader audience, as well as opening new ways to build interactive experiences on the web.

In this initial release of web support, Flutter focused on three app scenarios:

  • Progressive web apps (PWAs) that combine the web’s reach with the capabilities of a desktop app.
  • Single page apps (SPAs) that load once and transmit data to and from internet services.
  • Expanding existing Flutter mobile apps to the web, enabling shared code for both experiences.

Which Features in Flutter 2 are interesting?  The first one would be Flutter’s web support. Since Flutter beta release of web support a year ago, Flutter worked with a customers who have now shipped their Flutter web apps to production.

Over this period, they made major architectural improvements and added features that extend and optimize Flutter for the web, focusing on four areas: performance, web-specific features, desktop form factors, and plugins.

Flutter web support’s stable release features

The biggest area of improvement since early releases is performance.

To be able to handle render intensive graphics efficiently, Flutter experimented with CanvasKit, which enables rendering Skia paint commands in the browser using WebAssembly and WebGL. Flutter discovered that CanvasKit can deliver superior performance, fidelity, and correctness.

Each renderer offers advantages in different scenarios, so Flutter is supporting both rendering modes:

  • HTML renderer: Uses a combination of HTML elements, CSS, Canvas elements, and SVG elements. This renderer has a smaller download size.
  • CanvasKit renderer: This renderer is fully consistent with Flutter mobile and desktop, has faster performance with higher widget density, but adds about 2MB in download size.

A Flutter app running in the browser should feel like a web app. The web has many strengths, especially its global reach. One of the many reasons to bring existing Flutter app to the web is to reach users outside of app stores. To do that, support for custom URL strategies was added.

Another integral part of any app is text rendering.

Now, Flutter can do detailed measurements efficiently on the web, enabling things like painting highlight boxes accurately on selected text.

Flutter 2 is particularly suitable for implementing Progressive Web Apps, or PWAs. PWAs are a good fit for bridging the gap between mobile and web apps in a safe and trusted manner.

And to support all users, Flutter’s web semantic features are expanded to support accessibility for Windows, macOS, and ChromeOS. 

Finally, web support was added to some of the most-used plugins, making it possible to bring your existing Flutter apps to the web. Support for the following plugins was added:

  • image_picker
  • google_maps
  • firebase_analytics
  • firebase_storage
  • connectivity
  • cloud_firestore
  • cloud_functions
  • cross_file

A few years ago, it wouldn’t have been possible to deliver Flutter on the web with an acceptable level of quality and performance. However, the introduction of new web technologies and continued advances in the platform allowed us to harness much more of the potential of the underlying device.

With support for the web, Flutter encompasses every device on the internet with a consistent experience across all modern browsers and devices.

With the portability of Dart, the power of the web platform, and the flexibility of the Flutter framework, all  can now build apps for iOS, Android, and the browser from the same codebase.

It will be interesting to see what can be built with Flutter’s new web support!

005-1400x800

Apps cost money, but how much?

There are many ways to get to a working application that supports and helps grow your business. Two common way are as follows:

Go-Abroad:

Some businesses try to save upfront costs by engaging companies abroad in lower cost countries, such as Malaysia, Ukraine and Poland, to name a few. It is easy to find companies there, which offer similar quality app development services as Australian companies. However, there are pitfalls to consider:

In order to work from Australia with a development company abroad, you may need at least one if not more staff with specialized knowledge in:

  • Translating business requirements into technical requirements
  • Transferring knowledge of local user behaviors to technical staff abroad
  • Project management skills in handling both budget and timeline constraints with an unfamiliar team abroad
  • Willingness to work across time zones and often exceedingly early or late hours of the day (forget 9am-5pm)

So, what are often considered initial cost savings when working with a team abroad, can quickly blow out due to intangible costs that are not often considered in your initial budget.

Go-Local:

A quality application build in Australia is expected to cost more than an application build abroad. But there are several considerations to be taken into account before deciding:

  • Local businesses are much better adapted to the ‘way things work’ in Australia
  • It is easier for locals to understand business requirements and translate them into technical requirements, because we live and work in a similar culture
  •  Both parties are working in the same time zone
  • It is much easier to meet face to face and explain business concepts and requirements, then trying to do the same remotely, via screens and ppts. This way boiler-plate documentation can be kept to a minimum, saving both effort and money in the process

But what should my app budget be?

Before we address that question, we should dig a little deeper!

  • Are you a Start-up, looking to translate a business idea into an application that will help you drive your business?
  • Are you an existing business, looking to digitize some or all parts of a well-established business process?
  • Are you looking to integrate with other applications and support some more complex business processes?

Each of the above may require an adapted approach and more targeted budget spend.

In general, you should consider the following

  1. How many platforms do I need to support?

Many development studios will tell you that for each platform that you need to support, your budget will increase substantially, as often the team developing the Android version is separate from the team developing the iOS version and again separate from the team developing your web-application presence. This is not necessarily true. With Flutter (a Google Framework) one team can now develop a single code base that is deployed to Android, iOS, Web + Desktop (Windows, macOS). Some minor adaptation may be required, but no longer three separate teams. One code base, multiple platforms is the way to go. This achieves multiple goals.

  • Your total application code base is smaller
  • Your team size required to maintain this code base is smaller
  • Maintenance is substantially reduced as the technology footprint is smaller
  • How many workflows do I need to support?

Each workflow may require multiple screens. Thing about the Login page. You need to provide user options to sign-in, sign-up, reset password or skip the sign-up process altogether. That is one workflow, but often multiple screens.

Another workflow could be onboarding customers or providing any number of your business services. The more complex the workflow the more careful forethought is required.

Each workflow may require a cost consideration from between AU$5,000 – AU$10,000+ or more.

  • Application design, from app mockup to app prototype

Does your budget support a full-scale design process, which includes an application prototype build using design tools such as Figma or Zeplin, which can then be translated by developers into an application? Or does your budget require flexibility to go from mock up to a basic app, without all the bells and whistles?

Each approach may attract a substantially different cost, with a starter budget as low as $AU 5,000 on the basic end to $AU25,000 on the other end.

  • Standalone Application versus Integration

Simple business application may be able to work in standalone fashion and require no integration with other platforms. For example, consider a simple app, that reminds your customers, when their next appointment is. This application may only need a simple calendar function. Other apps may require you to integrate to other systems, such a Google Maps-API, to dynamically show the location of where your customer needs to go.

Each integration brings with it, its own complexities. The more integration, the more budget should be put aside for both integration and the resulting testing effort. Integrations are hard to estimate and need to be considered on their own merit.

  • Other Considerations

Depending on the technology used and at which stage your business is, further backend work may be required. If you are a Start-up, the backend may be easier to maintain, as you are essentially starting with a blank canvas. Established businesses may have existing backend databases and other applications that need to co-exist with the new application, this will increase the development coast and need to be considered on their own merit.

It is important to pick the right team for your app development efforts. Ensure that your budget can support the most critical business features first. This will keep a tight lid on both, your expenses and on the timeline to first app version.

App development is an iterative process. If you need a feature light app, that allows you to rapidly grow a customer base, from which you gain ‘real’ user feedback and then refine and expand your application feature set based on ‘real’ user feedback, such an application can be developed from as low as $AU30,000 – $AU50,000.

More complex applications will require a stronger budget, as outlined above.

No matter, what your budget is, come and talk to us, we can help.

001-1400x800

Rapid Prototyping, why we do it

It is hard these days to meet anyone, who at some stage has not dreamt about starting a company or coming up with a cool app. As the mind shuffles through all the moving bits needed to make the dream a reality, it all feels so very daunting. There is always some skillset missing, slowing us down, discouraging us to take a leap of faith.

No single idea for an application must be fully formed before you start working on it and make it reality, introducing Rapid Prototyping.

Rapid Prototyping

Imagine you have been working on a concept for three months, you may have even mocked up some drawings and used a web tool to draw up some screens. You have thought about the business and even have a business and marketing plan in your head. But there are so many ideas floating around that it’s hard to decide where to start.

Rapid Prototyping is all about dissecting your vision into smaller pieces of work that can be executed with more control and in rapid succession.

Cost Efficiencies

There are major benefits to the rapid prototyping process:

  1. Timing, timing, timing! In a short amount of time (weeks, not months) your vision can be translated into an application. This allows you to truly play with the application on a real device and get a sense if the idea works in the way you envisioned. If it can, great, lets move to the next step. If it can’t you can pivot and adjust before you have spent a fortune
  2. Refine your business concepts
  3. Test out multiple concepts before you deep dive into a full business solution
  4. You do not have to solve every business issue that you can already foresee, focus on the main vision of and the reason you wanted to try yourself with an app in the first place
  5. You can show a real prototype application to real users and get real user feedback in a short amount of time.
  6. Now that you spent only weeks, not months on a prototype and you have real user feedback, you have a much clearer idea, what your application should really focus on. The next proto-typing session will be much more targeted, focused and you have a likely a much better idea than anyone else, what your application should really be able to do.
  7. Focused prototyping allows you to scale right. You realize quickly where your priorities are, which parts of your business vision you should scale now and which parts need more work.

 

Flutter – the enabling framework

Flutter is a Google Framework developed in 2017. One of the key benefits of Flutter is that developers need to write only a single code base and deploy to any platform, such as iOS, Android, Web and others. This makes Flutter especially well-suited to rapid prototyping.

Rapid prototyping in Flutter enables you to spend more time realizing your business visions and less time concerning yourself with the underlying technology.

.