v1.0.28+28
All checks were successful
Flutter Schmutter / build (push) Successful in 3m30s

This commit is contained in:
2025-06-06 08:43:50 +02:00
parent 6fb4775043
commit 78ff1953ad
8 changed files with 69 additions and 67 deletions

View File

@ -21,6 +21,7 @@ class DetailView extends StatefulWidget {
class _DetailViewState extends State<DetailView> {
late PageController _pageController;
bool isLoading = false;
int _currentIndex = 0;
@override
void initState() {
@ -30,8 +31,16 @@ class _DetailViewState extends State<DetailView> {
final initialIndex = provider.mediaItems.indexWhere(
(item) => item.id == widget.initialItemId,
);
_pageController = PageController(initialPage: initialIndex);
_currentIndex = initialIndex;
_pageController.addListener(() {
setState(() {
_currentIndex = _pageController.page?.round() ?? 0;
});
});
_preloadAdjacentMedia(initialIndex);
}
@ -97,10 +106,12 @@ class _DetailViewState extends State<DetailView> {
PageTransformer(
controller: _pageController,
pages: provider.mediaItems.map((item) {
int itemIndex = provider.mediaItems.indexOf(item);
return SafeArea(
child: SmartRefreshIndicator(
onRefresh: _loadMoreMedia,
child: _buildMediaItem(item),
child: _buildMediaItem(item, _currentIndex == itemIndex),
),
);
}).toList(),
@ -129,7 +140,7 @@ class _DetailViewState extends State<DetailView> {
);
}
Widget _buildMediaItem(MediaItem item) {
Widget _buildMediaItem(MediaItem item, bool isActive) {
final provider = Provider.of<MediaProvider>(context);
return SingleChildScrollView(
@ -143,7 +154,7 @@ class _DetailViewState extends State<DetailView> {
errorWidget: (context, url, error) => Icon(Icons.error),
)
else
VideoWidget(details: item, isActive: true),
VideoWidget(details: item, isActive: isActive),
const SizedBox(height: 20),
Text(
item.mime,

View File

@ -3,6 +3,7 @@ import 'package:cached_network_image/cached_network_image.dart';
import 'package:provider/provider.dart';
import 'package:f0ckapp/screens/DetailView.dart';
import 'package:f0ckapp/providers/MediaProvider.dart';
import 'package:f0ckapp/utils/AppVersion.dart';
class MediaGrid extends StatefulWidget {
const MediaGrid({super.key});
@ -27,7 +28,7 @@ class _MediaGridState extends State<MediaGrid> {
_scrollController.addListener(() {
if (_scrollController.position.pixels >=
_scrollController.position.maxScrollExtent - 100) {
provider.loadMedia();
provider.loadMedia(notify: false);
}
});
}
@ -41,8 +42,12 @@ class _MediaGridState extends State<MediaGrid> {
key: scaffoldKey,
appBar: AppBar(
//centerTitle: true,
title: Text('f0ck v1.0.27+27'),
title: Text('fApp v${AppVersion.version}'),
actions: [
IconButton(
icon: Icon(provider.random ? Icons.shuffle_on_outlined : Icons.shuffle),
onPressed: () => provider.toggleRandom(),
),
IconButton(
icon: const Icon(Icons.menu),
onPressed: () {
@ -103,62 +108,6 @@ class _MediaGridState extends State<MediaGrid> {
padding: EdgeInsets.all(0),
child: Image.asset('assets/images/menu.webp', fit: BoxFit.cover),
),
/*ListTile(
title: Text(
'All',
style: TextStyle(
fontWeight: provider.type == 'alles'
? FontWeight.bold
: FontWeight.normal,
color: provider.type == 'alles' ? Colors.blue : Colors.white,
),
),
onTap: () {
provider.setType('all');
},
),
ListTile(
title: Text(
'Images',
style: TextStyle(
fontWeight: provider.type == 'image'
? FontWeight.bold
: FontWeight.normal,
color: provider.type == 'image' ? Colors.blue : Colors.white,
),
),
onTap: () {
provider.setType('image');
},
),
ListTile(
title: Text(
'Videos',
style: TextStyle(
fontWeight: provider.type == 'video'
? FontWeight.bold
: FontWeight.normal,
color: provider.type == 'video' ? Colors.blue : Colors.white,
),
),
onTap: () {
provider.setType('video');
},
),
ListTile(
title: Text(
'Audio',
style: TextStyle(
fontWeight: provider.type == 'audio'
? FontWeight.bold
: FontWeight.normal,
color: provider.type == 'audio' ? Colors.blue : Colors.white,
),
),
onTap: () {
provider.setType('audio');
},
),*/
],
),
),
@ -187,6 +136,7 @@ class _MediaGridState extends State<MediaGrid> {
child: Consumer<MediaProvider>(
builder: (context, mediaProvider, child) {
return GridView.builder(
key: PageStorageKey('mediaGrid'),
controller: _scrollController,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: mediaProvider.crossAxisCount == 0