【问题标题】:GestureDetector not working under IgnorePointerGestureDetector 在 IgnorePointer 下不起作用
【发布时间】:2020-08-06 09:48:09
【问题描述】:

我在SingleChildScrollView 下有以下代码。我使用了IgnorePointer,所以我可以使滚动工作。但现在我无法让GestureDetector 工作,因为IgnorePointer 正在阻止它。

当我删除 IgnorePointer 时,GestureDetector 工作。我可以使用其他方式使滚动工作,或者使GestureDetectorIgnorePointer 内工作吗?

IgnorePointer(
                child:
                  Padding(
                padding: EdgeInsets.fromLTRB(10, 10, 10, 10),
                child: Container(

        child: FutureBuilder(
          future: fetchfiveWpPosts(),
          builder: (context,snapshot){
            if(snapshot.hasData){
                return ListView.builder(
                  itemCount: snapshot.data.length,
                  shrinkWrap: true,
                  scrollDirection: Axis.vertical,
                  itemBuilder: (BuildContext context, int index){
                    Map wppost = snapshot.data[index];
                    var imageurl = wppost['acf']['store_logo']['url'];

                  return GestureDetector(
                      onTap: () {
                                      Navigator.of(context).push(
                                          MaterialPageRoute(
                                              builder: (_) => Detail()));
                                    },
                    child:  Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Card(

                      child: 
                       Column(


                        crossAxisAlignment: CrossAxisAlignment.stretch,
                        mainAxisSize: MainAxisSize.min,

                        children: <Widget>[
                          //Image.network(imageurl),
                          Container(
                            //height: 170,
                            child: 

                            FadeInImage.assetNetwork(placeholder: 'assets/loading.gif', image: imageurl,
                            height: 170,
                            fit: BoxFit.fill,),
                          ),


                          Padding(
                          padding: EdgeInsets.fromLTRB(10, 5, 5, 10),
                          child: Text(wppost['title']['rendered'], style: TextStyle(fontSize: 25, fontWeight: FontWeight.w600, color: Colors.blueAccent,),),
                          ),


                        ],
                      ),

                  ),
                    ),
                  );

                  }, 
                );
            }
            return CircularProgressIndicator();
          },


      ),
                ),
              ),
                ),

【问题讨论】:

  • 所以不要使用IgnorePointer - 我不知道你为什么这样做
  • 如果我删除 IgnorePointer,滚动不起作用。整个代码在 SingleChildScrollView 下。
  • 不,SingleChildScrollView 在没有 IgnorePointer 的情况下也可以正常工作 - 如果您的情况是 ListView.builderSingleChildScrollView 内,那么您必须使用不同的方法,因为 ListView.builder 在那里毫无意义跨度>
  • 好的,谢谢。你能提出一些建议吗?我是 Flutter 的新手

标签: flutter


【解决方案1】:

我在 Stackoverflow Why only the content in ListView.builder() is not scrolling? 上得到了我的问题的答案

您需要使 ListView.builder 不可滚动,以便 SingleChildScrollView 可以滚动。您可以通过将这两个属性之一设置为 ListView.builder 来实现:

physics: NeverScrollableScrollPhysics()

primary: false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 2023-01-25
    • 2020-08-17
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多