From https://github.com/flutter/flutter/issues/19269#issuecomment-404667287
Ya, the main difference is in how it links to the Element tree (in
that functions don't get references to Elements themselves and won't
get triggered to rebuild themselves via the Element tree).
Some other examples:
- If your subtree depends on an InheritedWidget, a StatelessWidget will
get surgically be marked to rebuild itself. If you used a function,
the widget that gave the function its BuildContext will get rebuilt.
- A function itself won't get called to rebuild during hot reload. Someone
else will have to bring it along. If you just passed a function into
runApp at the root of your application, nothing will be rebuilt during
hot reload.
For the full discussion see https://github.com/flutter/flutter/issues/19269