onDataSourceSuccess method

  1. @override
Future<bool> onDataSourceSuccess(
  1. IDataSource source,
  2. Data? list
)
override

Implementation

@override
Future<bool> onDataSourceSuccess(IDataSource source, Data? list) async {
  busy = true;
  int index = 0;

  // save pointer to data source
  myDataSource = source;

  if (list != null) {
    clean = true;

    // clear items
    items.forEach((_, item) => item.dispose());
    items.clear();

    // Populate grid items from datasource
    for (var row in list) {
      var model = GridItemModel.fromXml(parent!, prototype, data: row);

      if (model != null) {
        // set the index
        model.index = index;

        // set the selected data
        if (model.selected == true) {
          // this must be done after the build
          WidgetsBinding.instance
              .addPostFrameCallback((_) => data = model.data);
        }

        // add to items list
        items[index++] = model;
      }
    }

    _dataset = list;
    notifyListeners('list', items);
  }

  busy = false;
  return true;
}