add providers per page

show only 10 packages
new page for all packages
This commit is contained in:
2024-01-19 20:00:10 +01:00
parent 920e11abcc
commit bb34e56be0
13 changed files with 462 additions and 384 deletions

View File

@ -2,7 +2,6 @@ import 'dart:async';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:visibility_detector/visibility_detector.dart';
import '../../providers/BaseProvider.dart';
@ -26,7 +25,6 @@ class APIBuilder<T extends BaseProvider, K, DTO> extends StatefulWidget {
class _APIBuilderState<T extends BaseProvider, K, DTO>
extends State<APIBuilder<T, K, DTO>> {
Timer? timer;
bool visible = true;
@override
void initState() {
@ -35,10 +33,8 @@ class _APIBuilderState<T extends BaseProvider, K, DTO>
if (widget.interval != null) {
timer = Timer.periodic(widget.interval!, (Timer t) {
if (visible) {
Provider.of<T>(context, listen: false)
.refresh(context, dto: widget.dto);
}
Provider.of<T>(context, listen: false)
.refresh(context, dto: widget.dto);
});
}
}
@ -53,30 +49,15 @@ class _APIBuilderState<T extends BaseProvider, K, DTO>
Widget build(BuildContext context) {
final Future<K> fut = Provider.of<T>(context).data as Future<K>;
return VisibilityDetector(
key: widget.key ?? const Key("APIBuilder"),
onVisibilityChanged: (visibilityInfo) {
var visiblePercentage = visibilityInfo.visibleFraction * 100;
if (mounted) {
setState(() {
visible = visiblePercentage != 0;
});
return FutureBuilder<K>(
future: fut,
builder: (context, snapshot) {
if (snapshot.hasData) {
return widget.onData(snapshot.data!);
} else {
return widget.onLoad();
}
debugPrint(
'Widget ${visibilityInfo.key} is ${visiblePercentage}% visible');
},
child: FutureBuilder<K>(
future: fut,
builder: (context, snapshot) {
if (snapshot.hasData) {
return widget.onData(snapshot.data!);
} else {
return widget.onLoad();
}
},
),
);
}
}