The sticky header behavior is working as expected. Try putting the header inside the items function and try again.
items
items(...) { Column { CategoryHeader(...) ItemRow(...) } }