Files
ReelShort/lib/pages/new_releases/new_releases_page.dart
T

43 lines
1.4 KiB
Dart

// Author: fruit.com.cn
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../core/data/services/catalog_controller.dart';
import '../../core/widgets/empty_state.dart';
import '../../core/widgets/plain_page_scaffold.dart';
import '../../l10n/app_localizations.dart';
import '../discover/widgets/drama_grid.dart';
import '../player/open_player.dart';
/// 剧场新剧页:按 id 倒序展示最新上架短剧。
class NewReleasesPage extends StatelessWidget {
const NewReleasesPage({super.key});
@override
Widget build(BuildContext context) {
final l10n = AppLocalizations.of(context)!;
final dramas = [...context.read<CatalogController>().dramas]
..sort((a, b) => b.id.compareTo(a.id));
return PlainPageScaffold(
pageKey: const Key('new-releases-page'),
backKey: const Key('new-releases-back'),
title: l10n.rankingNew,
subtitle: l10n.newReleasesSubtitle,
child: dramas.isEmpty
? EmptyState(icon: Icons.fiber_new_outlined, title: l10n.noStories)
: SingleChildScrollView(
padding: const EdgeInsets.only(top: 4, bottom: 24),
child: DramaGrid(
l10n: l10n,
dramas: dramas,
onOpen: (drama) =>
unawaited(playDramaFromCatalog(context, drama)),
),
),
);
}
}