首页 > 解决方案 > 在颤动中从父颜色生成自定义颜色阴影

问题描述

我需要找到一种更好的方法来从给定的自定义颜色生成阴影颜色以用于主题化。到目前为止,我找到了一种通过降低给定颜色的不透明度来做到这一点的方法,如下所示。所以我可以为这个函数强调颜色颜色和给定颜色的褪色。

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颜色的褪色值吗?

标签: fluttercolors

解决方案


终于从这里找到了一条路。

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")),

推荐阅读