离开屏幕后重置提供商

时间:2020-11-02 15:58:43

标签: flutter dart riverpod

我有一个屏幕,在其中我使用视图模型来访问特定的会话变量(例如用户名)。可从包含各种用户名的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);
  }
}

0 个答案:

没有答案