nested_scroll_controller 1.0.0 copy "nested_scroll_controller: ^1.0.0" to clipboard
nested_scroll_controller: ^1.0.0 copied to clipboard

A ScrollController specifically for controlling a NestedScrollView.

nested_scroll_controller #

Pub Version

A widget used to allow for controlling a NestedScrollView like it was a regular scroll view.
This is a small library which empowers you to control the offset of a NestedScrollView just like you would a regular scroll view:

  • animate to an offset or an index
  • jump to an offset or an index
  • add listeners to the total offset

Usage #

See example.
To utilize [NestedScrollController] there are five main steps:

    /// 1. Create the [NestedScrollController].
    final NestedScrollController nestedScrollController = NestedScrollController();
    NestedScrollView(
        /// 2. Set the controller of the [NestedScrollView] to the nestedScrollController.
        controller: nestedScrollController,
        /// 3. Wrap the body of the [NestedScrollView] in a [LayoutBuilder].
        ///
        /// NOTE: if [nestedScrollController.centerScroll] is false (defaults to true),
        ///       then [constraints] is not needed and a [Builder] can be used instead of
        ///       the [LayoutBuilder].
        body: LayoutBuilder(
            builder: (context, constraints) {
                /// 4. Enable scrolling and center scrolling.
                ///
                /// NOTE: Only call [enableCenterScroll] if 
                ///       [nestedScrollController.centerScroll] is true (defaults to true).
                nestedScrollController.enableScroll(context);
                nestedScrollController.enableCenterScroll(constraints);
                ListTile(
                    title: Text('Item $index'),
                    onTap: () {
                    /// 5. Use the [NestedScrollController] anywhere (after step 4).
                        nestedScrollController.nestedAnimateToIndex(
                            index,
                            itemExtent: itemExtent,
                        );
                    }
                );
                                      

Ofcourse, you can add/remove listeners just like a regular scroll controller:

    nestedScrollController.addListener(() {
      print("Outer: ${nestedScrollController.offset}");
      print("Inner: ${nestedScrollController.innerOffset}");
      print("Total: ${nestedScrollController.totalOffset}");
    });

Result #

See the example result here.

9
likes
120
pub points
81%
popularity

Publisher

unverified uploader

A ScrollController specifically for controlling a NestedScrollView.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

flutter

More

Packages that depend on nested_scroll_controller