flutter 无法查看容器内的pdf文件- RenderConstrainedOverflowBox错误

guykilcj  于 2022-12-05  发布在  Flutter
关注(0)|答案(1)|浏览(109)

我试图可视化一个来自StreamBuilder的容器内的pdf文件,总是得到以下错误:RenderConstrainedOverflowBox object was given an infinite size during layout.
我已经尝试将listView Package 在一个扩展的小部件中,但仍然得到一个不同的错误,尝试修复容器高度,但仍然得到错误。
下面是我代码:

class MyFile extends StatefulWidget {
  const MyFile({super.key});

  @override
  State<MyFile> createState() => _MyFileState();
}

class _MyFileState extends State<MyFile> {
  User? user = FirebaseAuth.instance.currentUser;
  PdfViewerController? pdfViewerController;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        height: 150,
        child: SingleChildScrollView(
          child: StreamBuilder(
              stream: FirebaseFirestore.instance
                  .collection('cartesP')
                  .where('userId', isEqualTo: user!.uid)
                  .limit(1)
                  .snapshots(),
              builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {
                if (snapshot.hasData) {
                  return ListView.builder(
                      scrollDirection: Axis.vertical,
                      shrinkWrap: true,
                      itemCount: snapshot.data!.docs.length,
                      itemBuilder: (context, index) {
                        QueryDocumentSnapshot x = snapshot.data!.docs[index];
                        return SfPdfViewer.network(
                          x['fileUrl'],
                          controller: pdfViewerController,
                        );
                      });
                }
                return Center(
                  child: CircularProgressIndicator(),
                );
              }),
        ),
      ),
    );
  }
}

我也尝试过不同的解决方案,从线程堆栈溢出,但没有一个为我工作!我会感谢任何形式的帮助!

yhuiod9q

yhuiod9q1#

你不需要使用SingleChildScrollView来 Package ListView,因为ListView本身可以滚动。
您可以尝试设置ListView子级高度

itemBuilder: (context, index) {
  QueryDocumentSnapshot x = snapshot.data!.docs[index];
  return Container(
    height: 150,
    child: SfPdfViewer.network(
            x['fileUrl'],
            controller: pdfViewerController,
          ),
      );
});

相关问题