It's always towards the state management, it would be best to use either Bloc/Cubit or Riverpod for that matter, instead of ChangeNotifier provider and here's why:
The riverpod is simpler, but a bit confusing at first, but as long you use only one class to manage states and methods business and calculation behind the UI, it's best suited.
ChangeNotifier is a beginner level learning state management tool, you only use this for one single class to manage the state properties and the methods you required to make your UI clean.
Stateful state management tool is a very old way of managing the state through the UI and make your code very long to read and very slow.
If I was in your situation, I would start learning more about Bloc or Riverpod for the features you wanted to implement.
IMPORTANT: Always use state management tools for making calculations, manipulating strings, controllers, the click of a button to do something and etc. While the UI is only representing to the user and just getting and sending some data towards the state management tool. It's like have a contractor for your UI to work with and provide necessary data to present it to the user.