google / flutter.widgets

https://pub.dev/packages/flutter_widgets
BSD 3-Clause "New" or "Revised" License
1.37k stars 474 forks source link

Twitchy scroll animation #520

Open subzero911 opened 6 months ago

subzero911 commented 6 months ago

This package gives some crazy scrolling animation (looks like a big number of items has been scrolled, but it's only a few):

https://github.com/google/flutter.widgets/assets/12999702/48ed93f5-d08b-422e-859d-7f26e37c7730

late final ItemScrollController _itemScrollController;

  @override
  void initState() {
    super.initState();
    _itemScrollController = ItemScrollController();
    WidgetsBinding.instance.addPostFrameCallback((_) {
      if (controller.mode == TaskScreenMode.edit) {
        unawaited(
          _itemScrollController.scrollTo(index: controller.icon.index, duration: 400.ms),
        );
      }
    });

ScrollablePositionedList.separated(
                                itemScrollController: _itemScrollController,
                                padding: horizontalPadding,
                                scrollDirection: Axis.horizontal,
                                itemBuilder: (_, index) { ... }

Compare it to the standard library ScrollController animation:

https://github.com/google/flutter.widgets/assets/12999702/66464af5-12af-442b-ae55-44d242551135

 _iconsSc = ScrollController();
    WidgetsBinding.instance.addPostFrameCallback((_) {
      if (controller.mode == TaskScreenMode.edit) {
        _iconsSc.animateTo(52.0 * controller.icon.index, duration: 400.ms, curve: Curves.linear);
      }
    });

                           ListView.separated(
                                controller: _iconsSc,
...