Android 如何使用Intl获取颤振中的当前区域设置文本方向

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), ),

我正在创建一个新的FlitterUI组件,其中包含选择并获取有关该产品的更多信息

我希望这个组件也支持RTL,所以我需要获得当前的语言环境语言方向,这将允许我知道选择形状的哪些角将被圆角

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您使用的颤振版本是什么?