build method

  1. @override
Widget build(
  1. BuildContext context
)
override

构建双重文本叠加效果

  1. 复制原始文本样式并应用描边绘制属性
  2. 使用Stack叠加:底层绘制描边文本,上层显示原始文本
  3. 保持原始文本的所有布局属性(对齐方式、文字方向等)

Implementation

@override
Widget build(BuildContext context) {
  TextStyle style;
  if (child.style != null) {
    style = child.style!.copyWith(
      foreground: Paint()
        ..style = PaintingStyle.stroke
        ..strokeCap = strokeCap
        ..strokeJoin = strokeJoin
        ..strokeWidth = strokeWidth
        ..color = strokeColor,
      color: null,
    );
  } else {
    style = TextStyle(
      foreground: Paint()
        ..style = PaintingStyle.stroke
        ..strokeCap = strokeCap
        ..strokeJoin = strokeJoin
        ..strokeWidth = strokeWidth
        ..color = strokeColor,
    );
  }
  return Stack(
    alignment: Alignment.center,
    textDirection: child.textDirection,
    children: <Widget>[
      Text(
        child.data ?? '',
        style: style,
        maxLines: child.maxLines,
        overflow: child.overflow,
        semanticsLabel: child.semanticsLabel,
        softWrap: child.softWrap,
        strutStyle: child.strutStyle,
        textAlign: child.textAlign,
        textDirection: child.textDirection,
        textScaler: child.textScaler,
      ),
      child,
    ],
  );
}