mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-04-24 15:56:05 +00:00
Fixed lazy loading logs
This commit is contained in:
parent
87bcdd337f
commit
bc7cb4ccd4
1 changed files with 75 additions and 71 deletions
|
@ -31,8 +31,6 @@ class Logs extends StatefulWidget {
|
|||
}
|
||||
|
||||
class _LogsState extends State<Logs> {
|
||||
late ScrollController scrollController;
|
||||
|
||||
bool showDivider = true;
|
||||
|
||||
Log? selectedLog;
|
||||
|
@ -65,25 +63,26 @@ class _LogsState extends State<Logs> {
|
|||
}
|
||||
}
|
||||
|
||||
void scrollListener() {
|
||||
bool scrollListener(ScrollUpdateNotification scrollNotification) {
|
||||
final logsProvider = Provider.of<LogsProvider>(context, listen: false);
|
||||
|
||||
if (scrollController.position.extentAfter < 500 && logsProvider.isLoadingMore == false) {
|
||||
if (scrollNotification.metrics.extentAfter < 500 && logsProvider.isLoadingMore == false) {
|
||||
logsProvider.fetchLogs(loadingMore: true);
|
||||
}
|
||||
if (scrollController.position.pixels > 0) {
|
||||
if (scrollNotification.metrics.pixels > 0) {
|
||||
setState(() => showDivider = false);
|
||||
}
|
||||
else {
|
||||
setState(() => showDivider = true);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
final logsProvider = Provider.of<LogsProvider>(context, listen: false);
|
||||
|
||||
scrollController = ScrollController()..addListener(scrollListener);
|
||||
logsProvider.fetchLogs(inOffset: 0);
|
||||
fetchFilteringRules();
|
||||
fetchClients();
|
||||
|
@ -236,13 +235,17 @@ class _LogsState extends State<Logs> {
|
|||
await logsProvider.fetchLogs(inOffset: 0);
|
||||
},
|
||||
displacement: 95,
|
||||
child: NotificationListener(
|
||||
onNotification: scrollListener,
|
||||
child: CustomScrollView(
|
||||
slivers: [
|
||||
SliverOverlapInjector(
|
||||
handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),
|
||||
),
|
||||
if (logsProvider.logsData!.data.isNotEmpty) SliverList.builder(
|
||||
itemCount: logsProvider.logsData!.data.length,
|
||||
itemCount: logsProvider.isLoadingMore
|
||||
? logsProvider.logsData!.data.length + 1
|
||||
: logsProvider.logsData!.data.length,
|
||||
itemBuilder: (context, index) {
|
||||
if (logsProvider.isLoadingMore == true && index == logsProvider.logsData!.data.length) {
|
||||
return const Padding(
|
||||
|
@ -310,6 +313,7 @@ class _LogsState extends State<Logs> {
|
|||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue