I suspect that brushes are just images which are composited (repeatedly) onto another image (the "layer" your painting on).
If that's true, you could just make repeated drawImage calls:
on a PictureRecorder, out of which you occasionally pull an Image:
And then you can composite the various produced Images together to produce your final image.
But that's just me wildly guessing. I've never actually written an app like that. But an approach similar to the above is what I'd try first. I suspect someone has asked similar questions on stack overflow (for other languages/libraries) or there are example open source painting apps you could study and recreate similar techniques using Flutter.
Hope that helps.