import 'package:flutter/material.dart'; import 'package:forui/forui.dart'; import 'app_error_state.dart'; import 'media_row_metrics.dart'; import 'media_poster_card.dart'; class ErrorMediaRow extends StatelessWidget { final String title; final String message; final VoidCallback onRetry; final MediaCardVariant cardVariant; final Color? titleColor; const ErrorMediaRow({ super.key, required this.title, required this.onRetry, this.message = '加载失败', this.cardVariant = MediaCardVariant.poster, this.titleColor, }); @override Widget build(BuildContext context) { final theme = Theme.of(context); final compact = MediaRowMetrics.isCompact(context); final rowHeight = MediaRowMetrics.rowHeight(cardVariant, compact: compact); return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.fromLTRB(20, 16, 20, 12), child: Text( title, style: theme.textTheme.titleMedium?.copyWith(color: titleColor), ), ), SizedBox( height: rowHeight, child: AppErrorState( message: message, compact: true, action: FButton( variant: FButtonVariant.outline, onPress: onRetry, child: const Text('重试'), ), ), ), ], ); } }