Fladder/lib/screens/syncing/sync_child_item.dart
2024-09-20 10:01:13 +02:00

66 lines
2 KiB
Dart

import 'package:fladder/models/items/season_model.dart';
import 'package:fladder/models/syncing/sync_item.dart';
import 'package:fladder/screens/syncing/widgets/synced_season_poster.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/models/items/episode_model.dart';
import 'package:fladder/providers/sync_provider.dart';
import 'widgets/synced_episode_item.dart';
class ChildSyncWidget extends ConsumerStatefulWidget {
final SyncedItem syncedChild;
const ChildSyncWidget({
required this.syncedChild,
super.key,
});
@override
ConsumerState<ConsumerStatefulWidget> createState() => _ChildSyncWidgetState();
}
class _ChildSyncWidgetState extends ConsumerState<ChildSyncWidget> {
late SyncedItem syncedItem = widget.syncedChild;
@override
Widget build(BuildContext context) {
final baseItem = ref.read(syncProvider.notifier).getItem(syncedItem);
final hasFile = syncedItem.videoFile.existsSync();
if (baseItem == null) {
return Container();
}
return Padding(
padding: const EdgeInsets.symmetric(vertical: 6),
child: Card(
child: InkWell(
onTap: () {
Navigator.of(context).pop();
baseItem.navigateTo(context);
},
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
children: [
Flexible(
child: switch (baseItem) {
SeasonModel season => SyncedSeasonPoster(
syncedItem: syncedItem,
season: season,
),
EpisodeModel episode => SyncedEpisodeItem(
episode: episode,
syncedItem: syncedItem,
hasFile: hasFile,
),
_ => Container(),
},
),
],
),
),
),
),
);
}
}