user18124547
user18124547

Reputation:

How can to do when I get the image data then put into image toList?

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

Answers (1)

陈炜祺
陈炜祺

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

Related Questions