在Flutter中从父颜色生成自定义颜色阴影

3

我需要找到一种更好的方法,从给定的自定义颜色中生成阴影颜色以用于主题目的。到目前为止,我已经找到了一种通过降低给定颜色的不透明度来实现此目的的方法。所以我可以将强调色和给定颜色的淡化色传递给这个函数。

import 'package:flutter/material.dart';

class AppColors {
  Color accentColor;
  Color fadedColor;

  AppColors(this.accentColor, this.fadedColor);
}

AppColors getAppColors(String color) {
  int budgetAccentcolor = int.parse('0xff' + color);
  int budgetFadedColor = int.parse('0x26' + color);

  return AppColors(Color(budgetAccentcolor), Color(budgetFadedColor));
}

但是由于我正在减少颜色的不透明度,它展示了小部件下面的内容,就像使用SliverAppBar时一样。

有没有办法获取Hex颜色的淡化值?

1个回答

2

最终在这里找到了一种用Dart编程语言轻松调整十六进制颜色深浅的方法。

Color lighten(Color color, [double amount = 0.49]) {
  assert(amount >= 0 && amount <= 1);

  final hsl = HSLColor.fromColor(color);
  final hslLight = hsl.withLightness((hsl.lightness + amount).clamp(0.0, 1.0));

  return hslLight.toColor();
}

Color hexToColor(String code) {
    return Color(int.parse(code.substring(0, 6), radix: 16) + 0xFF000000);
}

我正在这样调用这个函数。

backgroundColor: lighten(hexToColor("f98b5")),

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接