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

时间:2021-01-23 07:54:59

标签: flutter colors

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

OuterLoop:
    for {
        select {
        case msg := <-someCh:
            data.DataCh <- fmt.Sprintf("Received messages: key %s, value: %s\n", string(msg.Key), string(msg.Value))
        case <-data.Signal:
            close(data.DataCh)
            break OuterLoop
        }
    }

但是因为我降低了颜色的不透明度,它显示了小部件下的情况,就像使用 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 颜色的褪色值?

1 个答案:

答案 0 :(得分:1)

终于找到了来自here的方法。

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