Skip to content

Commit

Permalink
Use SourceFlowAdapter instead of DynamicFlowAdapter in example
Browse files Browse the repository at this point in the history
  • Loading branch information
zjuwjf committed Nov 8, 2019
1 parent a134cde commit 2292357
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 36 deletions.
36 changes: 1 addition & 35 deletions example/lib/todo_list_page/list_adapter/adapter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,46 +4,12 @@ import '../state.dart';
import '../todo_component/component.dart';
import 'reducer.dart';

class ToDoListAdapter extends DynamicFlowAdapter<PageState> {
class ToDoListAdapter extends SourceFlowAdapter<PageState> {
ToDoListAdapter()
: super(
pool: <String, Component<Object>>{
'toDo': ToDoComponent(),
},
connector: _ToDoListConnector(),
reducer: buildReducer(),
);
}

class _ToDoListConnector extends ConnOp<PageState, List<ItemBean>>

/// [https://github.com/alibaba/fish-redux/issues/482] #482
with
ReselectMixin<PageState, List<ItemBean>> {
@override
void set(PageState state, List<ItemBean> toDos) {
if (toDos?.isNotEmpty == true) {
state.toDos = List<ToDoState>.from(
toDos.map<ToDoState>((ItemBean bean) => bean.data).toList());
} else {
state.toDos = <ToDoState>[];
}
}

@override
List<ItemBean> computed(PageState state) {
if (state.toDos?.isNotEmpty == true) {
return state.toDos
.map<ItemBean>((ToDoState data) => ItemBean('toDo', data))
.toList(growable: true);
} else {
return <ItemBean>[];
}
}

/// watched factors
@override
List<dynamic> factors(PageState state) {
return <dynamic>[state.toDos];
}
}
15 changes: 14 additions & 1 deletion example/lib/todo_list_page/state.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ import '../global_store/state.dart';
import 'report_component/component.dart';
import 'todo_component/component.dart';

class PageState implements GlobalBaseState, Cloneable<PageState> {
class PageState extends MutableSource
implements GlobalBaseState, Cloneable<PageState> {
List<ToDoState> toDos;

@override
Expand All @@ -17,6 +18,18 @@ class PageState implements GlobalBaseState, Cloneable<PageState> {
..toDos = toDos
..themeColor = themeColor;
}

@override
Object getData(int index) => toDos[index];

@override
String getType(int index) => 'toDo';

@override
int get itemCount => toDos?.length ?? 0;

@override
void setData(int index, Object data) => toDos[index] = data;
}

PageState initState(Map<String, dynamic> args) {
Expand Down

0 comments on commit 2292357

Please sign in to comment.