Issue
This is my code, I have the theme defined clearly as shown below.
But, the color of the container in the home
is still coming up to be blue in Chrome browser.
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Spotify UI',
debugShowCheckedModeBanner: false,
themeMode: ThemeMode.dark,
darkTheme: ThemeData(
brightness: Brightness.dark,
appBarTheme: const AppBarTheme(backgroundColor: Colors.black),
scaffoldBackgroundColor: const Color(0xFF121212),
backgroundColor: const Color(0xFF121212),
primaryColor: Colors.black,
accentColor: const Color(0xFF1DB954),
iconTheme: const IconThemeData().copyWith(color: Colors.white),
fontFamily: 'Montserrat',
textTheme: TextTheme(
headline2: const TextStyle(
color: Colors.white,
fontSize: 32.0,
fontWeight: FontWeight.bold,
),
headline4: TextStyle(
fontSize: 12.0,
color: Colors.grey[300],
fontWeight: FontWeight.w500,
letterSpacing: 2.0,
),
bodyText1: TextStyle(
color: Colors.grey[300],
fontSize: 14.0,
fontWeight: FontWeight.w600,
letterSpacing: 1.0,
),
bodyText2: TextStyle(
color: Colors.grey[300],
letterSpacing: 1.0,
),
),
),
home: Column(
children: [
Expanded(
child: Container(
color: Theme.of(context).primaryColor,
),
)
],
),
);
}
}
Solution
This is because the color of your Container
widget is taken from context
, which is an argument of the build
method of MyApp
.
MaterialApp
has a theme, but MyApp
doesn’t have a theme. So when you use the context
of MyApp
to get the primary color, that context doesn’t have any theme yet and you get the default primary color.
Instead, what you can do is:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Spotify UI',
debugShowCheckedModeBanner: false,
themeMode: ThemeMode.dark,
darkTheme: ThemeData(
// ...
),
home: MyWidget(),
);
}
}
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(
children: [
Expanded(
child: Container(
color: Theme.of(context).primaryColor,
),
)
],
);
}
}
Answered By – Giorgio
Answer Checked By – Pedro (FlutterFixes Volunteer)