Skip to content

Commit ac57ee8

Browse files
committed
feat(ObserverWidget): make ObserverWidget listenable
1 parent eb21fa4 commit ac57ee8

12 files changed

+1509
-17
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* @Author: LinXunFeng [email protected]
3+
* @Repo: https://github.com/fluttercandies/flutter_scrollview_observer
4+
* @Date: 2024-10-27 17:16:57
5+
*/
6+
7+
import 'dart:collection';
8+
9+
import 'package:flutter/material.dart';
10+
11+
import 'package:scrollview_observer/src/common/models/observe_model.dart';
12+
import 'package:scrollview_observer/src/common/observer_typedef.dart';
13+
14+
class ObserverListenerEntry<M extends ObserveModel>
15+
extends LinkedListEntry<ObserverListenerEntry<M>> {
16+
ObserverListenerEntry({
17+
required this.context,
18+
required this.onObserve,
19+
required this.onObserveAll,
20+
});
21+
22+
/// The context of the listener.
23+
final BuildContext? context;
24+
25+
/// The callback of getting observed result.
26+
final OnObserveCallback<M>? onObserve;
27+
28+
/// The callback of getting observed result map.
29+
final OnObserveAllCallback<M>? onObserveAll;
30+
}

lib/src/common/observer_typedef.dart

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,37 @@
44
* @Date: 2022-12-04 15:57:38
55
*/
66

7+
import 'package:flutter/material.dart';
8+
import 'package:scrollview_observer/src/common/models/observe_model.dart';
79
import 'package:scrollview_observer/src/common/models/observe_scroll_to_index_result_model.dart';
10+
import 'package:scrollview_observer/src/sliver/models/sliver_viewport_observe_model.dart';
811

912
/// Called when the ObserverController prepare to scroll to index with
1013
/// [ObservePrepareScrollToIndexModel].
1114
typedef ObserverOnPrepareScrollToIndex = Future<bool> Function(
1215
ObservePrepareScrollToIndexModel);
1316

17+
/// The callback type of getting observed result for first sliver.
18+
///
19+
/// Corresponds to onObserve.
20+
typedef OnObserveCallback<M extends ObserveModel> = void Function(
21+
M result,
22+
);
23+
24+
/// The callback type of getting observed result map.
25+
///
26+
/// Corresponds to onObserveAll.
27+
typedef OnObserveAllCallback<M extends ObserveModel> = void Function(
28+
Map<BuildContext, M> resultMap,
29+
);
30+
31+
/// The callback type of getting all slivers those are displayed in viewport.
32+
///
33+
/// Corresponds to onObserveViewport.
34+
typedef OnObserveViewportCallback = void Function(
35+
SliverViewportObserveModel result,
36+
);
37+
1438
/// Define type that auto trigger observe.
1539
enum ObserverAutoTriggerObserveType {
1640
scrollStart,

0 commit comments

Comments
 (0)