Each time you call
getAgeProperty()
you creates a new property, which I think it makes the property you added to the state container and the property you use in the getShape() is different... but I'm not sure about this (There's already a property in CropsBlock, you should probably use it instead of create your own one).
Also the reason I recommended you anonymous class is because I thought you don't want to create a class just for custom shapes, but apparently I misread your question : (