controller property
If the controller is not given as an argument in the given state, The function is called internally to create the controller and return a new instance of the touch ripple controller.
This is because the existence of the controller is essential for managing the touch ripple state.
Implementation
late TouchRippleController controller = widget.controller ?? widget.createTouchRippleController();