thenButton method
Appends a button widget to the current text widget.
Creates an inline button within the text flow.
Parameters:
onPressed(VoidCallback, required): Button press handler.child(Widget, required): Button content.
Returns: Widget — a rich text widget with the appended button.
Example:
Text('Click ').thenButton(
onPressed: () => print('clicked'),
child: Text('here'),
)
Implementation
Widget thenButton({
required VoidCallback onPressed,
required Widget child,
}) {
return then(
WidgetSpan(
alignment: PlaceholderAlignment.middle,
child: Builder(builder: (context) {
final defaultTextStyle = DefaultTextStyle.of(context);
return Button(
style: const ButtonStyle.link(
density: ButtonDensity.compact,
),
onPressed: onPressed,
child: Builder(
builder: (context) {
final buttonTextStyle = DefaultTextStyle.of(context);
return DefaultTextStyle(
style: defaultTextStyle.style.copyWith(
decoration: buttonTextStyle.style.decoration,
),
overflow: defaultTextStyle.overflow,
maxLines: defaultTextStyle.maxLines,
softWrap: defaultTextStyle.softWrap,
textAlign: defaultTextStyle.textAlign,
textHeightBehavior: defaultTextStyle.textHeightBehavior,
textWidthBasis: defaultTextStyle.textWidthBasis,
child: child,
);
},
),
);
}),
),
);
}