Hello! Very good article, a lot better thank the official one. There's a little "bug" though.
You should not instantiate a GlobalKey<NavigatorState>() in the delegate's getter because every time the getter is called a new key is created, forcing the rebuild of the hole navigator (resetting the state and nullifying the transition animations between pages).
A simple solution would be to instantiate a key once in the delegate and then having the getter return it.
Or even better, doing this went quite well for me:
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
which overrides the getter in a different but effective way!