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

Flutter中无法在Arc上方绘制文本问题求助

解决Flutter中Canvas文本无法显示的问题

你遇到的问题其实和Z-index层级关系不大,先给你理清两个关键点:

首先,Flutter的Canvas绘制逻辑是按代码执行顺序决定层级——后调用的绘制操作会覆盖在之前的内容上面,没有专门的Z-index属性。你代码里文本是最后绘制的,理论上应该出现在圆弧上方,所以看不见文本的原因不在层级。

真正的问题是:你的TextPainter缺少了必须的textDirection参数!TextPainter需要明确文本的排版方向(从左到右/从右到左),否则它无法正确完成布局和渲染,导致文本根本没有被画出来,自然就看不到了。

给你修正后的代码,重点看TextPainter的创建部分:

import 'dart:math' as math;
import 'package:flutter/material.dart';

class ChartPainter extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    print(size.width);
    print(size.height);
    final Paint paint = new Paint()..color = Colors.blue;
    // Draw a circle that circumscribes the arrow.
    paint.style = PaintingStyle.stroke;
    paint.strokeWidth = 50.0;
    paint.isAntiAlias = true;

    canvas.drawArc(new Rect.fromLTWH(0.0, 0.0, size.width, size.height), 0.0, -math.pi / 4, false, paint);
    paint.color = Colors.orange;
    canvas.drawArc(new Rect.fromLTWH(0.0, 0.0, size.width, size.height), -math.pi / 4, -math.pi / 4, false, paint);
    paint.color = Colors.green;
    canvas.drawArc(new Rect.fromLTWH(0.0, 0.0, size.width, size.height), -math.pi / 2, -math.pi / 4, false, paint);
    paint.color = Colors.purple;
    canvas.drawArc(new Rect.fromLTWH(0.0, 0.0, size.width, size.height), -math.pi * 3 / 4, -math.pi / 4, false, paint);

    TextSpan span = new TextSpan(
      style: new TextStyle(color: Colors.black, fontSize: 24.0, fontFamily: 'Roboto'),
      text: "Ajay Singh");
    TextPainter tp = new TextPainter(
      text: span,
      textAlign: TextAlign.left,
      textDirection: TextDirection.ltr, // 新增这个必填参数
    );
    tp.layout();
    tp.paint(canvas, new Offset(100.0, 100.0));
  }

  @override
  bool shouldRepaint(ChartPainter oldDelegate) {
    return true;
  }
}

另外再给你两个小提醒:

  • 确认Offset(100.0, 100.0)的位置在你的画布可见范围内,如果画布尺寸太小,文本可能会超出显示区域;
  • 如果你后续需要调整层级关系,只需要调整绘制顺序——比如想让某个圆弧显示在文本上方,就把该圆弧的绘制代码放在文本绘制之后即可。

内容的提问来源于stack exchange,提问作者Ajay Singh Beniwal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:00:34