chore: move scrollable positioned list directory
This commit is contained in:
@@ -4,7 +4,7 @@ analyzer:
|
|||||||
exclude:
|
exclude:
|
||||||
- packages/*/lib/**/*.g.dart
|
- packages/*/lib/**/*.g.dart
|
||||||
- packages/*/lib/src/emoji/**
|
- packages/*/lib/src/emoji/**
|
||||||
- packages/*/lib/src/scrollable_positioned_list/**
|
- packages/*/lib/scrollable_positioned_list/**
|
||||||
- packages/*/lib/**/*.freezed.dart
|
- packages/*/lib/**/*.freezed.dart
|
||||||
|
|
||||||
linter:
|
linter:
|
||||||
|
|||||||
+2
-2
@@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
|
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/item_positions_notifier.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/item_positions_notifier.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/scrollable_positioned_list.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/scrollable_positioned_list.dart';
|
||||||
|
|
||||||
/// Provides a listenable iterable of [itemPositions] of items that are on
|
/// Provides a listenable iterable of [itemPositions] of items that are on
|
||||||
/// screen and their locations.
|
/// screen and their locations.
|
||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
|
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/item_positions_listener.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/item_positions_listener.dart';
|
||||||
|
|
||||||
/// Internal implementation of [ItemPositionsListener].
|
/// Internal implementation of [ItemPositionsListener].
|
||||||
class ItemPositionsNotifier implements ItemPositionsListener {
|
class ItemPositionsNotifier implements ItemPositionsListener {
|
||||||
+5
-5
@@ -8,11 +8,11 @@ import 'package:flutter/rendering.dart';
|
|||||||
import 'package:flutter/scheduler.dart';
|
import 'package:flutter/scheduler.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
|
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/element_registry.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/element_registry.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/indexed_key.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/indexed_key.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/item_positions_listener.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/item_positions_listener.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/item_positions_notifier.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/item_positions_notifier.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/scroll_view.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/scroll_view.dart';
|
||||||
|
|
||||||
/// A list of widgets similar to [ListView], except scroll control
|
/// A list of widgets similar to [ListView], except scroll control
|
||||||
/// and position reporting is based on index rather than pixel offset.
|
/// and position reporting is based on index rather than pixel offset.
|
||||||
+1
-1
@@ -6,7 +6,7 @@ import 'package:flutter/gestures.dart';
|
|||||||
import 'package:flutter/rendering.dart';
|
import 'package:flutter/rendering.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
|
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/viewport.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/viewport.dart';
|
||||||
|
|
||||||
/// {@template custom_scroll_view}
|
/// {@template custom_scroll_view}
|
||||||
/// A version of [CustomScrollView] that does not constrict the extents
|
/// A version of [CustomScrollView] that does not constrict the extents
|
||||||
+4
-4
@@ -10,10 +10,10 @@ import 'package:flutter/foundation.dart';
|
|||||||
import 'package:flutter/scheduler.dart';
|
import 'package:flutter/scheduler.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
|
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/item_positions_listener.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/item_positions_listener.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/item_positions_notifier.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/item_positions_notifier.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/positioned_list.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/positioned_list.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/post_mount_callback.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/post_mount_callback.dart';
|
||||||
|
|
||||||
/// Number of screens to scroll when scrolling a long distance.
|
/// Number of screens to scroll when scrolling a long distance.
|
||||||
const int _screenScrollCount = 2;
|
const int _screenScrollCount = 2;
|
||||||
@@ -7,10 +7,10 @@ import 'package:flutter/foundation.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:jiffy/jiffy.dart';
|
import 'package:jiffy/jiffy.dart';
|
||||||
import 'package:rxdart/rxdart.dart';
|
import 'package:rxdart/rxdart.dart';
|
||||||
|
import 'package:stream_chat_flutter/scrollable_positioned_list/scrollable_positioned_list.dart';
|
||||||
import 'package:stream_chat_flutter/src/extension.dart';
|
import 'package:stream_chat_flutter/src/extension.dart';
|
||||||
import 'package:stream_chat_flutter/src/info_tile.dart';
|
import 'package:stream_chat_flutter/src/info_tile.dart';
|
||||||
import 'package:stream_chat_flutter/src/message_widget.dart';
|
import 'package:stream_chat_flutter/src/message_widget.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/scrollable_positioned_list.dart';
|
|
||||||
import 'package:stream_chat_flutter/src/stream_svg_icon.dart';
|
import 'package:stream_chat_flutter/src/stream_svg_icon.dart';
|
||||||
import 'package:stream_chat_flutter/src/swipeable.dart';
|
import 'package:stream_chat_flutter/src/swipeable.dart';
|
||||||
import 'package:stream_chat_flutter/src/system_message.dart';
|
import 'package:stream_chat_flutter/src/system_message.dart';
|
||||||
|
|||||||
@@ -1,53 +0,0 @@
|
|||||||
# scrollable_positioned_list
|
|
||||||
|
|
||||||
A flutter list that allows scrolling to a specific item in the list.
|
|
||||||
|
|
||||||
Also allows determining what items are currently visible.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
A `ScrollablePositionedList` works much like the builder version of `ListView`
|
|
||||||
except that the list can be scrolled or jumped to a specific item.
|
|
||||||
|
|
||||||
### Example
|
|
||||||
|
|
||||||
A `ScrollablePositionedList` can be created with:
|
|
||||||
|
|
||||||
```dart
|
|
||||||
final ItemScrollController itemScrollController = ItemScrollController();
|
|
||||||
final ItemPositionsListener itemPositionsListener = ItemPositionsListener.create();
|
|
||||||
|
|
||||||
ScrollablePositionedList.builder(
|
|
||||||
itemCount: 500,
|
|
||||||
itemBuilder: (context, index) => Text('Item $index'),
|
|
||||||
itemScrollController: itemScrollController,
|
|
||||||
itemPositionsListener: itemPositionsListener,
|
|
||||||
);
|
|
||||||
```
|
|
||||||
|
|
||||||
One then can scroll to a particular item with:
|
|
||||||
|
|
||||||
```dart
|
|
||||||
itemScrollController.scrollTo(
|
|
||||||
index: 150,
|
|
||||||
duration: Duration(seconds: 2),
|
|
||||||
curve: Curves.easeInOutCubic);
|
|
||||||
```
|
|
||||||
|
|
||||||
or jump to a particular item with:
|
|
||||||
|
|
||||||
```dart
|
|
||||||
itemScrollController.jumpTo(index: 150);
|
|
||||||
```
|
|
||||||
|
|
||||||
One can monitor what items are visible on screen with:
|
|
||||||
|
|
||||||
```dart
|
|
||||||
itemPositionsListener.itemPositions.addListener(() => ...);
|
|
||||||
```
|
|
||||||
|
|
||||||
A full example can be found in the example folder.
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
This is not an officially supported Google product.
|
|
||||||
+1
-1
@@ -7,7 +7,7 @@ import 'dart:ui';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:pedantic/pedantic.dart';
|
import 'package:pedantic/pedantic.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/scrollable_positioned_list.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/scrollable_positioned_list.dart';
|
||||||
|
|
||||||
const screenHeight = 400.0;
|
const screenHeight = 400.0;
|
||||||
const screenWidth = 400.0;
|
const screenWidth = 400.0;
|
||||||
+3
-3
@@ -4,9 +4,9 @@
|
|||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/scrollable_positioned_list.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/scrollable_positioned_list.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/item_positions_notifier.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/item_positions_notifier.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/positioned_list.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/positioned_list.dart';
|
||||||
|
|
||||||
const screenHeight = 400.0;
|
const screenHeight = 400.0;
|
||||||
const screenWidth = 400.0;
|
const screenWidth = 400.0;
|
||||||
+3
-3
@@ -4,9 +4,9 @@
|
|||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/scrollable_positioned_list.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/scrollable_positioned_list.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/item_positions_notifier.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/item_positions_notifier.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/positioned_list.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/positioned_list.dart';
|
||||||
|
|
||||||
const screenHeight = 400.0;
|
const screenHeight = 400.0;
|
||||||
const screenWidth = 400.0;
|
const screenWidth = 400.0;
|
||||||
+1
-1
@@ -7,7 +7,7 @@ import 'dart:ui';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:pedantic/pedantic.dart';
|
import 'package:pedantic/pedantic.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/scrollable_positioned_list.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/scrollable_positioned_list.dart';
|
||||||
|
|
||||||
const screenHeight = 400.0;
|
const screenHeight = 400.0;
|
||||||
const screenWidth = 400.0;
|
const screenWidth = 400.0;
|
||||||
+2
-2
@@ -10,8 +10,8 @@ import 'package:flutter/rendering.dart';
|
|||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:pedantic/pedantic.dart';
|
import 'package:pedantic/pedantic.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/scrollable_positioned_list.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/scrollable_positioned_list.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/scroll_view.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/scroll_view.dart';
|
||||||
|
|
||||||
const screenHeight = 400.0;
|
const screenHeight = 400.0;
|
||||||
const screenWidth = 400.0;
|
const screenWidth = 400.0;
|
||||||
+3
-3
@@ -4,9 +4,9 @@
|
|||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/scrollable_positioned_list.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/scrollable_positioned_list.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/item_positions_notifier.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/item_positions_notifier.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/positioned_list.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/positioned_list.dart';
|
||||||
|
|
||||||
const screenHeight = 400.0;
|
const screenHeight = 400.0;
|
||||||
const screenWidth = 400.0;
|
const screenWidth = 400.0;
|
||||||
+2
-2
@@ -7,8 +7,8 @@ import 'dart:ui';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:pedantic/pedantic.dart';
|
import 'package:pedantic/pedantic.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/scrollable_positioned_list.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/scrollable_positioned_list.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/src/scroll_view.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/src/scroll_view.dart';
|
||||||
|
|
||||||
const screenHeight = 400.0;
|
const screenHeight = 400.0;
|
||||||
const screenWidth = 400.0;
|
const screenWidth = 400.0;
|
||||||
+1
-1
@@ -7,7 +7,7 @@ import 'dart:ui';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:pedantic/pedantic.dart';
|
import 'package:pedantic/pedantic.dart';
|
||||||
import 'package:stream_chat_flutter/src/scrollable_positioned_list/scrollable_positioned_list.dart';
|
import 'package:stream_chat_flutter/scrollable_positioned_list/scrollable_positioned_list.dart';
|
||||||
|
|
||||||
const screenHeight = 400.0;
|
const screenHeight = 400.0;
|
||||||
const screenWidth = 400.0;
|
const screenWidth = 400.0;
|
||||||
Reference in New Issue
Block a user