@@ -248,6 +248,43 @@ class RenderCustomPaintOrderViewport extends RenderViewport {
248248 }
249249}
250250
251+ /// A version of [ScrollPosition] adapted for the Zulip message list,
252+ /// used by [MessageListScrollController] .
253+ class MessageListScrollPosition extends ScrollPositionWithSingleContext {
254+ MessageListScrollPosition ({
255+ required super .physics,
256+ required super .context,
257+ super .initialPixels,
258+ super .keepScrollOffset,
259+ super .oldPosition,
260+ super .debugLabel,
261+ });
262+ }
263+
264+ /// A version of [ScrollController] adapted for the Zulip message list.
265+ class MessageListScrollController extends ScrollController {
266+ MessageListScrollController ({
267+ super .initialScrollOffset,
268+ super .keepScrollOffset,
269+ super .debugLabel,
270+ super .onAttach,
271+ super .onDetach,
272+ });
273+
274+ @override
275+ ScrollPosition createScrollPosition (ScrollPhysics physics,
276+ ScrollContext context, ScrollPosition ? oldPosition) {
277+ return MessageListScrollPosition (
278+ physics: physics,
279+ context: context,
280+ initialPixels: initialScrollOffset,
281+ keepScrollOffset: keepScrollOffset,
282+ oldPosition: oldPosition,
283+ debugLabel: debugLabel,
284+ );
285+ }
286+ }
287+
251288/// A version of [CustomScrollView] adapted for the Zulip message list.
252289///
253290/// This lets us customize behavior in ways that aren't currently supported
0 commit comments