Reputation:
How can to do when I get the image data then put into image toList?
I mean, I used this method to get data
getFeature() async {
final docSnapshot = await FirebaseFirestore.instance
.collection('Campsite')
.doc(widget.CamperSiteID)
.get();
final CamperSiteSummary =
List<int>.from(docSnapshot.data()?['CamperSiteSummary'] ?? []);
setState(() {
CamperSiteSummary.forEach((element) {
switch (element) {
case 1:
SummaryIcon = 'assest/kitchen.png';
SummaryName = 'Kitchen';
break;
case 2:
SummaryIcon = 'assest/barbecue.png';
SummaryName = 'Barbecue';
break;
case 3:
SummaryIcon = 'assest/suit_any_car.png';
SummaryName = 'Suit any car';
break;
case 4:
SummaryIcon = 'assest/laundromat.png';
SummaryName = 'Laundromat';
break;
case 5:
SummaryIcon = 'assest/dump_station.png';
SummaryName = 'Dump station';
break;
}
print(element);
});
});
I can get date, but how can display SummaryIcon when the data is match?
if the data match case 1,3,4
I hope it can show images then put into Container()
Upvotes: 0
Views: 152
Reputation: 16
use ValueListenableBuilder
and ValueNotifier
create model
class Summary {
String summaryIcon;
String summaryName;
Summary(this.summaryIcon, this.summaryName);
}
in widget
ValueNotifier<List<Summary>> listValueNotifier = ValueNotifier([]);
@override
Widget build(BuildContext context) {
return ValueListenableBuilder<List<Summary>>(
valueListenable: listValueNotifier,
builder: (context, data, child) {
return Container(
child: Row(
children: [...data.map((e) => Image.asset(e.summaryName)).toList()],
));
});
}
getFeature() async {
final docSnapshot = await FirebaseFirestore.instance
.collection('Campsite')
.doc(widget.CamperSiteID)
.get();
final CamperSiteSummary =
List<int>.from(docSnapshot.data()?['CamperSiteSummary'] ?? []);
List<Summary> list = [];
CamperSiteSummary.forEach((element) {
var SummaryIcon;
var SummaryName;
switch (element) {
case 1:
SummaryIcon = 'assest/kitchen.png';
SummaryName = 'Kitchen';
break;
case 2:
SummaryIcon = 'assest/barbecue.png';
SummaryName = 'Barbecue';
break;
case 3:
SummaryIcon = 'assest/suit_any_car.png';
SummaryName = 'Suit any car';
break;
case 4:
SummaryIcon = 'assest/laundromat.png';
SummaryName = 'Laundromat';
break;
case 5:
SummaryIcon = 'assest/dump_station.png';
SummaryName = 'Dump station';
break;
}
print(element);
if (SummaryIcon != null && SummaryName != null) {
list.add(Summary(SummaryIcon, SummaryName));
}
});
listValueNotifier.value = list;
}
Upvotes: 0