Files
ai_english/client/lib/features/writing/widgets/writing_mode_card.dart

111 lines
2.9 KiB
Dart
Raw Normal View History

2025-11-17 13:39:05 +08:00
import 'package:flutter/material.dart';
import '../models/writing_task.dart';
import '../screens/writing_list_screen.dart';
/// 写作模式卡片组件
class WritingModeCard extends StatelessWidget {
final String title;
final String subtitle;
final IconData icon;
final Color color;
final WritingType? type;
final WritingDifficulty? difficulty;
const WritingModeCard({
super.key,
required this.title,
required this.subtitle,
required this.icon,
required this.color,
this.type,
this.difficulty,
});
@override
Widget build(BuildContext context) {
return Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(16),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.05),
blurRadius: 10,
offset: const Offset(0, 2),
),
],
),
child: InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => WritingListScreen(
title: title,
type: type,
difficulty: difficulty,
),
),
);
},
borderRadius: BorderRadius.circular(16),
child: Padding(
padding: const EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: 48,
height: 48,
decoration: BoxDecoration(
color: color.withOpacity(0.1),
borderRadius: BorderRadius.circular(12),
),
child: Icon(
icon,
color: color,
size: 24,
),
),
const SizedBox(height: 16),
Text(
title,
style: const TextStyle(
fontSize: 18,
fontWeight: FontWeight.bold,
),
),
const SizedBox(height: 4),
Text(
subtitle,
style: const TextStyle(
fontSize: 14,
color: Colors.grey,
),
),
const SizedBox(height: 16),
Row(
children: [
Text(
'开始练习',
style: TextStyle(
fontSize: 14,
color: color,
fontWeight: FontWeight.w500,
),
),
const SizedBox(width: 4),
Icon(
Icons.arrow_forward,
size: 16,
color: color,
),
],
),
],
),
),
),
);
}
}