Flutter UIs are built with an imperative, object-oriented
language (Dart, the same language used to build Flutter’s
framework). Flutter doesn’t ship with a declarative markup.

We found that UIs dynamically built with code allow for
more flexibility. For example, we have found it difficult
for a rigid markup system to express and produce
customized widgets with bespoke behaviors.

We have also found that our “code-first” better allows
for features like hot reload and dynamic environment adaptations.

It’s possible to create a custom language that is then
converted to widgets on the fly. Because build methods
are “just code”, they can do anything,
including interpreting markup and turning it into widgets.

My app has a Debug banner/ribbon in the upper right. Why am I seeing that?

By default flutter run command uses the debug build configuration.