Blindingly obvious in hindsight.
I had added the String type-hint in Navigator.pushNamed<String>() as I thought I could receive a typed value back from the call. Removing that and receiving it into a var solved the problem.
Leaving this up for anyone else who gets themselves into the same state.