NsgBaseController class

Inheritance
Mixed-in types
Implementers

Constructors

NsgBaseController.new({Type dataType = NsgDataItem, bool requestOnInit = false, bool useUpdate = true, bool useChange = true, NsgBaseController? masterController, bool selectedMasterRequired = true, NsgDataBinding? dataBinding, bool autoRepeate = false, int autoRepeateCount = 10, bool useDataCache = false, bool autoSelectFirstItem = false, List<NsgBaseController>? dependsOnControllers, FutureOr<void> onRetry(Exception)?, FutureOr<bool> retryIf(Exception)?, bool editModeAllowed = true, bool readOnly = true, NsgDataControllerMode? controllerMode})

Properties

autoRepeate bool
Enable auto repeate attempts of requesting data
getter/setter pair
autoRepeateCount int
Set count of attempts of requesting data
getter/setter pair
autoSelectFirstItem bool
getter/setter pair
backupItem NsgDataItem?
Сохраненный эелемент для возможности возврата предыдущего значения например, в случае отмены редактирования
getter/setter pair
controllerFilter NsgControllerFilter
Фильтр. После изменения необходимо вызвать controllerFilter.refreshControllerWithDelay()
getter/setter pair
controllerMode NsgDataControllerMode
getter/setter pair
currentStatus ↔ GetStatus<NsgBaseControllerData>
Status of last data request operation
getter/setter pair
dataBinding NsgDataBinding?
Binding rule
getter/setter pair
dataCache List<NsgDataItem>
getter/setter pair
dataItemList List<NsgDataItem>
getter/setter pair
dataType Type
getter/setter pair
dependsOnControllers List<NsgBaseController>?
getter/setter pair
editModeAllowed bool
Разрешен переход в режим редактирования
getter/setter pair
favorites List<NsgDataItem>
final
fieldsWithError Map<String, String>
Map полей с ошибками - имя поля - текст ошибки
getter/setter pair
getRequestFilter NsgDataRequestParams
no setter
hashCode int
The hash code for this object.
no setterinherited
initialized bool
Checks whether the controller has already been initialized.
no setterinherited
isClosed bool
Checks whether the controller has already been closed.
no setterinherited
isDisposed bool
no setterinherited
isFavoritesRequested bool
getter/setter pair
isModified bool
Возвращает была ли модифицирована текущая строка контроллера после открытии страницы на редактирование По сути, сравнивает selectedItem и backupItem
no setter
itemsRequested → Event<EventArgs>
final
lateInit bool
Флаг отложенной инициализации. Выставляется в true при создании контроллера, если свойство requestOnInit стоит false. Сбросится при первом вызове метода requestItems
getter/setter pair
listenersLength int
no setterinherited
masterController NsgBaseController?
Master controller. Using for binding.
getter/setter pair
objectFieldsNames List<String>
no setter
onRetry FutureOr<void> Function(Exception)?
At every retry the onRetry function will be called (if given). The function fn will be invoked at-most this.attempts times.
getter/setter pair
onSelected ↔ void Function(NsgDataItem)?
Событие о выборе значения пользователем. Срабатывает в режиме selection при выборе пользователем элемента в форме списка
getter/setter pair
readOnly bool
Запрет редактирования данных пользователей
getter/setter pair
recent List<NsgDataItem>
Список часто используемых элементов
getter/setter pair
referenceItemPage List<String>?
Список ссылок для догрузки при чтении одного элемента (refreshItem)
getter/setter pair
referenceList List<String>?
Список ссылок для догрузки при чтении списка
getter/setter pair
regime NsgControllerRegime
Определяет текущий режим работы контроллера
getter/setter pair
requestOnInit bool
getter/setter pair
retryIf FutureOr<bool> Function(Exception)?
If no retryIf function is given this will retry any for any Exception thrown. To retry on an Error, the error must be caught and rethrown as an Exception.
getter/setter pair
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
selectedItem NsgDataItem?
getter/setter pair
selectedItemChanged → Event<EventArgs>
final
selectedMasterRequired bool
getter/setter pair
showException ↔ void Function(NsgApiException)?
Функция для отображения ошибок пользователю Если не задана для конкретного контроллера, используется заданная по умолчанию NsgApiException.showExceptionDefault Последняя, задается в пакете nsg_controls
getter/setter pair
showExceptionDialog bool
Показывать диалоговое окно при ошибке, возникшей при itemPagePost
getter/setter pair
sorting NsgSorting
Параметры сортировки данных Устанавляваются компонентами (например, таблицей), передаются в запрос через getRequestFilter
getter/setter pair
state NsgBaseControllerData
no setterinherited
status ↔ GetStatus<NsgBaseControllerData>
getter/setter pairinherited
statusChanged → Event<EventArgs>
final
top int?
Номер элемента, начиная с которого возвращать данные Используется для пейджинга
getter/setter pair
totalCount int?
Сколько всего элементов, удовлетворяющим условиям поиска, хранится на сервере Если значение null, значит не было успешного запроса к серверу, либо, сервер не вернул общее количество элементов
getter/setter pair
updateKeys List<NsgUpdateKey>
getter/setter pair
useChange bool
Use change method on data update
getter/setter pair
useDataCache bool
getter/setter pair
userSettingsController NsgUserSettingsController<NsgDataItem>?
Контроллер настроек пользователя. Если задан, используется для хранения и извлечения информации об избранных элементах и последних используемых
getter/setter pair
useUpdate bool
Use update method on data update
getter/setter pair
value NsgBaseControllerData
getter/setter pairinherited

