<https://dart.dev/guides/language/effective-dart/design#avoid-public-late-final-fields-without-initializers>

> 
> AVOID public late final fields without initializers.
> 
> 
> Unlike other final fields, a late final field without an initializer
> does define a setter. If that field is public, then the setter is
> public. This is rarely what you want. Fields are usually marked late
> so that they can be initialized internally at some point in the
> instance’s lifetime, often inside the constructor body.
> 
> 
> Unless you do want users to call the setter, it’s better to pick one
> of the following solutions:
> 
> 
> Don’t use late. Use late, but initialize the late field at its
> declaration. Use late, but make the late field private and define a
> public getter for it.
> 
> 
> 

The above explanation is abstract and I have no concrete image of what kind of risk this rule envisions.

I would be grateful if you could give me a hint as to how to think.