Ich versuche ein Widget zu aktualisieren, wenn ich Daten aus meiner Datenbank habe. Das Widget, das ich versuche, als Klassenvariable definiert zu ändern:Status nicht aktualisiert
Widget openFriendRequestNotificationWidget = new Container();
ich einen leeren Behälter bin mit, weil ich nicht wirklich etwas am Anfang machen müssen und es auf null zu verlassen ist nicht Möglichkeit.
Ich habe zwei Funktionen habe, eine meiner Seite und die andere das Update mein openFriendRequestNotificationWidget
zu erstellen:
Widget createFriendsPage() {
if (currentUser.friends == null) {
return new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
openFriendRequestNotificationWidget,
new Material(
child: new InkWell(
child: new Center(
child: new Text("Woops, looks like you have no friends yet.\nTap here to find some!", textAlign: TextAlign.center,),
),
onTap:() => createFriendsDialog(),
)
)
],
);
}
return new Column(
children: <Widget>[
openFriendRequestNotificationWidget,
new Text("ok")
],
);
}
void createReceivedFriendRequestsNotification() {
FirebaseDatabase.instance.reference().child("friend_requests").child(currentUser.uid).once().then((DataSnapshot snap) {
Map<String, Map<String, String>> response = snap.value;
if (response != null) {
this.setState(() {
print("Changing widget");
openFriendRequestNotificationWidget = new Container(
child: new Text("You've got ${response.length.toString()} new friend requests!"),
color: Colors.black,
);
});
}
});
}
Die Variable wird die Aktualisierung in createReceivedFriendRequestsNotification
aber es wird nicht wieder Rendering.
Könnte jemand aushelfen?
Ihre
createFriendsPage
in der Überschreibung Methode aufrufen https://github.com/flutter/flutter/issues/9614 – grepLineswo Sie 'createFriendsPage()' nennen? – grepLines
Danke dafür! Ich verstehe, dass, weil ich eine Spalte verwende, die eine Liste nimmt, das Widget nicht neu erstellt, weil die Liste immer noch dieselben Variablen enthält, obwohl ich eine geändert habe (korrigiere mich, wenn ich falsch liege!). Wie könnte ich das beheben? Ich brauche eine Liste für die Widgets der Spalte, nein? –