You might be able to achieve this with my extension Collapsible Posts. You can create a custom collapse reason "NSFW", then the posts will only show with an additional click.
https://discuss.flarum.org/d/29483-collapsible-posts
If you wanted a new setting in the user area to always expand posts that were collapsed with a specific reason this shouldn't be too difficult to add.
I'm not sure what you mean with the adult category. If you split your forum in a NSFW area and a general audience area, can't you just delete or move the inappropriate posts? If you want to make the NSFW category invisible by default you could use one of the extensions that lets users join groups at will and protect that tag with group permissions.