- InlineSpan: виджет RichText использует объекты InlineSpan для определения различных стилей в тексте. Вы можете использовать различные типы InlineSpan, такие как TextSpan, WidgetSpan и PlaceholderSpan, чтобы применять разные стили, вставлять виджеты или добавлять заполнители.
Пример:
RichText(
text: TextSpan(
text: 'Hello ',
style: DefaultTextStyle.of(context).style,
children: <InlineSpan>[
TextSpan(text: 'world!', style: TextStyle(fontWeight: FontWeight.bold)),
WidgetSpan(child: Icon(Icons.star, color: Colors.red)),
],
),
)
- TextSpan: виджет TextSpan позволяет определять стилизованный текст внутри виджета RichText. Вы можете использовать его для применения различных стилей, таких как цвет, размер и насыщенность шрифта, к определенным разделам текста.
Пример:
RichText(
text: TextSpan(
text: 'Hello world!',
style: DefaultTextStyle.of(context).style,
children: <TextSpan>[
TextSpan(text: 'Hello', style: TextStyle(fontWeight: FontWeight.bold)),
TextSpan(text: ' world!', style: TextStyle(color: Colors.red)),
],
),
)
- Пользовательский InlineSpan: вы можете создавать собственные классы InlineSpan, расширяя класс InlineSpan. Это позволяет вам определить собственную логику рендеринга стилизованного текста в виджете RichText.
Пример:
class CustomInlineSpan extends InlineSpan {
@override
void build(BuildContext context, ParagraphBuilder builder,
{double textScaleFactor = 1.0, List<PlaceholderDimensions>? dimensions}) {
// Custom logic for rendering the styled text
}
@override
InlineSpan getSpanForPositionVisitor(
TextPosition position, Accumulator offset) {
// Custom logic for handling text position
}
}
RichText(
text: CustomInlineSpan(),
)