Вы можете использовать стек с фальшивым заполнителем для времени (или другой информации) на первом слое и реальный позиционированный текст на втором слое.
class CustomCard extends StatelessWidget {
final String msg;
final String additionalInfo;
CustomCard({
@required this.msg,
this.additionalInfo = ""
});
@override
Widget build(BuildContext context) {
return Card(
child: Stack(
children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: RichText(
text: TextSpan(
children: <TextSpan>[
//real message
TextSpan(
text: msg + " ",
style: Theme.of(context).textTheme.subtitle,
),
//fake additionalInfo as placeholder
TextSpan(
text: additionalInfo,
style: TextStyle(
color: Color.fromRGBO(255, 255, 255, 1)
)
),
],
),
),
),
//real additionalInfo
Positioned(
child: Text(
additionalInfo,
style: TextStyle(
fontSize: 12.0,
),
),
right: 8.0,
bottom: 4.0,
)
],
),
);
}
И результат может выглядеть следующим образом: скриншот результата