[flutter] RichText에서 스타일 변화 주기(애니메이션)

원하는 스타일로 텍스트를 꾸밀 때 종종 애니메이션 효과를 추가하고 싶을 수 있습니다. Flutter의 RichText 위젯을 사용하면 텍스트의 일부 또는 전체에 적용된 스타일을 동적으로 변화시킬 수 있습니다. 이 글에서는 RichText 위젯을 사용하여 텍스트의 스타일을 애니메이션으로 변화시키는 방법에 대해 살펴보겠습니다.

RichText 위젯

RichText 위젯은 다양한 스타일을 적용할 수 있는 다중 스타일 텍스트를 만들 수 있도록 해줍니다. RichText 위젯은 TextSpan을 사용하여 다양한 텍스트 스타일을 정의할 수 있습니다.

RichText(
  text: TextSpan(
    style: DefaultTextStyle.of(context).style,
    children: <TextSpan>[
      TextSpan(text: 'Hello', style: TextStyle(fontWeight: FontWeight.bold)),
      TextSpan(text: ' world!'),
    ],
  ),
)

애니메이션 적용하기

텍스트의 스타일에 애니메이션을 적용하려면 AnimatedBuilder나 AnimatedWidget을 사용할 수 있습니다. 이들 위젯은 지속적으로 애니메이션을 빌드하여 화면에 출력합니다.

class AnimatedTextStyle extends ImplicitlyAnimatedWidget {
  final TextStyle style;
  final Widget child;

  AnimatedTextStyle({
    Key key,
    @required this.style,
    @required this.child,
    Duration duration,
    Curve curve,
  }) : super(
         key: key,
         duration: duration,
         curve: curve,
       );

  @override
  _AnimatedTextStyleState createState() => _AnimatedTextStyleState();
}

class _AnimatedTextStyleState extends AnimatedWidgetBaseState<AnimatedTextStyle> {
  TextStyleTween _style;

  @override
  void forEachTween(TweenVisitor<dynamic> visitor) {
    _style = visitor(
      _style,
      widget.style,
      (dynamic value) => TextStyleTween(begin: value),
    );
  }

  @override
  Widget build(BuildContext context) {
    final style = _style.evaluate(animation);
    return DefaultTextStyle(
      style: style,
      child: widget.child,
    );
  }
}

애니메이션을 적용하려는 RichText 위젯과 함께 AnimatedTextStyle 위젯을 사용하여 텍스트 스타일을 동적으로 변화시킬 수 있습니다.

결론

Flutter의 RichText 위젯과 함께 애니메이션을 사용하여 텍스트의 스타일을 변화시킬 수 있습니다. 이를 통해 동적인 텍스트 스타일 변화를 표현할 수 있고, 사용자 경험을 향상시킬 수 있습니다.

더 많은 정보를 원한다면, Flutter 공식 문서를 확인해보세요.