executeJob method

  1. @override
Future<JobResult> executeJob(
  1. Job job
)
override

The rendering job to execute.

@returns the tilebitmap or null if no data available for this tile @returns an exception e.g. if the server is not reachable

Implementation

@override
Future<JobResult> executeJob(Job job) async {
  var pictureRecorder = ui.PictureRecorder();
  var canvas = ui.Canvas(pictureRecorder);
  var paint = ui.Paint();
  Random random = Random();
  paint.strokeWidth = (random.nextDouble() * 5) + 1;
  paint.color = ui.Color(0xff000000 + random.nextInt(0xffffff));
  paint.isAntiAlias = true;

  canvas.drawLine(ui.Offset.zero,
      ui.Offset(job.tileSize.toDouble(), job.tileSize.toDouble()), paint);
  canvas.drawLine(ui.Offset(job.tileSize.toDouble(), 0),
      ui.Offset(0, job.tileSize.toDouble()), paint);

  ui.ParagraphBuilder builder = ui.ParagraphBuilder(
    ui.ParagraphStyle(
      fontSize: 10.0,
    ),
  )
    ..pushStyle(ui.TextStyle(color: Colors.black87))
    ..addText("${job.tile}");
  canvas.drawParagraph(
      builder.build()
        ..layout(ui.ParagraphConstraints(width: job.tileSize.toDouble())),
      const Offset(0, 0));

  var pic = pictureRecorder.endRecording();
  ui.Image img =
      await pic.toImage(job.tileSize.toInt(), job.tileSize.toInt());
//    var byteData = await img.toByteData(format: ui.ImageByteFormat.png);
//    var buffer = byteData.buffer.asUint8List();

  FlutterTileBitmap tileBitmap = FlutterTileBitmap(img);
  return JobResult(tileBitmap, JOBRESULT.NORMAL); //Future.value(tileBitmap);
}