Flutter is a mobile app SDK (software development kit) created by Google for building universal cross-platform apps in the form of Android or iOS mobile applications that can also run as web apps on desktop browsers.
A framework written in the programming languages Dart and Kotlin with C bindings to allow access to native platform APIs such as accessing files from external storage or sending an SMS message on Android devices; it leverages Google’s experience developing tools like Admob Ads as well as their research into material design to provide a comprehensive set of tools for designing user interfaces that have high performance across a variety of form factors.
This article will serve as a guide for terminology used frequently in the Google Flutter Framework, and to explain some basic concepts about the framework. The terminologies used here are all from its documentation which can be found on their site, but you can also learn more by reading through their codelabs located at this site, and the official documentation can be found at dart.dev’s guide to Flutter .
Flutter Framework Terminologies
Widget – The smallest unit of a user interface written in Dart (or Kotlin), which is equivalent to an Activity or a Fragment in Android; they consist of widgets that are StatefulWidget and StatelessWidget.
Scaffold – Scaffolds are visual components that provide a default structure for your app, and have a variety of hooks for customizing their appearance. On iOS they serve as the “App” screen providing several screens to capture user actions throughout your app, and on Android there is currently only one Scaffold which contains an AppBar but it can be customized with a TabBar or BottomNavigation.
Widget build() – This function is where you add functionality that should be executed when the widget gets constructed, such as adding listeners to functions invoked when the widget is tapped on. It also allows you to configure any properties that must be configured before Widget construction completes. If you want to perform initialization logic after the widget has been constructed then do this in initialization blocks used with the widget: build() .
MaterialApp – MaterialApp’s is similar to Android’s “Application” which contains the main widget using a Scaffold, and it creates an instance where you can then provide information about the app.
Theme – A Theme is used to change the appearance of an application. This includes all aspects of color, material design components (which are available by default), fonts and icons. Themes are mostly changed through a style property on widgets rather than globally.
BuildContext – Each widget has its own BuildContext, which becomes the parent of the widget returned by the StatelessWidget.build or State.build function. This context provides access to the Scaffold, MaterialApp, as well as other settings such as Theme and Icon colors.
StatefulWidget – A widget which requires state management as it’s primary purpose. These must be wrapped by a StatelessWidget so that they can be enabled/disabled while retaining their respective data between sessions since they are automatically destroyed when the StatefulWidget gets destroyed.
StatelessWidget – A Widget which is managed by the framework because it does not require state management as its primary purpose, and thus does not need to be wrapped by a StatefulWidget in order for its data to be preserved between sessions.
Package – A package or a library is 3rd-party code which can be imported into the main app. All of the packages are hosted on pub.dev.
Sound null safety – With null safety, your runtime null-dereference errors turn into edit-time analysis errors. If the type system determines that something isn’t null, then that thing can never be null.