在 Flutter Redux Epic 中间件中,如何在流变量更改后调度操作?



在 Flutter Redux Epic 中间件中,如何在流变量更改后调度操作?

EpicMiddleware的一个简单示例:

final allEpics = combineEpics<AppState>([hourglassesStream]);
Firestore firestore = Firestore.instance;

Stream<dynamic> hourglassesStream(
Stream<dynamic> actions, EpicStore<AppState> store) {
return Observable(actions)
.ofType(TypeToken<ConnectToDataSourceAction>())
.switchMap((ConnectToDataSourceAction requestAction) {
getHourglasses(action.userId).listen((hourglass) {
LoadHourglassesHistoryAction(
hourglass.map(Hourglass.fromEntity).toList());
});
});
}
Observable<List<HourglassEntity>> getHourglasses(String userId) {
return Observable(firestore
.collection('users')
.document(userId)
.collection('hourglassLogs')
.snapshots()
.map((snapshot) {
return snapshot.documents.map((doc) {
return HourglassEntity(
doc['completedTime'],
doc['projectName'],
doc['userId'],
);
}).toList();
}));
}

在沙漏变量从可观察更改后,我尝试了一些不同的方法来调度这个LoadHourglassesHistoryAction,但没有调度。在可观察更改之后,可能的调度是否为操作?

使用的软件包:
redux_epics: ^0.10.0 & rxdart: ^0.18.0

您必须返回可观察/流,以调度操作

Stream<dynamic> hourglassesStream(
Stream<dynamic> actions, EpicStore<AppState> store) {
return Observable(actions)
.ofType(TypeToken<ConnectToDataSourceAction>())
.switchMap((ConnectToDataSourceAction requestAction) {
return getHourglasses(action.id).map((hourglass) =>
LoadHourglassesHistoryAction(
hourglass.map(Hourglass.fromEntity).toList())
);
});
}

最新更新