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

如何在Flutter的Text Widget中实现超粗体文字效果?

实现超粗厚重字体效果的几种方法

1. 使用Ubuntu字体原生支持的更重字重

Ubuntu字体本身提供了比FontWeight.bold(对应字重w700)更重的选项:

  • FontWeight.w800(ExtraBold)
  • FontWeight.w900(Black)

直接替换代码中的fontWeight值即可:

Widget _buildWelcomeTitleWidget() {
    final titleTextStyle = Theme.of(context).textTheme.bodyLarge!.copyWith(
          fontWeight: FontWeight.w900, // 替换为Black级别的粗重字重
          fontSize: 50,
          color: Colors.white,
        );
    return Padding(
      padding: const EdgeInsets.all(8.0),
      child: PlatformText(
        "welcome".tr(),
        style: titleTextStyle,
        textAlign: TextAlign.center,
      ),
    );
  }

2. 直接通过GoogleFonts显式指定字重

如果主题的TextTheme未包含更重字重的配置,可以直接用GoogleFonts.ubuntu方法指定,确保加载对应字体文件:

Widget _buildWelcomeTitleWidget() {
    final titleTextStyle = GoogleFonts.ubuntu(
      textStyle: Theme.of(context).textTheme.bodyLarge,
      fontWeight: FontWeight.w900,
      fontSize: 50,
      color: Colors.white,
    );
    return Padding(
      padding: const EdgeInsets.all(8.0),
      child: PlatformText(
        "welcome".tr(),
        style: titleTextStyle,
        textAlign: TextAlign.center,
      ),
    );
  }

3. 添加文字描边强化厚重感(视觉补充)

如果用了最重字重仍不够,可以通过文字描边进一步增强视觉厚重感:

Widget _buildWelcomeTitleWidget() {
    final baseStyle = Theme.of(context).textTheme.bodyLarge!.copyWith(
          fontWeight: FontWeight.w900,
          fontSize: 50,
          color: Colors.white,
        );
    return Padding(
      padding: const EdgeInsets.all(8.0),
      child: PlatformText(
        "welcome".tr(),
        style: baseStyle.copyWith(
          foreground: Paint()
            ..style = PaintingStyle.stroke
            ..strokeWidth = 2 // 按需调整描边宽度
            ..color = Colors.white,
        ),
        textAlign: TextAlign.center,
      ),
    );
  }

如果PlatformText不支持foreground属性,可改用Stack叠加两层文字实现:

Widget _buildWelcomeTitleWidget() {
    final baseStyle = Theme.of(context).textTheme.bodyLarge!.copyWith(
          fontWeight: FontWeight.w900,
          fontSize: 50,
          color: Colors.white,
        );
    return Padding(
      padding: const EdgeInsets.all(8.0),
      child: Stack(
        alignment: Alignment.center,
        children: [
          // 底层描边文字
          PlatformText(
            "welcome".tr(),
            style: baseStyle.copyWith(
              foreground: Paint()
                ..style = PaintingStyle.stroke
                ..strokeWidth = 2
                ..color = Colors.white,
            ),
            textAlign: TextAlign.center,
          ),
          // 上层填充文字
          PlatformText(
            "welcome".tr(),
            style: baseStyle,
            textAlign: TextAlign.center,
          ),
        ],
      ),
    );
  }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:07:32