如何在Flutter中获取当前布局方向?

8

我正在开发一个应用程序,应该支持RTL排版方向(阿拉伯语和希伯来语)。

如果布局方向为RTL,我还需要对布局进行一些更改。

如何确定应用程序当前的布局方向?


@xxx,你的问题和我发布的问题有什么关联吗?我发布的问题是关于屏幕方向(即纵向或横向),而我的问题是关于布局方向(即从左到右或从右到左)。在你标记它为重复问题之前,请确认一下这个问题是否确实是重复的! - Emil Adz
2个回答

22
您可以使用 Directionality.of 方法获取当前方向。
final TextDirection currentDirection = Directionality.of(context);
final bool isRTL = currentDirection == TextDirection.rtl;

这决定了所选择的语言方向,但如果需要手动设置,则可能适用于您。

Widget build(BuildContext context) {
  return MaterialApp(
    debugShowCheckedModeBanner: false,
    theme: ThemeData(),
    home: Directionality(
      textDirection: TextDirection.rtl,
      child: Home(),
    ),
  );
}

1
  1. 将此方法添加到您的类中:

bool isRTL() => Directionality.of(context).toString().contains(TextDirection.RTL.value.toLowerCase());

  • 在build()方法中的使用:
  • 
    RichText(
       textAlign: isRTL() ? TextAlign.right : TextAlign.left,
       .....
    ),
    
    

    1
    我已经简化了代码,变成了 bool isRtl = Directionality.of(context).index == 0; - Hatem R Saber

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接