【问题标题】:flutter how to Create right to left (rtl) App颤动如何创建从右到左(rtl)应用程序
【发布时间】:2021-10-02 07:29:13
【问题描述】:

我在 Flutter 中使用 GetX 启动了一个应用程序。我想创建一个 rtl 应用程序,我使用 flutter_localizations 包作为 this post

这是我的 main() 代码

void main() => runApp(
      GetMaterialApp(
        localizationsDelegates: [
          GlobalMaterialLocalizations.delegate,
          GlobalWidgetsLocalizations.delegate,
          GlobalCupertinoLocalizations.delegate,
        ],
        supportedLocales: [
          Locale('fa', 'IR'),
        ],
        locale: Locale('fa', 'IR'),
        home: HomeScreen(),
      ),
    );

这是我的主屏幕代码

return Scaffold(
      backgroundColor: Colors.white,
      body: SafeArea(
        child: Text(
          "Some Text",
          style: TextStyle(
            color: Colors.black,
            fontSize: 20,
            fontWeight: FontWeight.bold,
          ),
        ),
      ),
    );

正如您在这张图片中看到的那样,调试横幅已移至左侧,但文本钢在左侧

【问题讨论】:

    标签: flutter localization right-to-left flutter-getx


    【解决方案1】:

    您的应用是正确的 rtl,您的问题是当前的正文小部件,将其作为正文小部件进行测试:

    body: SafeArea(
      child: Row(
        mainAxisSize: MainAxisSize.max,
        children: [
          Text("Some Text"),
        ],
      ),
    ),
    

    【讨论】:

    • 非常感谢,但为什么它不适用于 column ,只适用于 row ?
    【解决方案2】:

    应用程序已经是 rtl。只是 safeArea 下的小部件以最小尺寸将小部件放在左侧,我不知道为什么会发生这种情况尝试用一行或一个容器包装你的文本小部件并给它一个宽度那么你可以看到现在默认是在右边而不是左边。

    【讨论】:

    • 非常感谢,但我不想为每个小部件设置 TextAlign
    • 你不需要,默认现在设置为right,没有textAlign属性也是一样的(我忘了删除行)。
    【解决方案3】:

    使用textDirection属性并将其设置为TextDirection.rtl

    本地文本方向

    Text(
      "Some Text",
      textDirection: TextDirection.rtl,
    ),
    

    全局文本方向

    MaterialApp(
          home: Directionality(
            textDirection: TextDirection.rtl, 
            child: UserDetailsScreen(),
          ),
        ),
    

    完整示例:

    void main() => runApp(
          MaterialApp(
            home: Directionality(
                // add this
                textDirection: TextDirection.rtl,
                child: HomeScreen()),
          ),
        );
    
    class HomeScreen extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          backgroundColor: Colors.white,
          body: SafeArea(
            child: Text(
              "ہائے میں فلاں دنیا ہوں !!! امید ہے کہ آپ اچھا کر رہے ہیں۔ کوڈنگ مبارک ہو :)",
              style: TextStyle(
                color: Colors.black,
                fontSize: 20,
                fontWeight: FontWeight.bold,
              ),
            ),
          ),
        );
      }
    }
    

    输出:

    【讨论】:

    • 嗨,我想将我的整个应用程序转换为 rtl 而不是一些文本或图像
    • 谢谢你,但注意到发生了:-(
    • 关闭应用程序并重新运行,这应该可以工作
    • 我做到了。但没有任何改变:-(
    • 我今天早上更新了我的颤振版本。这取决于吗?
    猜你喜欢
    • 2020-04-29
    • 1970-01-01
    • 2022-10-04
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多