我有一个屏幕,在其中我使用视图模型来访问特定的会话变量(例如用户名)。可从包含各种用户名的ListView访问此屏幕。单击列表项后,会话的用户名将更新为单击的用户名。单击后,页面将导航到ExampleScreen,并在应用栏中显示用户名。
我的问题是,无论我单击哪个用户名,我的视图模型总是返回相同的数据,因为在离开屏幕后,总是重复使用同一视图模型实例。在导航到其他屏幕并返回后,如何确定视图模型已废弃?
var exampleVM = ChangeNotifierProvider<ExampleViewModel>((ref) => ExampleViewModel(ref.read));
class ExampleScreen extends HookWidget {
@override
Widget build(BuildContext context) {
var vm = useProvider(exampleVM);
return Scaffold(
appBar: AppBar(title: vm.username),
...
);
}
}
class ExampleViewModel{
final Reader read;
SessionRepository _session;
int get username => _session.username;
ExampleViewModel() {
_session = read(sessionProvider);
}
}