web-dev-qa-db-ja.com

背景画像に基づいてテキストの色を変更する方法 - フラッタ

視認性のために背景画像に基づいてテキスト(アイコン)色を変更したいです。

試してみました:を使用して palette_generator パッケージ、背景画像の優性色を確認する )USEWHITEFORGRANDFORCOLOROR関数(BOOLを返します)から flutter_statusBarColor パッケージ(そしてアイコン)色の色または白色の色を選択します。

問題:優勢な色がNULLに表示されることもあります。私のテストでは、これは黒と白の色で起こり、どれかを見つける方法はわかりません。

Future<bool> useWhiteTextColor(String imageUrl) async {
  PaletteGenerator paletteGenerator =
      await PaletteGenerator.fromImageProvider(
    NetworkImage(imageUrl),

    // Images are square
    size: Size(300, 300),

    // I want the dominant color of the top left section of the image
    region: Offset.zero & Size(40, 40),
  );

  Color dominantColor = paletteGenerator.dominantColor?.color;

  // Here's the problem 
  // Sometimes dominantColor returns null
  // With black and white background colors in my tests
  if (dominantColor == null) print('Dominant Color null');

  return useWhiteForeground(dominantColor);
}
 _

私は見つけました その他の方法 他の言語のためには、Dartで同じ方法を実装する方法がわかりません。

追加の注意:私の実際のコードには追加の複雑さがいくつか含まれています。私はSliverAppBarを使用しています、そして、ここでFlexIbleSpaceが展開されたときのタイトルとアイコンの色を決定したいです。私はコミュニティの助けを借りて崩壊したときの色を変えます これは

12
Sina Seirafi

このようなパレットジェネレータを作成する必要があります

PaletteGenerator paletteGenerator =
  await PaletteGenerator.fromImageProvider(
NetworkImage(imageUrl),

filters: [],
// Images are square
size: Size(300, 300),

// I want the dominant color of the top left section of the image
region: Offset.zero & Size(40, 40),
); 
 _

フィルタパラメータの空のリストに注目してください

0
bar