如何在没有上下文的情况下使用Flutter本地化



我正在使用flatter_localizations.dart包以不同的语言本地化我的应用程序。通常,我使用S.of(context).wordToLocalize根据每种语言调用String。

但是,在登录过程中,我没有上下文,所以我不能使用相同的过程。我有以下错误:

未定义的名称'context'。尝试将名称更正为定义或定义名称。

我需要使用它的代码如下

import 'dart:async';
import 'package:aplians_fish/generated/l10n.dart';

class Validators {
final validarEmail = StreamTransformer<String, String>.fromHandlers(
handleData: (email, sink) {
Pattern pattern = r'^(([^<>()[]\.,;:s@"]+(.[^<>()[]\.,;:s@"]+)*)|(".+"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$';
RegExp regExp = new RegExp(pattern);
if (regExp.hasMatch(email)) {
sink.add(email);
} else {
sink.addError('It must be a valid e-mail'); 
// I would like to change the previous line for S.of(context).validEmail
}
}
);

如何在此代码中调用Flutter本地化?

您可以使用用于本地化的BuildContext初始化Validators

class Validators {
Validators({required BuildContext context}) 
:  _context = context;
final BuildContext _context;
// You can now call BuildContext inside Validators like
// AppLocalizations.of(_context).validEmail
}

类可以在Widget build()中初始化,其中可以传递BuildContext。

@override
Widget build(BuildContext buildContext) {
Validators(context: buildContext);
return Scaffold(...);
}

相关内容

  • 没有找到相关文章

最新更新