lorien_chat_list 0.0.3+1
lorien_chat_list: ^0.0.3+1 copied to clipboard
Flutter plugin for creating chat list page which will automatically scroll or maintain current scroll position.
lorien_chat_list #
lorien_chat_list is a package to help build chat pages like Messenger or WhatsUp. The main difference with other packages is the scrolling part - it will scroll automatically on a new message or preserve the current scroll position if the user scrolled up in the list (you can set the treshold for that).
Getting Started #
Add the dependency in pubspec.yaml:
dependencies:
...
lorien_chat_list:: ^0.0.3
Basic Usage #
Import #
import 'package:lorien_chat_list/lorien_chat_list.dart';
Controller #
final ChatListController<int> _controller = ChatListController(initialItems: List<int>.generate(10, (index) => index));
Adding an item to the bottom of the list.
_controller.addToBottom(100);
Adding a range of items to the bottom of the list.
_controller.addRangeToBottom([100, 200]);
Adding an item to the top of the list.
_controller.addToTop(-100);
Adding a range of items to the top of the list.
_controller.addRangeToTop([-100, -200]);
Clearing all items and resetting the controller to its initial state.
_controller.clearAll();
Replacing item by new one.
_controller.replaceItem(oldItem: 0, newItem: 100);
Replacing first item where.
_controller.replaceFirstItemWhere(test: (item) => item == 0, newItem: 100);
Widget #
ChatList(
controller: _controller,
itemBuilder: (item, properties) => Text(
'${item.toString()} - ${properties.toString()}',
),
),
For a more complex usage please see the example.
Customization (optional) #
ChatList #
loadingMoreWidget- widget that is visible at the top of the list while loading more old items (onLoadMoreCallback)onLoadMoreCallback- function called to load more old items. Triggered while reached top edge of the list. Should return bool - true if there are more old messages to load, otherwise false if everything is loaded.scrollController- scroll controllerscrollPhysics- scroll physicspadding- list paddingspacing- vertical spacing between itemsuseJumpTo- whether to use jumpTo instead of animateTo in automatic scrollinganimateToDuration- animateTo duration, defaults to 300 millisecondsfadeInDuration- fade in duration, defaults to 300 millisecondsanimateToCurve- animateTo curve, defaults to Curves.easeInOutfadeInCurve- fade in curve, defaults to Curves.easeInOutbottomEdgeThreshold- threshold for automatic scrolling to a new bottom items, defaults to 0
Contributing #
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
Author #
License #
I would say it's Beerware license - if you find the package useful, you can buy me a beer or a coffee 🍺... but unfortunately it says on the pub.dev that No license was recognized so let's say it is MIT License 🥸.
