如何修改form_builder_validators中的默认阿拉伯语错误提示文本
全局替换FormBuilderValidators的阿拉伯语默认错误提示
要在Flutter应用中全局替换form_builder_validators组件的阿拉伯语默认错误提示,可通过自定义本地化类并全局注册的方式实现,步骤如下:
1. 创建自定义阿拉伯语本地化类
继承FormBuilderLocalizations类,重写需要自定义的错误提示文本:
import 'package:form_builder_validators/form_builder_validators.dart'; import 'package:flutter/widgets.dart'; class CustomArabicFormBuilderLocalizations extends FormBuilderLocalizations { CustomArabicFormBuilderLocalizations(String locale) : super(locale); static CustomArabicFormBuilderLocalizations? of(BuildContext context) { return Localizations.of<CustomArabicFormBuilderLocalizations>( context, CustomArabicFormBuilderLocalizations, ); } @override String get requiredError => '* هذا الحقل مطلوب'; // 自定义必填错误提示 @override String get emailError => '* الرجاء إدخال بريد إلكتروني صحيح'; // 自定义邮箱错误提示 @override String get numericError => '* الرجاء إدخال قيمة رقمية'; // 自定义数字错误提示 // 按需重写其他错误提示方法,如urlError、minLengthError、maxLengthError等 }
2. 创建本地化代理
实现LocalizationsDelegate,用于加载自定义的阿拉伯语本地化资源:
class CustomArabicLocalizationsDelegate extends LocalizationsDelegate<FormBuilderLocalizations> { const CustomArabicLocalizationsDelegate(); @override bool isSupported(Locale locale) => locale.languageCode == 'ar'; @override Future<FormBuilderLocalizations> load(Locale locale) async { return CustomArabicFormBuilderLocalizations(locale.languageCode); } @override bool shouldReload(CustomArabicLocalizationsDelegate old) => false; }
3. 在MaterialApp中全局注册
将自定义的本地化代理添加到应用的localizationsDelegates列表中,并配置支持阿拉伯语环境:
import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( localizationsDelegates: const [ CustomArabicLocalizationsDelegate(), GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: const [ Locale('ar'), Locale('en'), ], locale: const Locale('ar'), // 可选:设置默认语言为阿拉伯语 home: const YourHomeScreen(), ); } }
验证效果
完成配置后,应用内所有使用form_builder_validators的组件(如FormBuilderTextField搭配validators参数),触发校验错误时都会显示你自定义的阿拉伯语提示文本。
内容的提问来源于stack exchange,提问作者Mohamed Elkilany
相关产品推荐
相关产品推荐

