Flutter is not the main deal here, the real thing is Skia.
skia is a 2d rendering engine which allows the user to run apps in high performance, this way instead of using html(chrome web engine) or using the native look and feel(nativescript) skia allows us to draw on each pixel of the screen, which allows us to write games in flutter.
Google real intentions as they reviled in flutter Live 2018 are to create a coherent UI between all platforms:
- desktop
- web (hummingbird)
- mobile (flutter)
all of those frameworks use skia for UI and the respective framework for interacting with the OS (browser, desktop, mobile), because skia is a rendering engine and we control every pixel we can assure that a widget will look the same on all type of skia frameworks.
On the other hand nativescript use a node engine which they load on the platform, and each time we try to use a component we call the system engine to place a component on the screen with the native look and feel, this allows us to use features straight from the virtual machine which runs java/swift, this is why in nativescript you can use android.[ANDROID_JAVA_CLASS]
or ios.[SWIFT_CLASS]
.
nativescript main invention is around using native classes from inside nodejs engine which they are loading on runtime in-order to execute the specific platform code.
When you are transforming nativescript mobile code to a PWA there is no need for this node engine because the browser has it's own engine this way we can remove unnecessary code from the PWA.
NOTE: nativescript is not an angular framework for mobile development its a nodejs framework for mobile development and Angular/vuejs are just frameworks which runs on top of nativescript core logic.
Thats why if you want you can even write a react plugin for nativescript.