Files
ReelShort/lib/pages/create/create_view.dart
T

146 lines
4.3 KiB
Dart

// Author: fruit.com.cn
// K28 creation tab placeholder; creator workflows land in the next batch.
import 'package:flutter/material.dart';
import '../../core/theme/app_colors.dart';
import '../../core/theme/app_dimens.dart';
import '../../core/theme/app_theme.dart';
import '../../l10n/app_localizations.dart';
/// Honest skeleton for the future creation workspace.
class CreatePage extends StatelessWidget {
const CreatePage({super.key});
@override
Widget build(BuildContext context) {
final l10n = AppLocalizations.of(context)!;
return Theme(
data: AppTheme.dark(),
child: SafeArea(
bottom: false,
child: ListView(
key: const Key('create-page'),
padding: const EdgeInsets.fromLTRB(
AppDimens.pageHorizontal,
AppDimens.spaceXl,
AppDimens.pageHorizontal,
AppDimens.spaceXl,
),
children: [
Text(
l10n.createTab,
style: const TextStyle(
fontFamily: 'Outfit',
color: AppColors.onSurface,
fontSize: AppDimens.pageTitle,
fontWeight: FontWeight.w800,
),
),
const SizedBox(height: AppDimens.spaceSm),
Text(
l10n.createSubtitle,
style: const TextStyle(
color: AppColors.muted,
fontSize: AppDimens.body,
),
),
const SizedBox(height: AppDimens.spaceXl),
_CreateEntry(
key: const Key('create-ai'),
icon: Icons.auto_awesome_rounded,
title: l10n.createAiTitle,
subtitle: l10n.createAiSubtitle,
detail: l10n.comingSoon,
),
const SizedBox(height: AppDimens.spaceMd),
_CreateEntry(
key: const Key('create-upload'),
icon: Icons.upload_file_rounded,
title: l10n.createUploadTitle,
subtitle: l10n.createUploadSubtitle,
detail: l10n.comingSoon,
),
],
),
),
);
}
}
class _CreateEntry extends StatelessWidget {
const _CreateEntry({
super.key,
required this.icon,
required this.title,
required this.subtitle,
required this.detail,
});
final IconData icon;
final String title;
final String subtitle;
final String detail;
@override
Widget build(BuildContext context) {
return Container(
padding: const EdgeInsets.all(AppDimens.cardPadding),
decoration: BoxDecoration(
color: AppColors.card,
borderRadius: BorderRadius.circular(AppDimens.cardRadius),
border: Border.all(color: AppColors.border),
),
child: Row(
children: [
Container(
width: AppDimens.tapTarget,
height: AppDimens.tapTarget,
decoration: BoxDecoration(
color: AppColors.blue.withValues(alpha: 0.14),
borderRadius: BorderRadius.circular(AppDimens.innerRadius),
),
child: Icon(
icon,
color: AppColors.blue,
size: AppDimens.createIcon,
),
),
const SizedBox(width: AppDimens.spaceMd),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
title,
style: const TextStyle(
color: AppColors.onSurface,
fontSize: AppDimens.listTitle,
fontWeight: FontWeight.w700,
),
),
const SizedBox(height: AppDimens.spaceXs),
Text(
'$subtitle · $detail',
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: const TextStyle(
color: AppColors.muted,
fontSize: AppDimens.caption,
),
),
],
),
),
const SizedBox(width: AppDimens.spaceSm),
const Icon(
Icons.chevron_right_rounded,
color: AppColors.subtle,
size: AppDimens.createArrow,
),
],
),
);
}
}