| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import 'package:flutter/material.dart';
- import '../../core/theme/app_colors.dart';
- /// Pencil Component/FormField — 表单字段行
- ///
- /// 左侧标签(14号/secondary) + 右侧值(14号/可placeholder色) + 可选箭头图标
- class FormFieldRow extends StatelessWidget {
- final String label;
- final String? value;
- final String? hint;
- final bool showArrow;
- final bool readOnly;
- final VoidCallback? onTap;
- const FormFieldRow({
- super.key,
- required this.label,
- this.value,
- this.hint,
- this.showArrow = true,
- this.readOnly = false,
- this.onTap,
- });
- @override
- Widget build(BuildContext context) {
- final hasValue = value != null && value!.isNotEmpty;
- return GestureDetector(
- onTap: onTap,
- child: Container(
- height: 44,
- padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 0),
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Text(
- label,
- style: const TextStyle(
- fontSize: AppFontSizes.body,
- color: AppColors.textSecondary,
- ),
- ),
- Row(
- mainAxisSize: MainAxisSize.min,
- children: [
- Text(
- hasValue ? value! : (hint ?? '请选择或填写'),
- style: TextStyle(
- fontSize: AppFontSizes.body,
- color: hasValue
- ? (readOnly ? AppColors.textPrimary : AppColors.textPrimary)
- : AppColors.textPlaceholder,
- ),
- ),
- if (showArrow && !readOnly) ...[
- const SizedBox(width: 4),
- const Icon(
- Icons.chevron_right,
- size: 14,
- color: AppColors.textPlaceholder,
- ),
- ],
- ],
- ),
- ],
- ),
- ),
- );
- }
- }
|