You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中泰语文本在换行符\n前显示异常问题

Flutter泰语文本含\n换行符时首行显示异常问题

环境信息

  • Flutter 3.10.5
  • Dart SDK 3.0.5

问题描述

使用Text组件显示包含\n换行符的泰语文本时,换行符之前的首行文本显示异常,仅换行后的文本能正常显示。

代码示例

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'ไก่จิกเด็ก\nไก่จิกเด็ก',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ],
        ),
      ),
    );
  }
}

异常效果截图

异常显示截图

解决方案

方法1:使用RichText拆分文本

将文本拆分为多个TextSpan,避免单条文本内包含换行符导致的渲染异常:

RichText(
  text: TextSpan(
    style: DefaultTextStyle.of(context).style,
    children: const [
      TextSpan(text: 'ไก่จิกเด็ก'),
      TextSpan(text: '\n'),
      TextSpan(text: 'ไก่จิกเด็ก'),
    ],
  ),
)

方法2:拆分多个Text组件

把每行文本单独用Text组件包裹,通过Column组合:

Column(
  children: const [
    Text('ไก่จิกเด็ก'),
    Text('ไก่จิกเด็ก'),
  ],
)

方法3:升级Flutter版本

Flutter后续版本(如3.13及以上)针对复杂脚本语言的文本渲染做了优化,升级版本后可能自动修复该问题。


内容的提问来源于stack exchange,提问作者Punch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 06:10:10