Skip to content

Commit

Permalink
[Modify]modify app store state
Browse files Browse the repository at this point in the history
  • Loading branch information
coldfox committed May 24, 2019
1 parent 82af468 commit c33ffae
Show file tree
Hide file tree
Showing 9 changed files with 39 additions and 11 deletions.
5 changes: 3 additions & 2 deletions example/lib/app.dart
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
import 'package:flutter/material.dart';

import 'package:fish_redux/fish_redux.dart';
import 'package:sample/global_store/global_base_state.dart';
import 'package:sample/global_store/state.dart';
import 'global_store/global_store.dart';
import 'todo_edit_page/page.dart';
import 'todo_list_page/page.dart';

//create global page helper
Page<T, dynamic> createGlobalPage<T extends Cloneable<T>>(
Page<T, dynamic> createGlobalPage<T extends GlobalBaseState<T> >(
Page<T, dynamic> page) {
return page
..connectExtraStore(GlobalStore.store, (T pagestate, GlobalState appState) {
return pagestate.clone();
return pagestate.lessClone(appState);
});
}

Expand Down
7 changes: 7 additions & 0 deletions example/lib/global_store/global_base_state.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import 'package:fish_redux/fish_redux.dart';
import 'package:sample/global_store/state.dart';

/// Definition of Cloneable
mixin GlobalBaseState<T extends Cloneable<T>> implements Cloneable<T> {
T lessClone(GlobalState state);
}
2 changes: 1 addition & 1 deletion example/lib/global_store/global_store.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ class GlobalStore{

static Store<GlobalState> get store{
if(null == _globalStore){
_globalStore = createStore<GlobalState>(initState(null), buildReducer());
_globalStore = createStore<GlobalState>(initGlobalState(null), buildReducer());
}
return _globalStore;
}
Expand Down
2 changes: 1 addition & 1 deletion example/lib/global_store/state.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ class GlobalState implements Cloneable<GlobalState> {
}
}

GlobalState initState(Map<String, dynamic> args) {
GlobalState initGlobalState(Map<String, dynamic> args) {
return GlobalState();
}
11 changes: 10 additions & 1 deletion example/lib/todo_edit_page/state.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import 'package:fish_redux/fish_redux.dart';
import 'package:flutter/material.dart';
import 'package:sample/global_store/global_base_state.dart';
import 'package:sample/global_store/state.dart';
import '../todo_list_page/todo_component/component.dart';

class TodoEditState implements Cloneable<TodoEditState> {
class TodoEditState with GlobalBaseState<TodoEditState> {
ToDoState toDo;

TextEditingController nameEditController;
Expand All @@ -11,6 +13,8 @@ class TodoEditState implements Cloneable<TodoEditState> {
FocusNode focusNodeName;
FocusNode focusNodeDesc;

Color themeColor;

int themeIdx;
List<Color> themeColorSlots;

Expand All @@ -25,6 +29,11 @@ class TodoEditState implements Cloneable<TodoEditState> {
..themeIdx = themeIdx
..themeColorSlots = themeColorSlots;
}
@override
TodoEditState lessClone(GlobalState state)
{
return (state.themeColor == themeColor) ? this : clone()..themeColor = state.themeColor;
}
}

TodoEditState initState(ToDoState arg) {
Expand Down
3 changes: 1 addition & 2 deletions example/lib/todo_edit_page/view.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import 'package:fish_redux/fish_redux.dart';
import 'package:flutter/material.dart';
import 'package:sample/global_store/global_store.dart';

import 'action.dart';
import 'state.dart';
Expand All @@ -9,7 +8,7 @@ Widget buildView(
TodoEditState state, Dispatch dispatch, ViewService viewService) {
return Scaffold(
appBar: AppBar(
backgroundColor:GlobalStore.state.themeColor,
backgroundColor:state.themeColor,
title: const Text('Todo'),
),
body: Container(
Expand Down
4 changes: 3 additions & 1 deletion example/lib/todo_list_page/page.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import 'package:fish_redux/fish_redux.dart';
import 'package:sample/global_store/global_store.dart';
import 'package:sample/global_store/state.dart';

import 'effect.dart';
import 'list_adapter/adapter.dart';
Expand All @@ -24,4 +26,4 @@ class ToDoListPage extends Page<PageState, Map<String, dynamic>> {
logMiddleware(tag: 'ToDoListPage'),
],
);
}
}
13 changes: 12 additions & 1 deletion example/lib/todo_list_page/state.dart
Original file line number Diff line number Diff line change
@@ -1,14 +1,25 @@
import 'dart:ui';

import 'package:fish_redux/fish_redux.dart';
import 'package:sample/global_store/global_base_state.dart';
import 'package:sample/global_store/state.dart';
import 'report_component/component.dart';
import 'todo_component/component.dart';

class PageState implements Cloneable<PageState> {
class PageState with GlobalBaseState<PageState>{
List<ToDoState> toDos;
Color themeColor;

@override
PageState clone() {
return PageState()..toDos = toDos;
}

@override
PageState lessClone(GlobalState state)
{
return (state.themeColor == themeColor) ? this : clone()..themeColor = state.themeColor;
}
}

PageState initState(Map<String, dynamic> args) {
Expand Down
3 changes: 1 addition & 2 deletions example/lib/todo_list_page/view.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import 'package:fish_redux/fish_redux.dart';
import 'package:flutter/material.dart';
import 'package:sample/global_store/global_store.dart';

import 'action.dart';
import 'state.dart';
Expand All @@ -9,7 +8,7 @@ Widget buildView(PageState state, Dispatch dispatch, ViewService viewService) {
final ListAdapter adapter = viewService.buildAdapter();
return Scaffold(
appBar: AppBar(
backgroundColor:GlobalStore.state.themeColor,
backgroundColor:state.themeColor,
title: const Text('ToDoList'),
),
body: Container(
Expand Down

0 comments on commit c33ffae

Please sign in to comment.