import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:vector_graphics/vector_graphics.dart';

import '../common/assets.gen.dart';

SvgPicture vecWidget(String assets, {double? width, double? height, BoxFit? fit, Color? color}) {
  return SvgPicture(
    AssetBytesLoader(assets),
    width: width,
    height: height,
    fit: fit ?? BoxFit.contain,
    colorFilter: color != null ? ColorFilter.mode(color, BlendMode.srcIn) : null,
  );
}

Widget vecWidgetWithOnTap({
  required Widget child,
  required VoidCallback onTap,
  double? width,
  double? height,
  BoxFit? fit,
  Color? color,
}) {
  return InkWell(onTap: onTap, child: child);
}

SvgPicture svgWidget(String assets, {double? width, double? height, BoxFit? fit, Color? color}) {
  return SvgPicture.asset(
    assets,
    width: width,
    height: height,
    fit: fit ?? BoxFit.contain,
    colorFilter: color != null ? ColorFilter.mode(color, BlendMode.srcIn) : null,
  );
}

Widget vecWidget2(String assets, {double? width, double? height, BoxFit? fit, Color? color}) {
  final resolvedColor = WidgetStateProperty.resolveWith<Color?>((states) {
    if (states.contains(WidgetState.pressed)) {
      return Colors.white;
    }
    return color;
  }).resolve({}); // You can pass actual states if needed

  return IconTheme(
    data: IconThemeData(color: resolvedColor),
    child: SvgPicture(
      AssetBytesLoader(assets),
      width: width,
      height: height,
      fit: fit ?? BoxFit.contain,
      colorFilter: resolvedColor != null ? ColorFilter.mode(resolvedColor, BlendMode.srcIn) : null,
    ),
  );
}

SizedBox iconBlendTester(String vecPath) {
  return SizedBox(
    height: 150,
    child: ListView.separated(
      scrollDirection: Axis.horizontal,
      itemCount: BlendMode.values.length,
      itemBuilder: (context, index) {
        return Column(
          spacing: 8,
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(BlendMode.values[index].toString()),
            Container(
              margin: EdgeInsets.all(8),
              width: 100,
              height: 100,
              child: SvgGenImage.vec(vecPath).svg(
                width: 50,
                height: 50,
                colorFilter: ColorFilter.mode(Colors.red, BlendMode.values[index]),
              ),
            ),
          ],
        );
      },
      separatorBuilder: (BuildContext context, int index) => SizedBox(width: 10),
    ),
  );
}
