mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-04-25 08:16:06 +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> {
|
class _LogsState extends State<Logs> {
|
||||||
late ScrollController scrollController;
|
|
||||||
|
|
||||||
bool showDivider = true;
|
bool showDivider = true;
|
||||||
|
|
||||||
Log? selectedLog;
|
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);
|
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);
|
logsProvider.fetchLogs(loadingMore: true);
|
||||||
}
|
}
|
||||||
if (scrollController.position.pixels > 0) {
|
if (scrollNotification.metrics.pixels > 0) {
|
||||||
setState(() => showDivider = false);
|
setState(() => showDivider = false);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
setState(() => showDivider = true);
|
setState(() => showDivider = true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
final logsProvider = Provider.of<LogsProvider>(context, listen: false);
|
final logsProvider = Provider.of<LogsProvider>(context, listen: false);
|
||||||
|
|
||||||
scrollController = ScrollController()..addListener(scrollListener);
|
|
||||||
logsProvider.fetchLogs(inOffset: 0);
|
logsProvider.fetchLogs(inOffset: 0);
|
||||||
fetchFilteringRules();
|
fetchFilteringRules();
|
||||||
fetchClients();
|
fetchClients();
|
||||||
|
@ -236,13 +235,17 @@ class _LogsState extends State<Logs> {
|
||||||
await logsProvider.fetchLogs(inOffset: 0);
|
await logsProvider.fetchLogs(inOffset: 0);
|
||||||
},
|
},
|
||||||
displacement: 95,
|
displacement: 95,
|
||||||
|
child: NotificationListener(
|
||||||
|
onNotification: scrollListener,
|
||||||
child: CustomScrollView(
|
child: CustomScrollView(
|
||||||
slivers: [
|
slivers: [
|
||||||
SliverOverlapInjector(
|
SliverOverlapInjector(
|
||||||
handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),
|
handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),
|
||||||
),
|
),
|
||||||
if (logsProvider.logsData!.data.isNotEmpty) SliverList.builder(
|
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) {
|
itemBuilder: (context, index) {
|
||||||
if (logsProvider.isLoadingMore == true && index == logsProvider.logsData!.data.length) {
|
if (logsProvider.isLoadingMore == true && index == logsProvider.logsData!.data.length) {
|
||||||
return const Padding(
|
return const Padding(
|
||||||
|
@ -310,6 +313,7 @@ class _LogsState extends State<Logs> {
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue