Migrate from provider to Riverpod in Flutter (provider 6.1.5 to Riverpod 3.x)
A step-by-step migration from the provider package to Riverpod 3.x in a real Flutter app: ChangeNotifierProvider to Notifier, MultiProvider to ProviderScope, context.watch to ref.watch, ProxyProvider to ref.watch composition, plus the equality and lifecycle gotchas that bite. Tested on Flutter 3.27.1, Dart 3.11, provider 6.1.5, flutter_riverpod 3.3.1.