Flutter: OnTap не работает при прокрутке Listview - PullRequest
0 голосов
/ 07 февраля 2020

Я пытался создать выделенный виджет, я использовал автоматическую прокрутку Listview, но если я добавляю событие щелчка к тексту при прокрутке списка, оно не активируется. Я знаю, что это должно быть скользящая проблема, но я не знаю как это решить Вот код это виджет Marquee.

  import 'dart:async';
    import 'package:flutter/material.dart';
    import 'package:flutter/widgets.dart';

    class MarqueeContinuous extends StatefulWidget {
      final Widget child;
      final Duration duration;
      final double stepOffset;

      MarqueeContinuous(
          {Key key,
          this.child,
          this.duration = const Duration(seconds: 3),
          this.stepOffset = 50.0})
          : super(key: key);

      @override
      _MarqueeContinuousState createState() => _MarqueeContinuousState();
    }

    class _MarqueeContinuousState extends State<MarqueeContinuous> {
      ScrollController _controller;
      Timer _timer;
      double _offset = 0.0;

      @override
      void initState() {
        super.initState();
        _controller = ScrollController(initialScrollOffset: _offset);
        _timer = Timer.periodic(widget.duration, (timer) {
          double newOffset = _controller.offset + widget.stepOffset;

          if (newOffset != _offset) {
            _offset = newOffset;
            _controller.animateTo(_offset,
                duration: widget.duration, curve: Curves.linear);
          }
        });
      }

      @override
      void dispose() {
        _timer.cancel();
        _controller.dispose();
        super.dispose();
      }

      @override
      Widget build(BuildContext context) {
        return ListView.builder(
                    physics: NeverScrollableScrollPhysics(),
                    scrollDirection: Axis.horizontal,
                    controller: _controller,
                    addAutomaticKeepAlives: false,
                    itemBuilder: (context, index) {
                      return widget.child;
                    });
      }
    }
...