ios 如何使用Setter在另一个提供程序类中使用Flutter

cfh9epnr  于 11个月前  发布在  iOS
关注(0)|答案(2)|浏览(74)

我有一个General Provider,在应用程序开始时调用。
它通过API fetches一些数据。通常我会把它交给那个提供商来处理,但是随着应用程序的发展,我认为最好把所有的逻辑分开。
第一个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));
    1.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

lx0bsm1f

lx0bsm1f1#

我的解决方案是UserProvider类中的setter:

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

字符串
将您的小部件 Package 为:

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


然后调用它:

provider.setUser(newValue!);

uxh89sit

uxh89sit2#

方法如下:
第一个月
也许你已经找到了解决方案,如果没有,这就是答案。

相关问题