Вы не можете использовать Colors.black
, потому что это не MaterialColor
и primarySwatch
ожидает цветовую палитру материала.
Если вы перейдете к определению ThemeData
, вы увидите следующее:
/// * The primary color palette (the [primarySwatch]), chosen from
/// one of the swatches defined by the material design spec. This
/// should be one of the maps from the [Colors] class that do not
/// have "accent" in their name.
Например, определение Colors.blue
:
static const MaterialColor blue = MaterialColor(
_bluePrimaryValue,
<int, Color>{
50: Color(0xFFE3F2FD),
100: Color(0xFFBBDEFB),
200: Color(0xFF90CAF9),
300: Color(0xFF64B5F6),
400: Color(0xFF42A5F5),
500: Color(_bluePrimaryValue),
600: Color(0xFF1E88E5),
700: Color(0xFF1976D2),
800: Color(0xFF1565C0),
900: Color(0xFF0D47A1),
},
);
static const int _bluePrimaryValue = 0xFF2196F3;
В то время как определение Colors.black:
static const Color black = Color(0xFF000000);
То естьпочему ты не можешь использовать черный там.По той же причине вы не можете использовать Colors.white
.Эти два исключения являются исключениями из вышеприведенного объяснения использования цветов, у которых нет акцентного слова.
Если вы хотите черный, вы можете создать свою собственную палитру:
const MaterialColor primaryBlack = MaterialColor(
_blackPrimaryValue,
<int, Color>{
50: Color(0xFF000000),
100: Color(0xFF000000),
200: Color(0xFF000000),
300: Color(0xFF000000),
400: Color(0xFF000000),
500: Color(_blackPrimaryValue),
600: Color(0xFF000000),
700: Color(0xFF000000),
800: Color(0xFF000000),
900: Color(0xFF000000),
},
);
const int _blackPrimaryValue = 0xFF000000;
И затемиспользуйте primaryBlack
вместо Colors.black.
Вы можете настроить различные цвета в палитре.