import 'package:flutter/material.dart'; import 'index.dart'; /// 通用输入框样式 InputDecoration buildInputDecoration({ required BuildContext context, required String hintText, IconData? prefixIcon, }) { final colors = Theme.of(context).colorScheme; return InputDecoration( hintText: hintText, hintStyle: Theme.of(context).textTheme.bodyMedium, filled: true, fillColor: colors.surface, enabledBorder: OutlineInputBorder( borderSide: BorderSide.none, borderRadius: BorderRadius.circular(10), ), focusedBorder: OutlineInputBorder( borderSide: BorderSide(color: colors.primary, width: 2), borderRadius: BorderRadius.circular(10), ), errorBorder: OutlineInputBorder( borderSide: const BorderSide(color: Colors.red, width: 2), borderRadius: BorderRadius.circular(10), ), contentPadding: const EdgeInsets.symmetric(horizontal: 15, vertical: 14), errorStyle: const TextStyle(fontSize: 12, height: 1, color: Colors.red), prefixIcon: prefixIcon != null ? Icon(prefixIcon, size: 20, color: colors.primary) : null, prefixIconConstraints: const BoxConstraints(minWidth: 40), isDense: true, ); } Widget buildFormLabel({ required BuildContext context, required String text, required bool isRequired, }) { final colors = Theme.of(context).colorScheme; return RichText( text: TextSpan( text: text, style: TextStyle( color: colors.onSurface, fontSize: 16, fontWeight: FontWeight.w500, fontFamily: 'CustomFont', height: 1.2, ), children: [ if (isRequired) const TextSpan( text: ' *', style: TextStyle(color: Colors.red, fontSize: 16), ), ], ), ); } /// 表单底部按钮组组件 Widget buildFormButtonGroup({ required BuildContext context, required bool isShowDelete, required VoidCallback onConfirm, required VoidCallback onDelete, }) { return Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Expanded(child: _buildCancelButton(context)), if (isShowDelete) ...[ SizedBox(width: 16), Expanded(child: _buildDeleteButton(context, onDelete)), ], SizedBox(width: 16), Expanded(child: _buildSubmitButton(context, onConfirm)), ], ); } /// 取消按钮 Widget _buildCancelButton(BuildContext context) { return buildInfoButton( context: context, text: '取消', onPressed: () => Navigator.pop(context), ); } /// 提交按钮 Widget _buildSubmitButton(BuildContext context, VoidCallback onConfirm) { return buildPrimaryButton(context: context, text: '提交', onPressed: onConfirm); } /// 删除按钮 Widget _buildDeleteButton(BuildContext context, VoidCallback onDelete) { return buildErrorButton(text: '删除', onPressed: onDelete); }