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

在Flutter中能否实现段落格式设置(对齐、缩进、间距)?

在Flutter中实现段落排版(对齐、缩进、间距)

当然可以在Flutter里实现类似MS Word的段落排版效果,下面是具体实现方式和示例:

1. 文本对齐

直接通过Text组件的textAlign属性控制对齐方式,支持左对齐、居中、右对齐、两端对齐等:

Text(
  '这是一段需要对齐的文本内容,用来演示Flutter中的文本对齐效果。内容足够长时,两端对齐的效果会更明显。',
  textAlign: TextAlign.justify, // 两端对齐
  style: TextStyle(fontSize: 16),
)

如果要控制文本块整体对齐(比如让整个段落靠右),可以用Align组件包裹:

Align(
  alignment: Alignment.centerRight,
  child: Text(
    '这段文本整体靠右对齐',
    style: TextStyle(fontSize: 16),
  ),
)

2. 段落缩进

  • 方式一:用TextStyle的textIndent(Flutter 3.7+支持)
    直接设置首行缩进,单位为逻辑像素:
    Text(
      '这是一段带有首行缩进的文本,首行缩进了24个逻辑像素,和Word里的首行缩进效果一致。',
      style: TextStyle(
        fontSize: 16,
        textIndent: TextIndent(24), // 首行缩进24px
      ),
    )
    
  • 方式二:Padding组件
    给Text加左内边距实现整体缩进:
    Padding(
      padding: EdgeInsets.only(left: 24),
      child: Text(
        '这段文本整体都缩进了24px,适合需要整段偏移的场景',
        style: TextStyle(fontSize: 16),
      ),
    )
    

3. 间距控制

  • 行间距:通过TextStyle的height属性设置,该值是行高与字体大小的比值:
    Text(
      '第一行文本\n第二行文本\n第三行文本',
      style: TextStyle(
        fontSize: 16,
        height: 1.5, // 行高为字体大小的1.5倍
      ),
    )
    
  • 段落间距:多个段落之间用SizedBox或Padding分隔:
    Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        Text(
          '这是第一个段落,用来演示段落之间的间距。',
          style: TextStyle(fontSize: 16),
        ),
        SizedBox(height: 12), // 段落间的12px间距
        Text(
          '这是第二个段落,和上一段保持了合适的间距。',
          style: TextStyle(fontSize: 16),
        ),
      ],
    )
    

完整示例代码

整合所有排版效果的代码:

import 'package:flutter/material.dart';

void main() {
  runApp(const MaterialApp(
    home: SafeArea(
      child: Scaffold(
        padding: EdgeInsets.all(16),
        body: SingleChildScrollView(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Text(
                '这是一段带有首行缩进和两端对齐的文本,行高设置为1.5倍,用来模拟Word中的排版效果。内容足够长才能看出两端对齐的差异,不然视觉上会和左对齐区别不大。',
                textAlign: TextAlign.justify,
                style: TextStyle(
                  fontSize: 16,
                  height: 1.5,
                  textIndent: TextIndent(24),
                ),
              ),
              SizedBox(height: 16),
              Padding(
                padding: EdgeInsets.only(left: 24),
                child: Text(
                  '这段文本整体缩进了24px,并且设置为右对齐,用来展示不同的排版需求场景。',
                  textAlign: TextAlign.right,
                  style: TextStyle(fontSize: 16, height: 1.5),
                ),
              ),
            ],
          ),
        ),
      ),
    ),
  ));
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:23:21