anchor.diff:  const double _kMinIndicatorOpacity = 0.0;
   const double _kMaxIndicatorOpacity = 0.25;
   const Duration _kIndicatorHideDuration = const Duration(milliseconds: 200);
  -const Duration _kIndicatorTimeoutDuration = const Duration(seconds: 1);
  +const Duration _kIndicatorTimeoutDuration = const Duration(milliseconds: 500);
   final Tween<double> _kIndicatorOpacity = new Tween<double>(begin: 0.0, end: 0.3);
   
   class _Painter extends CustomPainter {
  
positive.code:   void _onScrollEnded(ScrollableState scrollable) {
      _updateState(scrollable);
      _hide();
    }
  
    bool _handleScrollNotification(ScrollNotification notification) {
  
negative.code: 
    void _onScrollUpdated(ScrollableState scrollable) {
      final double value = scrollable.scrollOffset;
      if (_isOverscroll(value)) {
        _refreshHideTimer();
        // Hide the indicator as soon as user starts scrolling in the reverse direction of overscroll.
        if (_isReverseScroll(value)) {
          _hide();
        } else {
          // Changing the animation's value causes an implicit setState().
          _extentAnimation.value = value < _minScrollOffset ? _minScrollOffset - value : value - _maxScrollOffset;
        }
      }
      _updateState(scrollable);
    }
  