43 lines
1.4 KiB
Dart
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)),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|