Methods

addListener(GetStateUpdate listener) → Disposer
Register a closure to be called when the object notifies its listeners.
inherited
addListenerId(Object? key, GetStateUpdate listener) → Disposer
inherited
afterRefreshItem(NsgDataItem item, List<String>? referenceList) Future
Вызывается после метода refreshItem. Можно использовать, например, для обновления связанных контроллеров
afterRequestItems(List<NsgDataItem> newItemsList) Future
is calling after new items are got from API before they are placed to ItemList
afterUpdate() Future
is calling after new Items are putted in itemList
beginTransaction(NsgDataProvider provider, {int lifespan = 0, NsgCancelToken? cancelToken}) Future<String?>
change(GetStatus<NsgBaseControllerData> status) → void
inherited
commitTransaction(NsgDataProvider provider, String transactionId, {NsgCancelToken? cancelToken}) Future<bool?>
containsId(Object id) bool
inherited
containsListener(GetStateUpdate listener) bool
inherited
copyAndSetItem(NsgDataItem item, {bool needRefreshSelectedItem = false, List<String>? referenceList}) Future
Перечитать из базы данных item, создать его копию На время чтерния статус контроллера будет loading referenceList - ссылки для дочитывания. Если передан null - будут дочитаны все Одно из применений, перечитывание объекта с целью чтения его табличных частей при переходе из формы списка в форму элемента
createAndSetSelectedItem() Future
Создает новый элемент БД и устанавливает его в текущее selectedItem (currentItem) На время чтерния статус контроллера будет loading
deleteItem({bool goBack = true}) Future
Удаляет currentItem в БД и в items
deleteItems(List<NsgDataItem> itemsToDelete) Future
Удаляет выбранные элементы в БД и в items
dispose() → void
inherited
disposeId(Object id) → void
To dispose an id from future updates(), this ids are registered by GetBuilder() or similar, so is a way to unlink the state change with the Widget from the Controller.
inherited
doCreateNewItem() Future<NsgDataItem>
Создает новый элемент. Вызывается из createNewItem Может быть перекрыт для организации бизнес-логики запросов, например, заполнения нового элемента на сервере или проверки возможности создания нового элемента
doRequestItems({NsgDataRequestParams? filter}) Future<List<NsgDataItem>>
filterItems({required List<NsgDataItem> newItemsList, NsgDataRequestParams? filterParam}) Future<List<NsgDataItem>>
Фильтрует строки из по фильтру добавляет в контроллер Если фильтр не задан, он будет запрошен у контроллера стандартным способом - через getRequestFilter Возвращает отфильтрованные и отсортированные данные
futurize(Future<NsgBaseControllerData> body(), {NsgBaseControllerData? initialData, String? errorMessage, bool useEmpty = true}) → void
inherited
getFavorites() Future<List<NsgDataItem>>
Список избранных элементов
getUpdateKey(String id, NsgUpdateKeyType type) NsgUpdateKey
itemCopyPageOpen(NsgDataItem element, String pageName, {bool needRefreshSelectedItem = false, List<String>? referenceList}) → void
Copy item and open item page to view and edit data element saved in backupItem to have possibility revert changes referenceList - список полей для дочитывания. null - перечитать все
itemPageCancel({bool useValidation = true, required BuildContext context}) → void
Close item page and restore current (selectedItem) item from backup
itemPageCloseCheck(BuildContext context) Future
Проверить были ли изменения в объекте, если нет, выполняем Back, если были, то спрашиваем пользователя сохранить изменения или отменить, а затем выполняем Back
itemPageOpen(NsgDataItem element, String pageName, {bool needRefreshSelectedItem = false, List<String>? referenceList, bool offPage = false}) → void
Open item page to view and edit data element saved in backupItem to have possibility revert changes needRefreshSelectedItem - Требуется ли перечитать текущий элемент из БД, например, для чтения табличных частей
itemPagePost({bool goBack = true, bool useValidation = true}) Future<bool>
Close item page and post current (selectedItem) item to databese (server) если goBack == true (по умолчанию), после сохранения элемента, будет выполнен переход назад useValidation == true перед сохранением проводится валидация В случае успешного сохранения возвращает true
itemsRemove(List<NsgDataItem> itemsToRemove) Future
Удаление текущего элемента если goBack == true (по умолчанию), после сохранения элемента, будет выполнен переход назад Удаление массива строк из табличной части На данный момент, метод реализован только для контроллера табличной части
listPageOpen(String pageName, {bool needRefreshItems = false, bool offPage = false}) → void
Open list page to view data in controller.items
loadFavorites(NsgUserSettingsController<NsgDataItem> userSetiingsController, List<String> ids) Future<List<NsgDataItem>>
loadProviderData() Future
Метод, вызываемый при инициализации provider (загрузка приложения)
masterItemsRequested(EventArgs? args) → void
masterValueChanged(EventArgs? args) → void
matchFilter(NsgDataItem item) bool
Проверяем, удовлетворяет ли заданный элемент фильтру контроллера
newItemPageOpen({required String pageName, bool offPage = false}) → void
Create new item and open page to view and edit it pageName - страница, которую необходимо открыть по окончанию создания нового элемента
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
notifyGroupChildrens(Object id) → void
inherited
obx(NotifierBuilder<NsgBaseControllerData?> widget, {Widget onError(String? error)?, Widget? onLoading, Widget? onEmpty, bool needProgressBar = true}) Widget
obxBase(Widget widget(NsgBaseControllerData?), {Widget onError(String? error)?, Widget? onLoading, Widget? onEmpty}) Widget
onClose() → void
Called before onDelete method. onClose might be used to dispose resources used by the controller. Like closing events, or streams before the controller is destroyed. Or dispose objects that can potentially create some memory leaks, like TextEditingControllers, AnimationControllers. Might be useful as well to persist some data on disk.
override
onDelete() → void
inherited
onInit() → void
Called immediately after the widget is allocated in memory. You might use this to initialize something for the controller.
override
onReady() → void
Called 1 frame after onInit(). It is the perfect place to enter navigation events, like snackbar, dialogs, or a new route, or async request.
inherited
onStart() → void
Called at the exact moment the widget is allocated in memory. It uses an internal "callable" type, to avoid any @overrides in subclasses. This method should be internal and is required to define the lifetime cycle of the subclass.
inherited
postItemQueue(NsgDataItem obj, {dynamic errorObjects(List<NsgDataItem> errorObjects)?, dynamic postedObjects(List<NsgDataItem> postedObjects)?}) Future
Поставить в очередь на сохранение, чтобы избезать параллельного сохранения Уменьшив таким образом нагрузку на сервер и избежать коллизий
postItems(List<NsgDataItem> itemsToPost, {bool showProgress = false}) Future
postSelectedItem() Future
Post selected item to the server
refresh() → void
inherited
refreshCurrentItem({List<String>? referenceList}) Future<NsgDataItem>
refreshData({List<NsgUpdateKey>? keys, NsgDataRequestParams? filter}) Future
Обновление данных
refreshGroup(Object id) → void
inherited
refreshItem(NsgDataItem item, List<String>? referenceList, {bool changeStatus = false}) Future<NsgDataItem>
Перечитать указанный объект из базы данных item - перечитываемый объект referenceList - ссылки для дочитывания. Если передан null - будут дочитаны все Одно из применений, перечитывание объекта с целью чтения его табличных частей при переходе из формы списка в форму элемента changeStatus - выставить статус контроллера в success после обновления элемента
registerUpdateKey(NsgUpdateKey updateKey) → void
removeListener(VoidCallback listener) → void
Remove a previously registered closure from the list of closures that the object notifies.
inherited
removeListenerId(Object id, VoidCallback listener) → void
inherited
reportAdd(VoidCallback disposer) → void
inherited
reportRead() → void
inherited
requestItems({List<NsgUpdateKey>? keys, NsgDataRequestParams? filter}) Future
Request Items
retryRequestIf(Exception exception) FutureOr<bool>
rollbackTransaction(NsgDataProvider provider, String transactionId, {NsgCancelToken? cancelToken}) Future<bool?>
saveBackup(NsgDataItem item) → dynamic
sendNotify({List<NsgUpdateKey>? keys}) → void
Отправить сообщение о необходимоси обновления Если передан список ключей, то обновление будет дано только для них
setAndRefreshSelectedItem(NsgDataItem item, List<String>? referenceList) Future
Перечитать из базы данных текущий объект (selectedItem) На время чтерния статус контроллера будет loading referenceList - ссылки для дочитывания. Если передан null - будут дочитаны все Одно из применений, перечитывание объекта с целью чтения его табличных частей при переходе из формы списка в форму элемента
setEmpty() → void
inherited
setError(Object error) → void
inherited
setLoading() → void
inherited
setSuccess(NsgBaseControllerData data) → void
inherited
sortDataItemList() → void
Сортирует данные в массиве самого контроллера
sortItemList(List<NsgDataItem> newItemsList, String sortingString) → void
Сортирует данные в массиве элементов При сортировке приоритет отдается параметру sorting. Если он не задан, будет использован sortingString sortingString обычно беретсчя из getRequestFilter.sorting
toString() String
A string representation of this object.
inherited
unregisterUpdateKey(NsgUpdateKey updateKey) → void
update([List<Object>? ids, bool condition = true]) → void
Rebuilds GetBuilder each time you call update(); Can take a List of ids, that will only update the matching GetBuilder( id: ), ids can be reused among GetBuilders like group tags. The update will only notify the Widgets, if condition is true.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Properties

emptyData NsgBaseControllerData
getter/setter pair
getDefaultProgressIndicator Widget Function()
getter/setter pair
saveOrCancelDefaultDialog Future<bool?> Function(BuildContext?)?
getter/setter pair
showErrorByString Future Function(String errorMessage, {String title})
getter/setter pair