scrollToTarget static method

void scrollToTarget({
  1. required GlobalKey<State<StatefulWidget>> key,
  2. required ScrollController controller,
  3. double offset = 0.0,
  4. dynamic duration = 300,
})

Implementation

static void scrollToTarget({required final GlobalKey key, required final ScrollController controller, final double offset = 0.0, final duration =300}) {
  // Scrollable.ensureVisible(key.currentContext!, duration: Duration(milliseconds: duration));
  WidgetsBinding.instance.addPostFrameCallback((_) {
    final renderBox = key.currentContext!.findRenderObject() as RenderBox;
    final targetWidgetOffset = renderBox.localToGlobal(Offset.zero);
    final scrollPosition = controller.offset;
    final desiredPosition = targetWidgetOffset.dy - offset;
    controller.animateTo(
      // Scrollable.ensureBoxOffset(key.currentContext) - offset,
      desiredPosition - scrollPosition,
      duration: Duration(milliseconds: duration),
      curve: Curves.easeInOut,
    );
  });
}