PageView.Builder 错误:ScrollController 附加到多个滚动视图

时间:2021-07-14 07:18:55

标签: flutter dart

我正在使用滑动屏幕,您可以左右滑动,所以如果单个用户有 5 张图片让我在我点击后一张一张地显示。我正在将 pageView.Builder 与 streamBuilder 一起使用,但是如果 streamBuilder 获取图片列表并让我移动到 pageView 中的下一个图像,我会不断收到

处理手势时抛出以下断言: ScrollController 附加到多个滚动视图。 'package:flutter/src/widgets/scroll_controller.dart': 失败的断言:第 109 行 pos 12:'_positions.length == 1'

这是我的代码:

 Expanded(
                              child: Container(
                                height: MediaQuery.of(context).size.height * 10,
                                child: TinderSwapCard(
                                  swipeUp: true,
                                  swipeDown: true,
                                  orientation: AmassOrientation.BOTTOM,
                                  totalNum: userData.length,
                                  stackNum: 3,
                                  swipeEdge: 6.0,
                                  maxWidth:
                                      MediaQuery.of(context).size.width * 0.9,
                                  maxHeight:
                                      MediaQuery.of(context).size.height * 0.9,
                                  minWidth:
                                      MediaQuery.of(context).size.width * 0.8,
                                  minHeight:
                                      MediaQuery.of(context).size.width * 0.8,
                                  allowVerticalMovement: true,
                                  cardBuilder: (context, index) => Container(
                                    child: Stack(
                                      fit: StackFit.passthrough,
                                      alignment: Alignment.center,
                                      children: [
                                        StreamBuilder(
                                          stream: firestore
                                              .collection('Image')
                                              .doc(userData[index].id)
                                              .collection('Photos')
                                              .orderBy('timestap')
                                              .snapshots(),
                                          builder: (context, snapsoht) {
                                            if (!snapsoht.hasData) {
                                              return Center(
                                                child:
                                                    CircularProgressIndicator(),
                                              );
                                            }
                                            return PageView.builder(
                                                pageSnapping: true,
                                                physics:
                                                    NeverScrollableScrollPhysics(),
                                                controller: _pageController,
                                                itemCount:
                                                    snapsoht.data.docs.length,
                                                itemBuilder: (ctx, index) {
                                                  return GestureDetector(
                                                    onTap: () {
                                                      _pageController.jumpToPage(
                                                          1); // for regular jump
                                                      
                                                    },
                                                    
                                                    child: Container(
                                                      child: Card(
                                                        semanticContainer: true,
                                                        clipBehavior: Clip
                                                            .antiAliasWithSaveLayer,
                                                        child: Image(
                                                          image: NetworkImage(
                                                            snapsoht.data
                                                                    .docs[index]
                                                                    .data()[
                                                                'picture'],
                                                          ),
                                                          fit: BoxFit.fill,
                                                        ),
                                                      ),
                                                    ),
                                                  );
                                                });
                                          },
                                        ),
                                        if (direction.value <= -1)
                                          Padding(
                                            padding: const EdgeInsets.all(15.0),
                                            child: Align(
                                              alignment: Alignment.topRight,
                                              child: Padding(
                                                padding: EdgeInsets.all(8.0),
                                                child: Container(
                                                    height: 100,
                                                    width: 100,
                                                    child: Image.asset(
                                                        'assets/Nope.png')),
                                              ),
                                            ),
                                          ),
                                        if (direction.value >= 1)
                                          Padding(
                                            padding: const EdgeInsets.all(15.0),
                                            child: Align(
                                              alignment: Alignment.topLeft,
                                              child: Padding(
                                                padding: EdgeInsets.all(8.0),
                                                child: Container(
                                                    height: 100,
                                                    width: 100,
                                                    child: Image.asset(
                                                        'assets/Like.png')),
                                              ),
                                            ),
                                          ),

0 个答案:

没有答案