Android 如何使用Intl获取颤振中的当前区域设置文本方向
我正在创建一个新的FlitterUI组件,其中包含选择并获取有关该产品的更多信息 我希望这个组件也支持RTL,所以我需要获得当前的语言环境语言方向,这将允许我知道选择形状的哪些角将被圆角Android 如何使用Intl获取颤振中的当前区域设置文本方向,android,flutter,internationalization,right-to-left,flutter-intl,Android,Flutter,Internationalization,Right To Left,Flutter Intl,我正在创建一个新的FlitterUI组件,其中包含选择并获取有关该产品的更多信息 我希望这个组件也支持RTL,所以我需要获得当前的语言环境语言方向,这将允许我知道选择形状的哪些角将被圆角 LTR形状代码如下 shape: RoundedRectangleBorder( borderRadius: BorderRadius.only( bottomLeft: Radius.circular(35), topLeft: Radius.circular(35), ),
LTR
形状代码如下
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(35),
topLeft: Radius.circular(35),
),
)
RTL
形状代码如下
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.only(
bottomRight: Radius.circular(35),
topRight: Radius.circular(35),
),
)
我知道intl提供了获取特定文本方向的功能,同时我希望获取当前选定语言环境的默认方向,因此如果当前语言环境是阿拉伯语、波斯语或任何其他从右向左的语言,我将返回
RLT
组件。我不知道怎么做。你可以直接使用intl.Bidi.isrtlanguage()
和import'package:intl/intl.dart'作为intl代码>
在该函数中,如果您不传递语言代码,如en
或ar
,它将使用Intl.getCurrentLocale()
来自bidi_util.dart
static bool isRtlLanguage([String languageString]) {
var language = languageString ?? Intl.getCurrentLocale();
if (_lastLocaleCheckedForRtl != language) {
_lastLocaleCheckedForRtl = language;
_lastRtlCheck = _rtlLocaleRegex.hasMatch(language);
}
return _lastRtlCheck;
}
您可以直接使用intl.Bidi.isrtlanguage()
和import'package:intl/intl.dart'作为intl代码>
在该函数中,如果您不传递语言代码,如en
或ar
,它将使用Intl.getCurrentLocale()
来自bidi_util.dart
static bool isRtlLanguage([String languageString]) {
var language = languageString ?? Intl.getCurrentLocale();
if (_lastLocaleCheckedForRtl != language) {
_lastLocaleCheckedForRtl = language;
_lastRtlCheck = _rtlLocaleRegex.hasMatch(language);
}
return _lastRtlCheck;
}
由于@chunhunghan,我创建了一个静态方法,该方法接受上下文并基于应用程序的当前区域设置返回true,因为如果不传递语言代码,函数总是返回false
import 'package:intl/intl.dart' as intl;
static bool isDirectionRTL(BuildContext context){
return intl.Bidi.isRtlLanguage( Localizations.localeOf(context).languageCode);
}
由于@chunhunghan,我创建了一个静态方法,该方法接受上下文并基于应用程序的当前区域设置返回true,因为如果不传递语言代码,函数总是返回false
import 'package:intl/intl.dart' as intl;
static bool isDirectionRTL(BuildContext context){
return intl.Bidi.isRtlLanguage( Localizations.localeOf(context).languageCode);
}
感谢您的帮助,它与一些编辑一起工作,我将编写完整答案感谢您的帮助,它与一些编辑一起工作,我将编写您需要的完整答案导入dart:ui
。如果与bidi_utils冲突,请参阅。您需要导入dart:ui
。如果与bidi_utils发生冲突,请参阅。似乎不再起作用tbh@LidorEliyahuShelef您使用的颤振版本是什么?似乎不再有效tbh@LidorEliyahuShelef您使用的颤振版本是什么?