circleCanvasWithText static method
Future<BitmapDescriptor>
circleCanvasWithText(
{ - required Size size,
- required String text,
- double fontSize = 15.0,
- Color circleColor = Colors.red,
- Color fontColor = Colors.black,
- FontWeight fontWeight = FontWeight.w500,
})
Implementation
static Future<BitmapDescriptor> circleCanvasWithText({
required Size size,
required String text,
double fontSize = 15.0,
Color circleColor = Colors.red,
Color fontColor = Colors.black,
FontWeight fontWeight = FontWeight.w500,
}) async {
final ui.PictureRecorder pictureRecorder = ui.PictureRecorder();
final Canvas canvas = Canvas(pictureRecorder);
final Paint paint = Paint()..color = circleColor;
final Radius radius = Radius.circular(size.width / 2);
canvas.drawRRect(
RRect.fromRectAndCorners(
Rect.fromLTWH(0.0, 0.0, size.width.toDouble(), size.height.toDouble()),
topLeft: radius,
topRight: radius,
bottomLeft: radius,
bottomRight: radius,
),
paint);
TextPainter painter = TextPainter(textDirection: TextDirection.ltr);
painter.text = TextSpan(
text: text,
style: TextStyle(fontSize: fontSize, color: fontColor, fontWeight: fontWeight),
);
painter.layout();
painter.paint(canvas, Offset((size.width * 0.5) - painter.width * 0.5, (size.height * .5) - painter.height * 0.5));
final img = await pictureRecorder.endRecording().toImage(size.width.toInt(), size.height.toInt());
final data = await img.toByteData(format: ui.ImageByteFormat.png);
return BitmapDescriptor.fromBytes(data!.buffer.asUint8List());
}