у final особое значение - это значит, что значение переменной можно задать только 1 раз. Значение можно изменять внутри объекта (например можно менять свойства объекта)
const по аналогии с другими языками вычисляется на этапе компиляции
stateless пересоздается заново если у одно из родительских виджетов сработал setState
statefull не обновится пока ему насильно не сказать setState или один из виджетов выше по дереву не обновится.
Это написано на flutter dev(
https://flutter.dev/docs/development/ui/interactive). Опыт хорошо, но зачем тратить время, если все разжевано ?