首页 > 解决方案 > 颤动刷新小部件的内容,但它仍然是旧数据

问题描述

[已解决]检查 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);
      });
  }

标签: flutter

解决方案


使用todoFutureBuilder.clear()功能


推荐阅读