They should be read-only, yes.  There might be some odd case where a user wants to re-associate an existing widget with a new AnimationController, but if that's needed at all it would require a setter function to set both the controller and the clock at the same time.  In practice we don't do this, we just update the existing clock to match new start/end times and modes.