Pour récupérer des éléments de directs via le package de Maxime, il te faudra pour commencer un objet DirectusApiManager.
La partie authentification est simple à gérer puisque le paquet le fait pour toi. Perso, je crée l’objet dans mon NavigationDelegate pour pour voir le récupérer dans les autres écrans si besoin.
Cet objet te donnera accès la fonction findListOfItems avec la signature suivante :
Future<Iterable<Type>> findListOfItems<Type extends DirectusItem>(
{required String name,
Filter? filter,
List<SortProperty>? sortBy,
String fields = "*",
int? limit,
int? offset,
required Type Function(dynamic json) createItemFunction})
Par exemple, pour récupérer des messages dans une table qui se nomme « messages », je l’utilise de la façon suivante :
Iterable<Message> messagesIterable = await api.findListOfItems<Message>(
name: "messages",
createItemFunction: Message.fromDirectus,
fields: "*,*.*",
sortBy: [const SortProperty("date_created", ascending: false)],
limit: 20,
offset: offset,
filter: PropertyFilter(
field: "user_created",
operator: FilterOperator.equals,
value: retailer.id);
List<Message> messagesList = [];
for (var message in messagesIterable) {
messagesList.add(message);
}
return messagesList;
}
findListOfItems utilise la fonction Message.fromDirectus qui me retourne un objet Message déclaré de la façon suivante :
class Message extends DirectusItem {
late String id;
late DateTime creationDate;
late Retailer creator;
late String title;
late String body;
late bool isPublished;
Message(super.rawReceivedData) {
id = getValue(forKey: "id");
title = getValue(forKey: "title");
body = getValue(forKey: "body");
creationDate = DateTime.parse(getValue(forKey: "date_created"));
creator = Retailer(getValue(forKey: "user_created"));
isPublished = getValue(forKey: "isPublished");
}
factory Message.fromDirectus(dynamic rawReceivedData) {
return Message(rawReceivedData);
}
Map<String, dynamic> toDirectus() {
return {"title": title, "body": body, "isPublished": isPublished};
}
}
de cette façon, je peux retourner un tableau avec la liste des messages souhaités.
N’hésite pas à me dire si cela n’est pas assez clair.