Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Flutter Redux Entity State inspired from Angular Entity Statehttps://ngrx.io/guide/entity

License

NotificationsYou must be signed in to change notification settings

devslane/entity_state

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Entity State to manage records in your redux state.

Installation

Add this to your project's pubspec.yaml

dependencies:  entity_state: ^1.2.5

Usage

In your redux state

abstract class ReminderState    with EntityState<Reminder, int, ReminderState, ReminderStateBuilder>    implements Built<ReminderState, ReminderStateBuilder> {  // This is mandatory to add  BuiltList<int> get ids;  // This is mandatory to add  BuiltMap<int, Reminder> get entities;  ReminderState._();  factory ReminderState([updates(ReminderStateBuilder b)]) = _$ReminderState;  static Serializer<ReminderState> get serializer => _$reminderStateSerializer;    // This will tell the entity state what is the unique identifier of the model.  @override    int getId(Reminder data) {      return data.id;    }}

In your reducer

To Add One

AppNotificationState listNotificationComplete(    AppNotificationState appNotificationState,    ListNotificationComplete action) {  return appNotificationState        // action.notification is `Notification`      .addOne(action.notification)      .rebuild((b) => b..isLoading = false);}

To Add All (replaces any data that was previously present)

AppNotificationState listNotificationComplete(    AppNotificationState appNotificationState,    ListNotificationComplete action) {  return appNotificationState        // action.notifications is `List<Notification>`      .addAll(action.notifications)      .rebuild((b) => b..isLoading = false);}

To Add Many (appends to previous data)

AppNotificationState listNotificationComplete(    AppNotificationState appNotificationState,    ListNotificationComplete action) {  return appNotificationState        // action.notifications is `List<Notification>`      .addMany(action.notifications)      .rebuild((b) => b..isLoading = false);}

To Update One

AppNotificationState listNotificationComplete(    AppNotificationState appNotificationState,    ListNotificationComplete action) {  return appNotificationState        // action.notification is `Notification`      .updateOne(action.notification)      .rebuild((b) => b..isLoading = false);}

To Update Many

AppNotificationState listNotificationComplete(    AppNotificationState appNotificationState,    ListNotificationComplete action) {  return appNotificationState        // action.notifications is `List<Notification>`      .updateMany(action.notifications)      .rebuild((b) => b..isLoading = false);}

To Remove One

AppNotificationState listNotificationComplete(    AppNotificationState appNotificationState,    ListNotificationComplete action) {  return appNotificationState        // action.notification is `int`      .removeOne(action.notificationId)      .rebuild((b) => b..isLoading = false);}

To Remove Many

AppNotificationState listNotificationComplete(    AppNotificationState appNotificationState,    ListNotificationComplete action) {  return appNotificationState        // action.notifications is `List<Notification>`      .removeMany(action.notifications)      .rebuild((b) => b..isLoading = false);}

To Remove All

AppNotificationState listNotificationComplete(    AppNotificationState appNotificationState,    ListNotificationComplete action) {  return appNotificationState        // action.notifications is `List<Notification>`      .removeAll()      .rebuild((b) => b..isLoading = false);}

How to get the data

static _ViewModel fromStore(Store<AppState> store) {       return _ViewModel(           notifications: store.state.appNotification.getAll(),           isLoading: store.state.appNotification.isLoading,           notificationTapped: (AppNotification notification) {             store.dispatch(UpdateNotification(notification: notification));           });     }

How to get the sorted data

static _ViewModel fromStore(Store<AppState> store) {       return _ViewModel(           notifications: store.state.appNotification.getAll((notif1,notif2)=>notif1.id.compareTo(notif2.id),           });     }

[8]ページ先頭

©2009-2025 Movatter.jp