0

我遇到过这个问题,

  • _openFile我使用此功能读取文件。阅读后,我想使用提取的数据更新 ListView。但是我找不到在执行_openFile.

有什么帮助吗?

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);
            },
          ),
        ),
      ],
    );
  }
}
4

1 回答 1

1

您需要调用 setState 才能重建小部件。我建议您阅读内容。

您可以尝试以下方法:

   var _newFiles = await openFiles(acceptedTypeGroups: [
    pngTypeGroup,
  ]);
  setState(() {
    _files = _newFiles;
  });
于 2021-01-05T18:18:39.973 回答