首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TextBaseline的字母和表意字符枚举在Flutter中不起作用

TextBaseline的字母和表意字符枚举在Flutter中不起作用
EN

Stack Overflow用户
提问于 2020-06-03 19:36:20
回答 3查看 783关注 0票数 6

我想我已经理解了这些枚举是如何基于这个post工作的。当我使用以下代码尝试它时,它似乎不起作用。

代码语言:javascript
运行
复制
Row(
  mainAxisAlignment: MainAxisAlignment.center,
  crossAxisAlignment: CrossAxisAlignment.baseline,
  textBaseline: TextBaseline.ideographic,
  children: <Widget>[
    Text(
      'abcdefg',
      style: TextStyle(
          fontSize: 50.0, fontWeight: FontWeight.w900),
    ),
    Text(
      'hi',
      style: TextStyle(fontSize: 15.0),
    ),
  ],
),

但是,无论我选择将其用作文本基线(表意文字还是失语症),结果总是相同的:

我希望"hi“与"abcdefg”的表意基线对齐,而不是像这样与其字母基线对齐:

我做错了什么?

编辑:

Row小部件的上下文中,这两者应该有所不同。我尝试删除行textBaseline: TextBaseline.ideographic,得到以下错误:

代码语言:javascript
运行
复制
'package:flutter/src/widgets/basic.dart': Failed assertion: line 3791 pos 15: 'crossAxisAlignment != CrossAxisAlignment.baseline || textBaseline != null': is not true.

要求使用哪条基线必须是Flutter知道要对齐哪条基线的方式。

EN

回答 3

Stack Overflow用户

发布于 2020-06-07 17:39:46

截图:

你不需要基线。

代码语言:javascript
运行
复制
Row(
  mainAxisAlignment: MainAxisAlignment.center,
  crossAxisAlignment: CrossAxisAlignment.end,
  children: <Widget>[
    Text(
      'abcdefg',
      style: TextStyle(fontSize: 50.0, fontWeight: FontWeight.w900),
    ),
    Text(
      'hi',
      style: TextStyle(fontSize: 15.0),
    ),
  ],
)
票数 2
EN

Stack Overflow用户

发布于 2020-06-03 20:19:35

我不完全知道你的问题,但我认为你的问题可以通过添加以下参数来解决:

代码语言:javascript
运行
复制
mainAxisSize: MainAxisSize.min,

所以我们有:

代码语言:javascript
运行
复制
Row(
  mainAxisAlignment: MainAxisAlignment.center,
  crossAxisAlignment: CrossAxisAlignment.baseline,
  mainAxisSize: MainAxisSize.min,
  textBaseline: TextBaseline.ideographic,
  children: <Widget>[
    Text(
      'abcdefg',
      style: TextStyle(
          fontSize: 50.0, fontWeight: FontWeight.w900),
    ),
    Text(
      'hi',
      style: TextStyle(fontSize: 15.0),
    ),
  ],
),
票数 1
EN

Stack Overflow用户

发布于 2020-06-14 14:49:43

所以,我做了一些挖掘,在这篇文章here上找到了一些信息。

根据这篇文章:

代码语言:javascript
运行
复制
"alphabetic"

The text baseline is the normal alphabetic baseline. Default value.
代码语言:javascript
运行
复制
"ideographic"

The text baseline is the ideographic baseline; this is the bottom of the body of the characters, 
if the main body of characters protrudes beneath the alphabetic baseline. 
(Used by Chinese, Japanese, and Korean scripts.)

根据这一点,输出应该是可微的,如问题中所述。因此,为了测试解释的第二部分,我尝试将其与汉字一起使用。

代码语言:javascript
运行
复制
Column(
              children: <Widget>[
                  Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  crossAxisAlignment: CrossAxisAlignment.baseline,
                  textBaseline: TextBaseline.ideographic,
                  children: <Widget>[
                  Text(
                    '的',
                    style: TextStyle(
                      fontSize: 100.0),
                    ),
                    Text(
                      '的',
                      style: TextStyle(fontSize: 15.0),
                    ),
                  ],
               ),
                Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  crossAxisAlignment: CrossAxisAlignment.baseline,
                  textBaseline: TextBaseline.alphabetic,
                  children: <Widget>[
                  Text(
                    '的',
                    style: TextStyle(
                      fontSize: 100.0),
                    ),
                    Text(
                      '的',
                      style: TextStyle(fontSize: 15.0),
                    ),
                  ],
               ),
                ],
          ),
      ),

输出是this

正如您所看到的,这也不是预期的输出,两者以相同的方式工作。因此,可以安全地假设在Flutter的这些枚举的实现中可能存在一些问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62171872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档