mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-08-20 21:19:29 +02:00
@@ -63,6 +63,7 @@ class _AppPageState extends State<AppPage> {
|
|||||||
Image.memory(
|
Image.memory(
|
||||||
app!.installedInfo!.icon!,
|
app!.installedInfo!.icon!,
|
||||||
height: 150,
|
height: 150,
|
||||||
|
gaplessPlayback: true,
|
||||||
)
|
)
|
||||||
])
|
])
|
||||||
: Container(),
|
: Container(),
|
||||||
|
@@ -23,6 +23,7 @@ class AppsPageState extends State<AppsPage> {
|
|||||||
var updatesOnlyFilter =
|
var updatesOnlyFilter =
|
||||||
AppsFilter(includeUptodate: false, includeNonInstalled: false);
|
AppsFilter(includeUptodate: false, includeNonInstalled: false);
|
||||||
Set<String> selectedIds = {};
|
Set<String> selectedIds = {};
|
||||||
|
DateTime? refreshingSince;
|
||||||
|
|
||||||
clearSelected() {
|
clearSelected() {
|
||||||
if (selectedIds.isNotEmpty) {
|
if (selectedIds.isNotEmpty) {
|
||||||
@@ -137,10 +138,17 @@ class AppsPageState extends State<AppsPage> {
|
|||||||
body: RefreshIndicator(
|
body: RefreshIndicator(
|
||||||
onRefresh: () {
|
onRefresh: () {
|
||||||
HapticFeedback.lightImpact();
|
HapticFeedback.lightImpact();
|
||||||
|
setState(() {
|
||||||
|
refreshingSince = DateTime.now();
|
||||||
|
});
|
||||||
return appsProvider.checkUpdates().catchError((e) {
|
return appsProvider.checkUpdates().catchError((e) {
|
||||||
ScaffoldMessenger.of(context).showSnackBar(
|
ScaffoldMessenger.of(context).showSnackBar(
|
||||||
SnackBar(content: Text(e.toString())),
|
SnackBar(content: Text(e.toString())),
|
||||||
);
|
);
|
||||||
|
}).whenComplete(() {
|
||||||
|
setState(() {
|
||||||
|
refreshingSince = null;
|
||||||
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
child: CustomScrollView(slivers: <Widget>[
|
child: CustomScrollView(slivers: <Widget>[
|
||||||
@@ -157,6 +165,17 @@ class AppsPageState extends State<AppsPage> {
|
|||||||
style: Theme.of(context).textTheme.headlineMedium,
|
style: Theme.of(context).textTheme.headlineMedium,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
))),
|
))),
|
||||||
|
if (refreshingSince != null)
|
||||||
|
SliverToBoxAdapter(
|
||||||
|
child: LinearProgressIndicator(
|
||||||
|
value: appsProvider.apps.values
|
||||||
|
.where((element) => !(element.app.lastUpdateCheck
|
||||||
|
?.isBefore(refreshingSince!) ??
|
||||||
|
true))
|
||||||
|
.length /
|
||||||
|
appsProvider.apps.length,
|
||||||
|
),
|
||||||
|
),
|
||||||
SliverList(
|
SliverList(
|
||||||
delegate: SliverChildBuilderDelegate(
|
delegate: SliverChildBuilderDelegate(
|
||||||
(BuildContext context, int index) {
|
(BuildContext context, int index) {
|
||||||
@@ -168,7 +187,10 @@ class AppsPageState extends State<AppsPage> {
|
|||||||
toggleAppSelected(sortedApps[index].app.id);
|
toggleAppSelected(sortedApps[index].app.id);
|
||||||
},
|
},
|
||||||
leading: sortedApps[index].installedInfo != null
|
leading: sortedApps[index].installedInfo != null
|
||||||
? Image.memory(sortedApps[index].installedInfo!.icon!)
|
? Image.memory(
|
||||||
|
sortedApps[index].installedInfo!.icon!,
|
||||||
|
gaplessPlayback: true,
|
||||||
|
)
|
||||||
: null,
|
: null,
|
||||||
title: Text(sortedApps[index].installedInfo?.name ??
|
title: Text(sortedApps[index].installedInfo?.name ??
|
||||||
sortedApps[index].app.name),
|
sortedApps[index].app.name),
|
||||||
|
Reference in New Issue
Block a user