flutter - 颤动刷新小部件的内容,但它仍然是旧数据
问题描述
[已解决]检查 listview builder 的数据源。
我想刷新 Column 的内容,但是当我删除一个项目并向todoFutureBuilder添加一个新项目时,UI 仍然显示旧数据(以及旧数据之后的新数据)。为什么会发生这种情况?我应该怎么做才能刷新内容?
代码
初始化方法
List<Widget> todoFutureBuilder=[];
@override
void initState() {
todoFutureBuilder.add(Text('This is result'));
super.initState();
}
构建方法
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
getSearchBar(),
Expanded(
child: Column(
children: todoFutureBuilder,
),
)
],
),
);
}
改变Widget内容的方法。
showSearchArtistResults() {
setState(() {
if(todoFutureBuilder.length!=1){
todoFutureBuilder.removeAt(1);
}
print(todoFutureBuilder);
});
setState(() {
todoFutureBuilder.add(
FutureBuilder(
future: getSearchArtistResultList(),
builder: (context, snapshot) {
if (snapshot.hasData) {
print(snapshot.data);
if (snapshot.data == 'have_result') {
return Expanded(child: buildArtistResultList());
} else {
return Text('No Result, Please Search Again');
}
} else if (snapshot.hasError) {
return Text("${snapshot.error}");
}
return CircularProgressIndicator();
},
)
);
print(todoFutureBuilder);
});
}
解决方案
使用todoFutureBuilder.clear()
功能
推荐阅读
- variables - 有没有办法在 VSCode 中拆分变量?
- docker - 没有OOM异常时Docker-compose退出代码为137
- php - 在 2016 macbook 上的 MAMP 5.1 上安装 silverstripe 时出错
- r - R函数根据文本是否大写创建具有值的新列
- flutter - 如何在 Flutter 中对 MaskedTextField 进行输入验证?
- phrets - Phrets出售的数据不下载图像似乎超时
- javascript - $(this) 指的是 $(window) 而不是 .click() 方法内的单击元素
- javascript - React Hooks:隐藏/显示其他组件的元素
- django - 如何像另存为按钮一样下载导出 csv 文件(从 ajax 请求发送数据)
- android - 当用户单击任何图像视图时,如何获取回收器视图项目的所有图像视图背景颜色?