Я хочу получить данные из магазина и использовать их для создания карт во Flutter, используя ListView на домашней странице. Используя меню навигации для переключения между экранами, я намерен повторно использовать данные, полученные после сеанса, а не извлекать их из базы данных каждый раз, когда возвращаюсь на домашнюю страницу. Но этого не происходит; Данные извлекаются из базы данных каждый раз, когда я go перехожу на домашнюю страницу.
FutureBuilder(
future: databaseService(),
builder: (context, snapshot) {
if (snapshot.hasData) {
stringMap = snapshot.data;
}
return ListView.builder(
itemBuilder: (context, index) {
stringMap.forEach((index, value) => {
print("The stringMap is ${stringMap.keys.toList()}"),
});
return HomepageCards(
user: widget.user,
cardDetails: stringMap[stringMap.keys.toList()[index]],
);
},
itemCount: stringMap.length,
scrollDirection: Axis.vertical,
controller: _controller,
shrinkWrap: true,
);
},
)
databaseService() async {
return DatabaseService().streamHomePage(widget.user);
}
DatabaseService.dart
class DatabaseService {
final Firestore _db = Firestore.instance;
HomePage home = new HomePage();
Map homePageMap = new Map<String, Map<String, dynamic>>();
/// Query a subcollection
Future streamHomePage(FirebaseUser user) async {
// Initialise the model map
home.homeModel = <String, dynamic>{};
home.homeModel['driverDetails'] = new Map();
var ref = _db
.collection('homepage')
.document(user.uid)
.collection('h')
.document('28032020');
// TODO: Try to use cached data. Also try to find the pattern for switching between server and cache
await ref.get(source: Source.serverAndCache).then((ref) => {
ref.data.forEach((index, value) => {
home.homeModel = value,
homePageMap[index] = value,
}),
});
return homePageMap;
}
}
Любые выводы, приводящие к повторному использованию данных после многократного использования, будут весьма оценили.