데이터베이스에서 데이터를 가져올 때 위젯을 업데이트하려고합니다. 난 정말 더를 처음에 아무것도 렌더링 할 필요 널 그것을 떠나 것은하지 않기 때문에 나는 빈 컨테이너를 사용하지 않는거야상태가 업데이트되지 않습니다.
Widget openFriendRequestNotificationWidget = new Container();
: 나는 변경하기 위해 노력하고있어 위젯 클래스 변수로 정의된다 선택권.
내 페이지를 생성하는 두 가지 기능을 가지고와 한 다른 하나는 업데이트 내 openFriendRequestNotificationWidget
:
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,
);
});
}
});
}
변수는 createReceivedFriendRequestsNotification
에 업데이트되지만 다시 렌더링되지 않습니다.
누군가 도와 줄 수 있습니까?
https://github.com/flutter/flutter/issues/9614 – grepLines
당신이'createFriendsPage()'를 호출 않는 재정의 메서드 내부에
createFriendsPage
를 호출하는 것이 좋습니다? – grepLines감사합니다! 목록을 사용하는 열을 사용하기 때문에 목록을 변경하더라도 목록에 동일한 변수가 포함되어 있기 때문에 위젯이 다시 작성되지 않는다는 사실을 이해합니다 (잘못된 부분이 있으면 수정하십시오!). 어떻게 해결할 수 있을까요? 칼럼의 위젯 목록이 필요 하겠지? –