2

我是river_pod的新手,如果我说该文档仅适用于超级高级工程师,我不会撒谎

无论如何,我想sign in使用这个包实现一个功能

它背后的逻辑很简单:-我从用户那里获取电子邮件和密码,然后将loggedIn状态从is 更改falsetrue

这是我的Provider


    final userAuthProvider = StateProvider<Map<String, bool>>(
        (_) => {'signedIn': false, 'loaded': true, 'signInWasDissmised': false});

这是我如何使用它并更改值


    void signIn(BuildContext context, String username, String userPassword) {
        // Check if the username/email and password exist and are correct...etc;
        final String usernameOrEmail = username;
        final String password = userPassword;
    
        // ...logic
    
    context.read(userAuthProvider).state['signedIn'] = true;

我正在使用 context.read 因为我onPressedRaisedButton

现在,这有什么问题是,在将值更改为之后,true我无法flutter重新处理build所有内容并使用新的variable

我怎样才能实现这样的事情?我什至做得对吗?

4

1 回答 1

1

context.read(userAuthProvider).state['signedIn'] = true;

你不能那样做。相反,克隆对象:

final auth = context.read(userAuthProvider);

auth.state = {
  ...auth.state,
  'signedIn' = true,
};
于 2020-09-26T12:39:59.470 回答