断言失败:第1702行第12个位置:'center!.parent == this':不正确。

6

出现错误的原因是什么?

在Streambuilder行中加入调试标志后,我的应用程序在到达主屏幕之前会冻结。

body: CustomScrollView(
        slivers: [
          StreamBuilder<QuerySnapshot>(
            stream: FirebaseFirestore.instance
                .collection('posts')
                .limit(10)
                .orderBy('id', descending: true)
                .snapshots(),
            builder: (BuildContext context,
                AsyncSnapshot<QuerySnapshot> dataSnapshot) {
              return !dataSnapshot.hasData
                  ? SliverToBoxAdapter(
                      child: linearProgress(),
                    )
                  : SliverStaggeredGrid.countBuilder(
                      crossAxisCount: 1,
                      staggeredTileBuilder: (val) => StaggeredTile.fit(1),
                      itemBuilder: (context, index) {
                        DataModel model = DataModel.fromJson(
                            dataSnapshot.data!.docs[index].data()
                                as Map<String, dynamic>);
                        return sourceInfo(model, context);
                      },
                      itemCount: dataSnapshot.data!.docs.length);
            },
          ),
        ],
      ),

将相关代码导入到 SliverPadding 中时没有问题。编辑过的代码。

StreamBuilder<QuerySnapshot>(
            stream: FirebaseFirestore.instance
                .collection('posts')
                .limit(10)
                .orderBy('id', descending: true)
                .snapshots(),
            builder: (BuildContext context,
                AsyncSnapshot<QuerySnapshot> dataSnapshot) {
              return !dataSnapshot.hasData
                  ? SliverPadding(
                sliver: SliverToBoxAdapter(
                  child: ColorLoader(),
                ),
                padding: EdgeInsets.all(0),
              )
                  : SliverPadding(
                sliver: SliverStaggeredGrid.countBuilder(
                    crossAxisCount: 1,
                    staggeredTileBuilder: (_) => StaggeredTile.fit(1),
                    itemBuilder: (context, index) {
                      DataModel model = DataModel.fromJson(
                          dataSnapshot.data!.docs[index].data()
                          as Map<String, dynamic>);
                      return sourceInfo(model, context);
                    },
                    itemCount: dataSnapshot.data!.docs.length),
                padding: EdgeInsets.all(0),
              );
            },
          ),

非常好,我的测试代码一直失败,SliverPadding解决了它,谢谢。 - DTodt
1个回答

5
根据这个类似问题的Github线程中的评论,如果被替换的滑板不是第一个,则应该可以正常工作。
因此,一种可能的解决方法是在BodyContent()之前添加空的SliverToBoxAdapter()。
Github线程中还有更多信息和可能的解决方案,建议查看。

你能给一个链接吗? - Semih Yilmaz
1
第一个“this”中有一个超链接,但这里是我提到的评论链接:https://github.com/flutter/flutter/issues/55170#issuecomment-665374034。该线程为:https://github.com/flutter/flutter/issues/55170。 - Lluís Muñoz
我正在附上编辑过的代码。谢谢。 - Semih Yilmaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接