Flatter-App mit Laden beim Abrufen der API

Nov 18 2020

Ich verwende eine API, die den Wert wie folgt zurückgibt.

[
    {
        "store": "AMAZON"
    },
    {
        "store": "FLIPKART"
    },
    {
        "store": "WALMART"
    },
    {
        "store": "ALIBABA"
    },

]

Ich brauche das, um in einem Dropdown zu sein. Ich benötige eine Dropdown-Schaltfläche mit diesen API-Daten. Jemand hilft bitte. Ich habe viele Möglichkeiten ausprobiert, aber nichts hat funktioniert.

Antworten

1 Jhakiz Nov 18 2020 at 20:33

Nigale Try Code:

List<String> markets = []; // Or  var markets = [];

  String _mySelection;
  @override
  void initState() {
    buidDropDownItems();
    super.initState();
  }

// 
void buidDropDownItems() async {
    markets = await retrievedata.getMarket();
    // Refresh the UI if the State object has been created
    if(mounted){
      setState(() {});
    }
}

 child: DropdownButton(
          items: markets.map<DropdownMenuItem<String>>((String val){
                  return DropdownMenuItem<String>(value: val, child: Text(val));
                }).toList(), // Get items from the available data in markets variable
          onChanged: (sto) {
            setState(() {
              _mySelection = sto;
            });
          },
          value: _mySelection,
          hint: Text('Please select the store: '),
        ),

Die Funktion retrievedata.getMarket();kehrt zurück Future<dynamic>und dynamicist Ihre Marktliste.

AmrMo Nov 18 2020 at 19:49

Angenommen, dieses Array wird in einer Variablen namens abgerufen data

 List<String>list=[];
for(var itemData in data){
  list.add(itemData['store']);
}

Und wala, jetzt listKonationsarray von Stringgebrauchsfertig