import 'package:flutter/material.dart'; // 자동완성 드롭다운에서 텍스트 하이라이트를 위한 위젯 class HighlightText extends StatelessWidget { // 전체 텍스트 final String text; // 하이라이트할 부분 final String highlight; // 하이라이트 색상 final Color highlightColor; // 텍스트 스타일 final TextStyle? style; const HighlightText({ Key? key, required this.text, required this.highlight, this.highlightColor = Colors.blue, this.style, }) : super(key: key); @override Widget build(BuildContext context) { if (highlight.isEmpty) { // 하이라이트가 없으면 전체 텍스트 반환 return Text(text, style: style); } final String lowerText = text.toLowerCase(); final String lowerHighlight = highlight.toLowerCase(); final int start = lowerText.indexOf(lowerHighlight); if (start < 0) { // 일치하는 부분이 없으면 전체 텍스트 반환 return Text(text, style: style); } final int end = start + highlight.length; return RichText( text: TextSpan( style: style ?? DefaultTextStyle.of(context).style, children: [ if (start > 0) TextSpan(text: text.substring(0, start)), TextSpan( text: text.substring(start, end), style: TextStyle( fontWeight: FontWeight.bold, color: highlightColor, ), ), if (end < text.length) TextSpan(text: text.substring(end)), ], ), ); } }