Flutter Data from API?

2 Antworten

Glaube du musst erst den ConnectionState gucken

Siehe hier:

https://stackoverflow.com/a/51983699

linuxlara 
Fragesteller
 06.01.2023, 19:10

Danke, hab ich nun ergänzt, nun bekomme ich einen Connection refused Error

0
linuxlara 
Fragesteller
 06.01.2023, 19:15
@linuxlara

Nun hab ich das gelöst und jz bekomme ich folgendes: "Error: type String is not a subtype of type int"

0
LisamagPferde04  06.01.2023, 20:05
@linuxlara

An welcher Stelle denn? Irgendwo passen die Typen scheinbar nicht.

Bei Text(snapshot.data[index]['id']) versuchst du wahrscheinlich einen int da rein zu machen.
Es muss aber ein String sein. Du könntest einfach noch ein .toString() anhängen um es umzuwandeln

0
linuxlara 
Fragesteller
 06.01.2023, 20:11
@LisamagPferde04

ja, beim model, siehe code unten passt int nicht, aber weiß nicht wie ich das lösen kann. Hab mal versucht die int variablen auszukommentieren und dann hat es funktioniert, aber mit int nicht

0
LisamagPferde04  06.01.2023, 20:14
@linuxlara

Wo setzt du denn oben in dem Code dein Model ein?

Ansonsten kannst du einfach mit .toString() einen String daraus machen.

Text(snapshot.data[index]['id'].toString())

Wobei es da noch Probleme mit dem nullable geben könnte.

0
linuxlara 
Fragesteller
 06.01.2023, 20:18
@LisamagPferde04

List<TestModel> list = [];

  Future<List<TestModel>> getTestApi() async {

    final resposne = await http.get(Uri.parse('http://localhost/index.php/test/list'));

    var data = jsonDecode(resposne.body.toString());

    if (resposne.statusCode == 200) {

      list.clear();

      for (Map i in data) {

        list.add(TestModel.fromJson(i));

      }

      return list;

    } else

      return list;

    }

  }

Text(list[index].ID.toString()),

SizedBox(height: 5,),

 Text(list[index].Name.toString()),

0
LisamagPferde04  06.01.2023, 20:21
@linuxlara

Und was passiert jetzt? Gibt es noch Fehler? In welchen Zeilen tritt der Fehler auf? Dart/Flutter sagt einem ziemlich genau wo was schiefläuft

0

Es gibt einige Gründe, warum Sie möglicherweise einen Fehler erhalten, wenn Sie versuchen, auf Ihre API zuzugreifen. Hier sind einige Dinge, die Sie überprüfen können:

  1. Stellen Sie sicher, dass der Hostname und der Port, den Sie in der URL verwenden, korrekt sind und dass Ihre API auf dem angegebenen Host und Port ausgeführt wird.
  2. Stellen Sie sicher, dass Ihre Firewall oder eine andere Sicherheitssoftware den Zugriff auf Ihre API nicht blockiert.
  3. Überprüfen Sie, ob es einen Fehler in Ihrem Code gibt, der dazu führen könnte, dass der Fehler "Error" angezeigt wird. Eine Möglichkeit, dies zu tun, ist das Hinzufügen von Ausgaben in den Fehlerfall des
  4. FutureBuilder
  5. (z.B.
  6. print(snapshot.error)
  7. ), um herauszufinden, was den Fehler verursacht hat.
  8. Wenn Sie Ihre API mit Postman testen können, aber von Ihrer Flutter-App nicht, stellen Sie sicher, dass Sie die richtige URL verwenden und dass Ihre App auf demselben Computer oder auf demselben Netzwerk wie Ihre API ausgeführt wird.
linuxlara 
Fragesteller
 06.01.2023, 19:39

Meine Ausgabe:

"Error: type String is not a subtype of type int"

0
linuxlara 
Fragesteller
 06.01.2023, 19:44
@linuxlara

Mein Model:

class TestModel {

 TestModel({

      int? ID,

      String? Name,

      String? Strasse,

  }){

    _ID = ID;

    _Name = Name;

    _Strasse = Strasse;

   

}

  TestModel.fromJson(dynamic json) {

    _ID = json['ID'];

    _Name = json['Name'];

  }

  int? _ID;

  String? _Name;

  int? get ID => _ID;

  String? get Name => _Name;

 

  Map<String, dynamic> toJson() {

    final map = <String, dynamic>{};

    map['ID'] = _ID;

    map['Name'] = _Name;

    return map;

  }

}

0