【问题标题】:How to use Setter for a Provider Class in Another Provider Class with flutter如何在 Flutter 的另一个提供程序类中将 Setter 用于提供程序类
【发布时间】:2020-08-14 19:21:11
【问题描述】:

我有一个General Provider,它在应用启动时被调用。

fetches 通过 API 获取一些数据。通常我会把它留给那个 Provider 以备不时之需,但随着应用程序的增长,我认为最好将所有逻辑分开。

第一个 API 还引入了 user 数据。现在我在应用程序中也有一个UserProvider。我为它创建了以下内容。


class UserProvider extends ChangeNotifier {
  UserModel _user;
  UserProvider(this._user);

  set setUser(user){
    _user = user;
    notifyListeners();
  }  

  UserModel get getUser => _user;
}

这里没有错误,但问题是如何在GeneralProvider 类中调用这个setter

我知道的方法如下:

1) UserProvider(UserModel(your_data));

2) `Provider.of(context).setUser(UserModel(your_data));

第一个对我有用。第二个不在provider part

使用first way 的真正问题:


在我的main.dart 提供所有提供程序的地方,我需要这样做。


        ChangeNotifierProvider.value(
          value: UserProvider(UserModel(your_data),
        ),

我更喜欢在为base data 调用general api 时更新UserProvider。

【问题讨论】:

    标签: android ios api flutter provider


    【解决方案1】:

    方法如下:

    Provider.of<UserProvider>(context, listen: false).setUser = your_parameter_here;

    可能您已经找到了解决方案,如果没有,这就是答案。

    【讨论】:

      【解决方案2】:

      我的解决方案是 UserProvider 类中的这个设置器:

        void setUser(User s) {
          _user = s;
          notifyListeners();
        }
      

      用以下方式包装您的小部件:

       return Consumer<UserProvider>(builder: (_,provider,__){
         return WhateverYouWantToBuild(
         ...
         ),
      });
      

      然后调用它:

      provider.setUser(newValue!);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-24
        • 2021-12-18
        • 2013-08-01
        相关资源
        最近更新 更多