Skip to content

Instantly share code, notes, and snippets.

View juliuscanute's full-sized avatar
💭
I may be slow to respond.

juliuscanute

💭
I may be slow to respond.
View GitHub Profile
@juliuscanute
juliuscanute / add_emotion_detail.dart
Last active December 14, 2019 21:25
Move from screen [3] to [1]
class _ViewModel {
final Store<EmotionAppState> store;
const _ViewModel({this.store});
static _ViewModel fromStore(Store<EmotionAppState> store) {
return _ViewModel(store: store);
}
void saveEmotion({String emotionDescription}) {
//...
store.dispatch(
SaveEmotion(
@juliuscanute
juliuscanute / saved_emotions_list.dart
Last active December 14, 2019 21:31
Move from screen [1] to [4]
class SavedEmotionsListItem extends StatelessWidget {
@override
Widget build(BuildContext context) {
return InkWell(
onTap: () {
//...
store.dispatch(ViewEmotion(index: index));
//...
},
}
@juliuscanute
juliuscanute / actions.dart
Created December 14, 2019 06:02
Pass data actions
class NavigateToCreateEmotion {
final String emoji;
final String emotion;
const NavigateToCreateEmotion({this.emoji, this.emotion});
}
class SaveEmotion {
final String emotion;
final String emotionDescription;
@juliuscanute
juliuscanute / middleware.dart
Created December 14, 2019 21:37
Perform navigate to create new emotion
List<Middleware<EmotionAppState>> createLoginMiddleware(
[DataProvider provider]) {
final navigateToCreateNewEmotion = _navigateToCreateNewEmotion(provider);
return [
TypedMiddleware<EmotionAppState, NavigateToCreateEmotion>(
navigateToCreateNewEmotion),
];
}
Middleware<EmotionAppState> _navigateToCreateNewEmotion(DataProvider provider) {
@juliuscanute
juliuscanute / app_reducer.dart
Created December 14, 2019 21:43
Create a new state for navigate action
final emotionAppReducer = combineReducers<EmotionAppState>([
TypedReducer<EmotionAppState, NavigateToCreateEmotion>(
_handleNavigateToCreateNewEmotion)
]);
EmotionAppState _handleNavigateToCreateNewEmotion(
EmotionAppState previousState, NavigateToCreateEmotion action) {
EmotionAppState state;
state = previousState.copy(
newState: EmotionAppState(emoji: action.emoji, emotion: action.emotion));
@juliuscanute
juliuscanute / middleware.dart
Created December 14, 2019 21:49
Perform the save action without state changes
List<Middleware<EmotionAppState>> createLoginMiddleware(
[DataProvider provider]) {
final saveEmotion = _saveEmotion(provider);
return [
TypedMiddleware<EmotionAppState, SaveEmotion>(saveEmotion),
];
}
Middleware<EmotionAppState> _saveEmotion(DataProvider provider) {
return (Store<EmotionAppState> store, action, NextDispatcher next) async {
@juliuscanute
juliuscanute / middleware.dart
Created December 14, 2019 21:53
View Emotion Action
List<Middleware<EmotionAppState>> createLoginMiddleware(
[DataProvider provider]) {
final viewEmotion = _viewEmotions(provider);
return [
TypedMiddleware<EmotionAppState, ViewEmotion>(viewEmotion)
];
}
Middleware<EmotionAppState> _viewEmotions(DataProvider provider) {
@juliuscanute
juliuscanute / app_reducer.dart
Created December 14, 2019 21:57
Create new state for viewing emotion detail
final emotionAppReducer = combineReducers<EmotionAppState>([
TypedReducer<EmotionAppState, ViewEmotion>(_handleViewEmotion),
]);
EmotionAppState _handleViewEmotion(
EmotionAppState previousState, ViewEmotion action) {
EmotionAppState state;
state = previousState.copy(newState: EmotionAppState(index: action.index));
return state;
}
@juliuscanute
juliuscanute / home_page.dart
Created December 14, 2019 22:05
Load all emotions
class _MyHomePageState extends State<MyHomePage> {
@override
void didChangeDependencies() {
//...
store.dispatch(LoadEmotions());
//...
}
}
@juliuscanute
juliuscanute / middleware.dart
Created December 14, 2019 22:10
Perform the action to load emotions
List<Middleware<EmotionAppState>> createLoginMiddleware(
[DataProvider provider]) {
final loadEmotions = _loadEmotions(provider);
return [
TypedMiddleware<EmotionAppState, LoadEmotions>(loadEmotions)
];
}
Middleware<EmotionAppState> _loadEmotions(DataProvider provider) {