I managed to do by create a custom widget that folk from flutter/lib/src/material/refresh_indicator.dart. and modify the following code (p.s i only added the variable initialDisplacement)
double initialDisplacement = 100.0;
return Stack(
children: <Widget>[
child,
if (_mode != null) Positioned(
top: _isIndicatorAtTop ? initialDisplacement : null,
bottom: !_isIndicatorAtTop ? 0.0 : null,
left: 0.0,
right: 0.0,
child: SizeTransition(
axisAlignment: _isIndicatorAtTop ? 1.0 : -1.0,
sizeFactor: _positionFactor, // this is what brings it down
child: Container(
padding: _isIndicatorAtTop
? EdgeInsets.only(top: widget.displacement)
: EdgeInsets.only(bottom: widget.displacement),
alignment: _isIndicatorAtTop
? Alignment.topCenter
: Alignment.bottomCenter,
child: ScaleTransition(
scale: _scaleFactor,
child: AnimatedBuilder(
animation: _positionController,
builder: (BuildContext context, Widget child) {
return RefreshProgressIndicator(
semanticsLabel: widget.semanticsLabel ?? MaterialLocalizations.of(context).refreshIndicatorSemanticLabel,
semanticsValue: widget.semanticsValue,
value: showIndeterminateIndicator ? null : _value.value,
valueColor: _valueColor,
backgroundColor: widget.backgroundColor,
strokeWidth: widget.strokeWidth,
);
},
),
),
),
),
),
],
);