mongol

此库是用于显示传统蒙古语竖排文本的 Flutter 小部件集合。

垂直文本

MongolText 是 Flutter 的 Text 小部件的垂直文本版本。支持从左到右的换行。

MongolText('ᠨᠢᠭᠡ ᠬᠣᠶᠠᠷ ᠭᠤᠷᠪᠠ ᠳᠦᠷᠪᠡ ᠲᠠᠪᠤ ᠵᠢᠷᠭᠤᠭ᠎ᠠ ᠨᠠᠢᠮᠠ ᠶᠢᠰᠦ ᠠᠷᠪᠠ'),

该库支持移动、Web 和桌面。

mongol_text

表情符号和 CJK 字符

该库会旋转表情符号和 CJK(中文、日文和韩文)字符以获得正确的方向。

emoji_cjk

文本样式

您可以使用 TextSpan 和/或 TextStyle 添加样式,就像您为 Text 小部件添加样式一样。

MongolText.rich(
  textSpan,
  textScaleFactor: 2.5,
),

其中 textSpan 的定义如下

const textSpan = TextSpan(
  style: TextStyle(fontSize: 30, color: Colors.black),
  children: [
    TextSpan(text: 'ᠨᠢᠭᠡ\n', style: TextStyle(fontSize: 40)),
    TextSpan(text: 'ᠬᠣᠶᠠᠷ', style: TextStyle(backgroundColor: Colors.yellow)),
    TextSpan(
      text: ' ᠭᠤᠷᠪᠠ ',
      style: TextStyle(shadows: [
        Shadow(
          blurRadius: 3.0,
          color: Colors.lightGreen,
          offset: Offset(3.0, -3.0),
        ),
      ]),
    ),
    TextSpan(text: 'ᠳᠦᠷ'),
    TextSpan(text: 'ᠪᠡ ᠲᠠᠪᠤ ᠵᠢᠷᠭᠤ', style: TextStyle(color: Colors.blue)),
    TextSpan(text: 'ᠭ᠎ᠠ ᠨᠠᠢᠮᠠ '),
    TextSpan(text: 'ᠶᠢᠰᠦ ', style: TextStyle(fontSize: 20)),
    TextSpan(
        text: 'ᠠᠷᠪᠠ',
        style:
            TextStyle(fontFamily: 'MenksoftAmuguleng', color: Colors.purple)),
  ],
);

mongol_rich_text

这一切都假设您已将一种或多种蒙古字体添加到您的应用资源中。

添加蒙古字体

此库的早期版本包含一种蒙古字体。但是,从 0.6.0 版本开始,字体已被移除。这使得库更小,同时也让开发者可以自由选择任何他们喜欢的蒙古字体。

由于您的用户设备可能没有安装蒙古字体,因此您应该在项目中包含至少一种蒙古字体。以下是您需要做的:

1. 获取字体

您可以从以下公司获取字体:

这个来自 Menksoft 的字体是以前包含在库中的字体。

2. 将字体添加到您的项目

您可以 这里这里 获取相关说明。

基本上,您只需要为其创建一个 assets/fonts 文件夹,然后像这样在 pubspec.yaml 中声明字体:

flutter:
  fonts:
    - family: MenksoftQagan
      fonts:
        - asset: assets/fonts/MQG8F02.ttf

您可以随意命名字体家族,但这个字符串是您在下一步中要使用的。

3. 为您的应用设置默认蒙古字体

在您的 main.dart 文件中,为应用主题设置 fontFamily

MaterialApp(
  title: 'My App',
  theme: ThemeData(fontFamily: 'MenksoftQagan'),
  home: MyHomePage(),
);

现在您不必为每个蒙古文本小部件手动设置字体了。但是,如果您想为某些小部件使用不同的字体,您仍然可以像平常一样在 TextStyle 中设置 fontFamily

如果您的用户设备不支持 OpenType Unicode 字体渲染,您还可以考虑将 mongol_code 与 Menksoft 字体一起使用。mongol_code 将 Unicode 转换为 Menksoft 代码,Menksoft 字体可以显示这些代码而无需任何特殊的渲染要求。

MongolAlertDialog

这个警报对话框的工作方式与 Flutter 的 AlertDialog 大致相同。

mongol_alert_dialog

键盘和垂直文本字段

这些尚未成为 mongol 库的一部分,但您可以在此库附带的示例应用中找到有关如何创建自定义应用内键盘和垂直 TextField 的示例。这是演示应用的截图:

keyboard
该文本字段只是一个标准的 TextField,旋转了 90 度。因此,它只支持单行输入。

待办事项

  • 多行 MongolTextField
  • 改进的键盘
  • 各种其他基于文本的小部件
  • 支持 WidgetSpan

GitHub

https://github.com/suragch/mongol