Gibt es eine Möglichkeit, Snapshot-Daten basierend auf dem Objektwert in Dart / Flutter (REST) ​​anzuzeigen?

Lesezeit: 2 Minuten

Gibt es eine Moglichkeit Snapshot Daten basierend auf dem Objektwert in
Johann

Ich möchte Beiträge nur anzeigen, wenn sie die Nummer 1 enthalten.

JSON:

posts="{"number":"1"}";

JSON wird in einer separaten Datei abgerufen wie:

    Posts(Map<String, dynamic> json) : super(json) {
        posts = json["number"];
    }

Und ich habe das:

  Widget _buildGridView() => StreamBuilder<List<Posts>?>(
      builder: (context, snapshot) {
        if (snapshot.data != null) {
          return new GridView.count(
              children: List.generate(snapshot.data!.length, (index) {
                return _buildPlacesCell(snapshot.data![index]);
              }));
        }
      });

Ich frage mich: Kann ich so etwas tun?

if (snapshot.data.posts.number = 1)

Anstatt

snapshot.data != null

Oder nicht?

Ich möchte meine Daten nur anzeigen, wenn der Beitrag die Nummer 1 in seiner JSON-Datei hat, aber ich kann das nicht zum Laufen bringen.

Ich erhalte den folgenden Fehler:

error: The getter 'posts' isn't defined for the type 'List<Post>'

Bearbeiten: Nach Jamius Ausschnitt werden die folgenden Fehler angezeigt:

Fehler: Der Operator ‘[]’ ist für den Typ ‘Post’ nicht definiert.

und:

error: Der Hauptteil kann normal abgeschlossen werden, was dazu führt, dass „null“ zurückgegeben wird, aber der Rückgabetyp ist ein potenziell nicht nullfähiger Typ

1647172146 385 Gibt es eine Moglichkeit Snapshot Daten basierend auf dem Objektwert in
Jamiu

Sie könnten die if-Anweisungen verschachteln. Überprüfen Sie zunächst, ob die snapshot.data != null und dann innerhalb dieser if-Anweisung, überprüfen Sie if snapshot.data.posts.number = 1 so:

if(snapshot.data!=null){
    if(snapshot.data.posts.number=1){
        return new GridView.count(
        children: List.generate(snapshot.data!.length, (index) {
        return _buildCell(snapshot.data![index]);
        }));
    }
}

Erwägen Sie Folgendes:

StreamBuilder<List<Place>>(
    stream: listPosts,
    builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) {
            return const Center(child: CircularProgressIndicator());
        }
        if (snapshot.hasData) {
            final data = snapshot.data!;
            if (data.isNotEmpty) {
                return GridView.count(
                    children:[
                        for(var post in data)
                            if (post.number == '1')  _buildPlacesCell(post);
                    ],
                );
            }else{
                return const Center(
                    Text('No posts to display');
                );
            }
        }
        if (snapshot.hasError) {
            print(snapshot.error);
            //! do any error handling here
        }
        return const Center(child: CircularProgressIndicator());
        },
    ),

//Versuche dies

Map<String, dynamic> data = snapshot.data!.data() as Map<String, dynamic>;
if(data["number"]=="1"){
   //do
}

  • Hm, wie genau? Können Sie meinen aktualisierten Code sehen? Ich habe keinen Ort, um es so hinzuzufügen.

    – Johann

    13. November 2021 um 8:26 Uhr

997450cookie-checkGibt es eine Möglichkeit, Snapshot-Daten basierend auf dem Objektwert in Dart / Flutter (REST) ​​anzuzeigen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy