将多个参数传递给Sink Dart

时间:2018-09-21 08:14:42

标签: dart flutter

我正在用Dart研究Flutter中的BLoC模式。

现在,我有一个列表,显示具有属性“年龄”的用户。

通过列表上的2个按钮,我应该能够增加或减少每个用户的年龄。

所以我创建了许多流和接收器,如:

/** ADD AGE*/
  BehaviorSubject<User> _userAddAgeController = new BehaviorSubject<User>();
  Sink<User> get inAddAgeUser => _userAddAgeController.sink;

/** REMOVE AGE */
  BehaviorSubject<User> _userDecreaseAgeController = new BehaviorSubject<User>();
  Sink<User> get inDecreaseAgeUser => _userDecreaseAgeController.sink;

然后在BlocClass的构造函数中

UserBloc(this.db) {
    _userAddAgeController.listen(_addAge);
    _userDecreaseAgeController.listen(_decreaseAge);
}

然后是两个功能:

void _addAge(User u){ }
void _decreaseAge(User u){ .. }

所以我的问题是:

是否可以集中传递例如2个参数的控制器以了解是否应该添加或删除?

1 个答案:

答案 0 :(得分:1)

将多个参数传递给接收器的唯一方法是创建一个特定的对象。

class UserAgeEvent {
   final User user;
   final int increaseAge;

   UserAgeEvent(this.user, this.increaseAge);
}

ageUserSink.add(UserAgeEvent(user, 1));
ageUserSink.add(UserAgeEvent(user, -1));