微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取特定数据后如何更新ListView?

如何解决获取特定数据后如何更新ListView?

我遇到过这个问题,

  • 我使用此 _openFile 函数读取文件。阅读后,我想使用提取的数据更新 ListView。但是我找不到在执行 _openFile 后重置 ListView 状态的方法

有什么帮助吗?

class ListTest extends StatefulWidget {
      @override
      _ListTestState createState() => _ListTestState();
    }

class _ListTestState extends State<ListTest> {

  List<XFile> _files = [];

  Future <List<XFile>> _openFile(BuildContext context) async {
    final XTypeGroup pngTypeGroup = XTypeGroup(
      label: 'PNGs',extensions: ['png'],);
    _files = await openFiles(acceptedTypeGroups: [
      pngTypeGroup,]);
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        RaisedButton(
          color: Colors.blue,textColor: Colors.white,child: Text('Press to open images (png)'),onpressed: () {
              _openFile(context);
            );
          }
        ),Expanded(
          child: ListView.builder(
            itemCount: _files.length,itemBuilder: (context,index) {
              return Text(_files[index].path);
            },),],);
  }
}

解决方法

您需要调用 setState 来重建小部件。我建议您阅读this

您可以尝试以下操作:

   var _newFiles = await openFiles(acceptedTypeGroups: [
    pngTypeGroup,]);
  setState(() {
    _files = _newFiles;
  });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。