diff --git a/lib/src/loadmore_widget.dart b/lib/src/loadmore_widget.dart index 121261e..9b2f576 100644 --- a/lib/src/loadmore_widget.dart +++ b/lib/src/loadmore_widget.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:draggable_scrollbar/draggable_scrollbar.dart'; import 'package:flutter/material.dart'; /// return true is refresh success @@ -71,9 +72,37 @@ class _LoadMoreState extends State { if (child is SliverList) { return _buildSliverList(child as SliverList); } + if (child is DraggableScrollbar) { + return _buildDraggableScrollbar(child as DraggableScrollbar) ?? Container(); + } return child; } + /// build [ListView] which is wrapped inside [DraggableScrollbar] + Widget? _buildDraggableScrollbar(DraggableScrollbar scrollbar) { + final child = scrollbar.child; + if (child is ListView) { + final listView = _buildListView(child); + if (listView != null && listView is ListView) { + return DraggableScrollbar( + key: scrollbar.key, + alwaysVisibleScrollThumb: scrollbar.alwaysVisibleScrollThumb, + backgroundColor: scrollbar.backgroundColor, + controller: scrollbar.controller, + heightScrollThumb: scrollbar.heightScrollThumb, + padding: scrollbar.padding, + scrollThumbBuilder: scrollbar.scrollThumbBuilder, + labelTextBuilder: scrollbar.labelTextBuilder, + labelConstraints: scrollbar.labelConstraints, + scrollbarAnimationDuration: scrollbar.scrollbarAnimationDuration, + scrollbarTimeToFade: scrollbar.scrollbarTimeToFade, + child: listView, + ); + } + } + return null; + } + /// if call the method, then the future is not null /// so, return a listview and item count + 1 Widget? _buildListView(ListView listView) { diff --git a/pubspec.lock b/pubspec.lock index 2c48ae8..7abd617 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,51 +5,58 @@ packages: dependency: transitive description: name: async - url: "https://pub.flutter-io.cn" + sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.10.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.flutter-io.cn" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.flutter-io.cn" + sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + url: "https://pub.dev" source: hosted - version: "1.1.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.flutter-io.cn" - source: hosted - version: "1.2.0" + version: "1.2.1" clock: dependency: transitive description: name: clock - url: "https://pub.flutter-io.cn" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.flutter-io.cn" + sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.17.0" + draggable_scrollbar: + dependency: "direct main" + description: + name: draggable_scrollbar + sha256: a906e27fc1ee056e2942d66989dd0cb5b70a361e7d44af566cfa1b584054eac3 + url: "https://pub.dev" + source: hosted + version: "0.1.0" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.flutter-io.cn" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.1" flutter: dependency: "direct main" description: flutter @@ -60,27 +67,46 @@ packages: description: flutter source: sdk version: "0.0.0" + js: + dependency: transitive + description: + name: js + sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + url: "https://pub.dev" + source: hosted + version: "0.6.5" matcher: dependency: transitive description: name: matcher - url: "https://pub.flutter-io.cn" + sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + url: "https://pub.dev" source: hosted - version: "0.12.10" + version: "0.12.13" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" + source: hosted + version: "0.2.0" meta: dependency: transitive description: name: meta - url: "https://pub.flutter-io.cn" + sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.8.0" path: dependency: transitive description: name: path - url: "https://pub.flutter-io.cn" + sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.8.2" sky_engine: dependency: transitive description: flutter @@ -90,58 +116,58 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.flutter-io.cn" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.flutter-io.cn" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.flutter-io.cn" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.flutter-io.cn" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.flutter-io.cn" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.flutter-io.cn" - source: hosted - version: "0.2.19" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.flutter-io.cn" + sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "0.4.16" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.flutter-io.cn" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.4" sdks: - dart: ">=2.12.0-0.0 <3.0.0" + dart: ">=2.18.0 <4.0.0" flutter: ">=2.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 019263f..c747d6c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -10,6 +10,7 @@ environment: flutter: ">=2.0.0" dependencies: + draggable_scrollbar: ^0.1.0 flutter: sdk: flutter