У меня есть служба FireBase, которая обрабатывает получение всех данных из Firebase Firestore.
Когда мне нужно вызвать конкретный документ, у меня есть метод getId(id)
, который я использую, передавая нужный идентификатор.
List<Hero> hero = [];
getId(id) {
fs.Firestore store = firestore();
fs.CollectionReference ref = store.collection('items');
ref.doc(id).get().then((documentReference) {
var docRef = documentReference.data();
var id = docRef['id'];
bool pickupNeeded = docRef['pickupNeeded'];
var name = docRef['name'];
var url = docRef['id'].toString();
bool partPickup = docRef['partPickup'];
var item = Hero(id, name, pickupNeeded, url, partPickup);
hero.insert(0, item);
});
return hero;
}
Вернувшись в класс, звонящий, я звоню:
@override
void onActivate(_, RouterState current) async {
final id = RoutePaths().getId(current.parameters);
machineNumber = id.toString();
if (id != null) hero = await (_service.getId(machineNumber));
}
_service - это FirebaseService.
Вернувшись в класс Hero, мне нужно иметь возможность доступа к отдельным элементам из документа: id, pickupNeeded, url, partPickup и т. Д.
Как это сделать, если эти компоненты являются частью списка?
Или есть лучший способ вызвать документ, чтобы сделать значения более легкими для доступа по отдельности? Спасибо