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.2
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();
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 🥸.
