import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; Widget formLabelText({required String labelText, bool isRequired = false}) { return Text.rich( TextSpan( children: [ if (isRequired) const TextSpan(text: '* ', style: TextStyle(color: Colors.red)), TextSpan(text: labelText), ], ), ); } InputDecoration formInputDecoration({ required String hintText, // 使用命名参数并标记为必填 IconData? prefixIcon, }) { return InputDecoration( hintText: hintText, hintStyle: TextStyle(color: Colors.grey), filled: true, fillColor: Colors.white, border: OutlineInputBorder(), prefixIcon: prefixIcon != null ? Icon(prefixIcon) : null, ); } /// 确认按钮样式 ButtonStyle primaryButtonStyle() { return ButtonStyle( backgroundColor: WidgetStateProperty.all(Colors.green), shape: WidgetStateProperty.all( RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), ), ); } /// 取消按钮样式 ButtonStyle cancelButtonStyle() { return ButtonStyle( backgroundColor: WidgetStateProperty.all(Colors.grey), shape: WidgetStateProperty.all( RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), ), ); } Text buttonText({required String text}) { return Text(text, style: TextStyle(color: Colors.white)); } Widget errorImageContainer(double height) { return Container( height: height, color: Colors.grey[200], child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ const Icon(Icons.error, color: Colors.red), const SizedBox(width: 5), const Text("加载失败", style: TextStyle(color: Colors.red)), ], ), ); } /// 成功消息 void showSuccessToast(String message) { Fluttertoast.showToast( msg: message, toastLength: Toast.LENGTH_SHORT, gravity: ToastGravity.CENTER, timeInSecForIosWeb: 1, backgroundColor: Colors.green, textColor: Colors.white, fontSize: 16.0, ); } /// 错误消息 void showErrorToast(String message) { Fluttertoast.showToast( msg: message, toastLength: Toast.LENGTH_SHORT, gravity: ToastGravity.CENTER, timeInSecForIosWeb: 1, backgroundColor: Colors.red, textColor: Colors.white, fontSize: 16.0, ); }