Examined your code and somewhat mystified by some of your choices.
Not sure why you'd create a toast view model and then require a separate, distinct state variable.
For that matter, I'm not sure what benefit is entailed by requiring the view using the view modifier to host the view model and state parameter. The existence of both of those things should be private details, internal to the view modifier. (Yes, view modifiers can have their own StateObjects.)
Would also mention that toast animations are usually just that, typically sliding in from the top or bottom of the screen, not just plopping into view.
There's more, especially in regard to tap to dismiss, but that's probably secondary to creating an actual, usable toast feature.
Using Notification Center is an interesting choice, allowing it to be used from anywhere... but is also a bit clunky.
That isHidden function is a bad choice and will cause you no end of grief due to loss of state. See:
https://www.objc.io/blog/2021/08/24/conditional-view-modifiers/
Not related to toasts, but passing the state object to the child detail view as an observed object when data is loaded is a bit lazy. Usually better to use a success type with associated data and pass the user data to the child view. That makes previewing the child view with mock data a lot easier.