Flutter is a tool that allows to build native cross-platform apps and that means for iOS and Android, with the one programming language and codebase. So let's have a closer look at this nice sentence here. Important is that we build native cross-platform apps, so we build both an iOS app and an Android app. We're not building a web app that runs in the browser, we're not building an app that gets wrapped by native apps, we build real apps, two different kinds of apps in the end for iOS and Android, which you then distribute through the different app stores, so through the Apple App Store and the Google Play store, that's what you get as a result.
Now you get there by using one programming language, so that you don't have to learn two different programming languages, one for iOS, one for Android, instead you have one programming language, Dart and also one codebase.
So you work in one project, you write your code once and you still get two different apps as a result and that's the cool thing about Flutter, you only learn one programming language, you only write your code once and you get two apps. Without Flutter, you would normally build an iOS app by writing some Swift or Objective C code and using the iOS development environment and for Android, you would be using Java with the Android framework or you would be using Kotlin and also the Android development environment and you would have to learn all these different languages and tools and you would have to write two totally different apps or work in two totally different projects and with Flutter, that's not the case, one programming language and one codebase!
The term Flutter refers to two major things. One is an SDK, a Software Development Kit, you could say a collection of tools that allows you to write one codebase with one programming language because it includes tools to then compile this code, which normally would not run on iOS and Android, into native machine code that does run on these platforms because if there would be one programming language that would work on both platforms, we wouldn't need Flutter, but there isn't one!
Now therefore, the one programming language Flutter uses doesn't work on iOS and Android, so it needs to be compiled to native machine code for iOS and native machine code for Android so that we have code that has run on these platforms and that compilation task, along with a couple of other things, that's all part of Flutter but of course, it's not just a collection of tools, it also gives you everything you need to create beautiful applications.
It gives you a framework, a widget library for that one programming language which is called Dart which you can use to build beautiful Flutter apps.
It gives you a vast collection of reusable UI building blocks, these so-called widgets, so these are things like buttons, tabs, text inputs, drop downs, you get all of that out of the box. You can style them and customize them and then you build user interfaces with these tools. In addition, you get a couple of utility functions and generally, some packages that help you build what your users see and what your users interact with and then that code which you built with the help of that framework, that is then compiled native machine code with the help of the SDK.
Now as I mentioned, Flutter uses a programming language called Dart. Dart is a programming language which is focused on building front-end user interfaces, front-end apps. It's not limited to building mobile apps, that's just what Flutter uses it for but Dart is independent of Flutter and you can also build web apps with it. So it's a programming language built to make it really simple to build front-end user interfaces.
Flutter builds up on Dart, it's a framework for Dart and Dart actually is the programming language which we're using, Flutter then just is a collection of tools, a set of features, utility functions and these widgets which are implemented using Dart, so that you don't have to reinvent the wheel there but you can write your own Dart code and use these existing widgets in your code so that you don't have to again reinvent how a button should look like and work but use the pre-built button instead and then just customize it to your requirements, that's how this works.
And in addition as mentioned, Flutter also gives you that SDK, so all these tools for compiling your code in the end.
Thanks for reading, hope you have a great day :)
Find me on GitHub here to have a look at my Flutter repositories!😊