ListView的水平滚动按钮问题

时间:2020-09-29 09:55:49

标签: flutter flutter-layout

嗨,我正在从事Flutter项目 我的Flutter ListView按钮出现问题,所以现在看起来和我想要的一样,但按我的意愿行不通

enter image description here

因此,如果您单击上面的图像,则出现勾号覆盖,这是我需要setState()的原因,但是现在要获取该勾号是问题,我需要轻按两次,我不知道如何解决此问题问题,或者是否有任何窗口小部件按钮在onclick叠加层上我检查了其中的大多数,但其中的大多数却不起作用或我不知道?在容器内部,我有14个相同的列,其编号为1-14,我将使其更紧凑,但首先我需要解决此问题,这里是代码。

`bool _pressed = false;
 int _btnIndex = 0;
 TabBarView(children: <Widget>[
    Container(
      height: 300,
      // padding: EdgeInsets.only(bottom: 10),
      padding: EdgeInsets.all(10),
      color: Colors.white,
      child: ListView(
      padding: EdgeInsets.all(6),
      scrollDirection: Axis.horizontal,
      children: <Widget>[
        Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.spaceAround,
          children: <Widget>[
            Container(
              alignment: Alignment.center,
              child: Padding(
                padding: const EdgeInsets.all(6.0),
                child: Material(
                  elevation: 4.0,
                  shape: CircleBorder(),
                  clipBehavior: Clip.hardEdge,
                  color: !_pressed && _btnIndex == 1
                      ? Colors.red
                      : Colors.white54,
                  child: Ink.image(
                    image: AssetImage('assets/images/colosseum.jpg'),
                    fit: BoxFit.cover,
                    colorFilter: _pressed && _btnIndex == 1
                        ? ColorFilter.mode(
                            Colors.black87,
                            BlendMode.darken,
                          )
                        : null,
                    width: 60.0,
                    height: 60.0,
                    child: InkWell(
                      // splashColor: Colors.green,
                      focusColor: Colors.red,
                      highlightColor: Colors.white60,
                      // overlayColor: MaterialStateColor(),
                      child: _pressed && _btnIndex == 1
                          ? Icon(
                              Icons.check,
                              color: Colors.white,
                            )
                          : null,
                      // onDoubleTap: () {
                      //   _pressed = !_pressed;
                      // },
                      onTap: () {
                        setState(() {
                          _pressed = !_pressed;
                          _btnIndex = 1;
                        });
                        // _pressed = true;
                        print('I tapped no 1');
                      },
                    ),
                  ),
                ),
              ),
            ),
            Container(
              alignment: Alignment.center,
              child: Text('10'),
            ),
          ],
        ),
      ]),
     ),
  ]);`

2 个答案:

答案 0 :(得分:0)

嘿,@ user2572661可能是您触摸容器时可能无法交互的原因,因为您可以使用onTap:并在水平滚动方向上使用,也可以使用小部件GestureDetector()来更改状态或逻辑致电for i in range(0,10): player.append(str(input())) 。虽然可以请您分享更多代码,以便我理解并解决您的问题。

答案 1 :(得分:0)

为此只需使用Listview.builder 并在Builder内部使用GestureDetector更改所选项目

首先获取一个变量以跟踪所选索引

Identify and stop the process that's listening on port 8080 or configure this application to listen on another port.

然后创建一个listView Builder窗口小部件

int selected;

仅编写用于在isSelected为true时在YourWidget图像中显示刻度的逻辑

相关问题