Idea: write programme once, run on all different platforms/vendors (eg. desktop, Android, iOS, …)

Web views (Apache Cordova)

Drawbacks:

  • only lowest common denominator subset of internal platform functionalities available
  • translation can lead to inefficiencies
  • different platforms have different user interface conventions

Web apps (React Native)

Use common language, libraries implement access to specific internal platform functionalities

Build own language and rendering engine (Flutter)

Plugins/platform channels implement access to internal platform functionalities
Custom language: Dart
Everything is a Widget (Stateless and Stateful widgets) Widget trees