Flutter 从API调用提交时颤振刷新UI
我正试图在Api上发表评论。我可以正确地发布评论,并且它也发布在api端点上。我想要的是在发布评论后刷新UI,这样我就可以看到我的最新评论。感谢您的任何帮助。谢谢 这是在api上发布注释的代码:Flutter 从API调用提交时颤振刷新UI,flutter,Flutter,我正试图在Api上发表评论。我可以正确地发布评论,并且它也发布在api端点上。我想要的是在发布评论后刷新UI,这样我就可以看到我的最新评论。感谢您的任何帮助。谢谢 这是在api上发布注释的代码: void _postComment() async { var data = { 'content': commentContent, }; var res = await CommentApi().authData(data, widget.post.postId)
void _postComment() async {
var data = {
'content': commentContent,
};
var res = await CommentApi().authData(data, widget.post.postId);
var body = json.decode(res.body);
print(body);
await Future.delayed(Duration(milliseconds: 1000));
return showDialog<void>(
context: context,
barrierDismissible: false,
builder: (BuildContext context) {
return AlertDialog(
title: Text('Successful'),
content: SingleChildScrollView(
child: ListBody(
children: <Widget>[
Text('Your comment has been added.'),
],
),
),
actions: <Widget>[
FlatButton(
child: Text('Okay'),
onPressed: () {
Navigator.pop(context);
setState(() {
textEditingController.clear();
});
},
),
],
);
},
);
}
检索注释的步骤
ListView.builder(
shrinkWrap: true,
physics: ClampingScrollPhysics(),
itemCount: widget.post.comments.length,
itemBuilder: (BuildContext context, int index) {
return _commentsWidget(widget.post.comments[index]);
},
),
Widget_commentsWidget(评论后评论){
返回填充(
填充:常数边集全部(10.0),
孩子:卡片(
标高:5,
形状:圆形矩形边框(
边界半径:边界半径。圆形(15.0),
),
子:列(
儿童:[
列表砖(
标题:填充(
填充:仅限边缘设置(左:55.0),
子:文本(
comment.commentText,
样式:TextStyle(fontSize:20.0),
),
),
)
],
),
),
);
}
您可以使用以下策略解决此问题:
ListView.builder(
shrinkWrap: true,
physics: ClampingScrollPhysics(),
itemCount: widget.post.comments.length,
itemBuilder: (BuildContext context, int index) {
return _commentsWidget(widget.post.comments[index]);
},
),
Widget _commentsWidget(PostComment comment) {
return Padding(
padding: const EdgeInsets.all(10.0),
child: Card(
elevation: 5,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15.0),
),
child: Column(
children: <Widget>[
ListTile(
title: Padding(
padding: EdgeInsets.only(left: 55.0),
child: Text(
comment.commentText,
style: TextStyle(fontSize: 20.0),
),
),
)
],
),
),
);
}