A name field accepts everything by default: digits, a 500 character paste, double spaces. Filter these while the user types, instead of showing errors after submit:
maxLength: 50 stops long pastes. The backend has a length limit anyway, so stop it in the field.
deny removes digits as they are typed. (Don't do allowing only [a-zA-Z]. That blocks letters like ş, ə, é, the apostrophe in O'Brien, the hyphen in double surnames)
Don't block spaces, some names have one, like "Ayşe Gül". But block the leading space, allow only one space at a time, and trim() on save.
textCapitalization: .words turns on the shift key before each word. The user can still turn it off and type "de Jong". So don't capitalize with a formatter or on save, that would break "de Jong".
keyboardType: .name and autofillHints give the right keyboard and one-tap autofill. For the surname field use AutofillHints.familyName.
autocorrect: false and enableSuggestions: false stop the keyboard from changing a typed name into a dictionary word.