Comments (3)
Update:
I solved this problem in this way:
Stream<dynamic> setEventItemsEffect(
Stream<dynamic> actions, EpicStore<AppState> store) {
return actions
.whereType<SetEventItemAction>()
.asyncMap((action) => handleEventItems(action.task)
.then<dynamic>((res) => UpdateTaskAction(task: action.task)
.catchError((_) => SetEventItemFailAction(task: action.task))
);
}
Is there a better way? @brianegan
from dart_redux_epics.
Hey there -- Futures can only return one type of Object. In your original example, Dart is inferring that you want to create a Future<UpdateTaskAction>
, but if an error occurs you're trying to return a different type: SetEventItemFailAction
. The future cannot do that -- it can only return one type!
Therefore, you have two options:
- Make each of these action classes implement a common parent interface
- Use
Object
ordynamic
as a default parent interface -- which is what Redux does, and what you've done!
Therefore, the way you've solved it is completely appropriate, but hope this explanation helps you understand why :)
from dart_redux_epics.
Hey there -- Futures can only return one type of Object. In your original example, Dart is inferring that you want to create a
Future<UpdateTaskAction>
, but if an error occurs you're trying to return a different type:SetEventItemFailAction
. The future cannot do that -- it can only return one type!Therefore, you have two options:
- Make each of these action classes implement a common parent interface
- Use
Object
ordynamic
as a default parent interface -- which is what Redux does, and what you've done!Therefore, the way you've solved it is completely appropriate, but hope this explanation helps you understand why :)
Thank you very much for your explanation.
from dart_redux_epics.
Related Issues (20)
- Combining epics and normal middleware HOT 2
- Performance issue of Future.delayed hack HOT 6
- Error handling in async* HOT 2
- Add onChange to the EpicStore HOT 1
- Can't connect redux store HOT 4
- How to dispatch multiple actions from an Epic HOT 2
- How to create an epic that does not dispatch an Action HOT 2
- Not compatible with latest rxdart HOT 4
- takeUntil action make stream unusable the second time HOT 2
- Stream, not action, is being sent to reducers HOT 4
- Unhandled Exception: type 'LoadAccountErrorAction' is not a subtype of type 'FutureOr<LoadAccountCompleteAction>' HOT 2
- Epics break testing when using timers HOT 3
- Can not be used with rxdart ^0.23.1 HOT 1
- Doesn't work with rxdart v0.24.0 HOT 1
- null safety HOT 1
- rxdart 0.26
- Multiple streams with replace and cancel
- Bump rxdart version
- Combineepics not working HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dart_redux_epics.