Skip to content
Snippets Groups Projects
parameter_painter.dart 1.68 KiB
Newer Older
import 'dart:math';

import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';

import 'package:reversi/models/settings/settings_activity.dart';
import 'package:reversi/models/settings/settings_global.dart';

class ParameterPainter extends CustomPainter {
  const ParameterPainter({
    required this.code,
    required this.value,
    required this.activitySettings,
    required this.globalSettings,
  });

  final String code;
  final String value;
  final ActivitySettings activitySettings;
  final GlobalSettings globalSettings;

  @override
  void paint(Canvas canvas, Size size) {
    // force square
    final double canvasSize = min(size.width, size.height);

    // content
    switch (code) {
      default:
        printlog('Unknown parameter: $code/$value');
        paintUnknownParameterItem(canvas, canvasSize);
    }
  }

  @override
  bool shouldRepaint(CustomPainter oldDelegate) {
    return false;
  }

  // "unknown" parameter -> simple block with text
  void paintUnknownParameterItem(
    final Canvas canvas,
    final double size,
  ) {
    final paint = Paint();
    paint.strokeJoin = StrokeJoin.round;
    paint.strokeWidth = 3;

    final textSpan = TextSpan(
      text: '$code\n$value',
      style: const TextStyle(
        color: Colors.black,
        fontSize: 18,
        fontWeight: FontWeight.bold,
      ),
    );
    final textPainter = TextPainter(
      text: textSpan,
      textDirection: TextDirection.ltr,
      textAlign: TextAlign.center,
    );
    textPainter.layout();
    textPainter.paint(
      canvas,
      Offset(
        (size - textPainter.width) * 0.5,
        (size - textPainter.height) * 0.5,
      ),
    );
  }
}