то есть "подписать" виджет на отдельный примитив из сложного состояния не получится?
И если я добавлю в модель Users нового юзера, то старые неизбежно перерисуются, даже несмотря на то, что их данные не менялись? Печалька какая-то.
Если юзеры отображаются с помощью ListView.builder, то он сам контролирует что нужно перерисовывать. Перерисуются только те юзеры из списка, которые в данный момент на экране. Так что можно не заморачиваться с этим.
Если все таки хочется чтобы именно каждый юзер отдельно перерисовывался, то можно в модели их хранить например как ValueNotifier<User>. И каждый элемент списка подписывать на своего юзера.
Но смысла в этом особого вроде нет.