視認性のために背景画像に基づいてテキスト(アイコン)色を変更したいです。
試してみました:を使用して 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が展開されたときのタイトルとアイコンの色を決定したいです。私はコミュニティの助けを借りて崩壊したときの色を変えます これは 。
このようなパレットジェネレータを作成する必要があります
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),
);
_
フィルタパラメータの空のリストに注目してください