Limite d'items dans le findListOfItems du directusapimanager

Bonjour à tous,

Je me suis rendu compte que la limite d’items télécharger par le findListOfItems de l’api manager est limiter par défaut à 100.

Il est possible de modifier cette limite en utilisant la propriété limit : findListOfItems<DirectusModel>(limit: 1000);

Ma question est la suivante : j’ai mis 1000 pour « être tranquille » car j’ai une liste assez longue. Mais peut être n’est ce pas la bonne pratique. Existe-t-il une façon de faire plus adéquate ?
@Behache il me semble que tu avais fait un post sur le chargement progressif d’item.

Merci d’avance !

Salut Xavier,

J’ai effectivement réussi à mettre en place un chargement progressif de mes items (car j’ai une liste d’items assez lourds à charger et ça prenait trop de temps).

L’idée est de mettre en place un ScrollControler.

final _scrollController = ScrollController();

lorsque celui-ci repère qu’il est en bas de la listview, je lui fais lancer une fonction qui charge le nouveaux items à ajouter à ma liste d’items de départ. Ma fonction ressemble à ça:

Future<void> _scrollListener() async {
    if (widget._viewmodel.isLoadingMore) return;
    if (_scrollController.position.pixels ==
        _scrollController.position.maxScrollExtent) {
      widget._viewmodel.isLoadingMoreChanged() // booléen qui lance un CircularProgressIndicator();
      await widget._viewmodel.addNewItems();
      widget._viewmodel.isLoadingMoreChanged(); // booléen qui arrête le CircularProgressIndicator();
    }
  }

Coté appel à Directus, ça donne ça:

void addNewItems() async {
      final int moreItems = 200;
      offset = offset + moreItems;
 final newItems = await apiManager.findListOfItems<NewItem>(
        filter: filter, limit: moreItems, offset: offset);
  myItems.add(newItems);
  notifyListeners();
}

Bon voilà à peu près l’esprit de la séquence que j’ai mise en place.
Concernant la partie graphique pour l’utilisation du ScrollController, je me suis inspiré de cette vidéo plutôt bien faite et transposable facilement à l’utilisation du désormais célèbre DirectusApiManager.
https://www.youtube.com/watch?v=Gsfjcpo6wcA

Bon courage,

Benoit

1 « J'aime »

Merci @Behache je vais regarder ta solution :smiley: