Flutter - 根据主题切换图片
Flutter - Switching images depending on Theme
您好,我无法根据主题更改徽标。
在深色主题下我看不到徽标的黑色轮廓,而在浅色主题模式下我可以在白色背景上看到。
这是 main.dart 代码行:
@override
Widget build(BuildContext context) {
return LayoutBuilder(builder: (context, constraints) {
return OrientationBuilder(builder: (context, orientation) {
SizeConfig().init(constraints, orientation);
return MaterialApp(
debugShowCheckedModeBanner: false,
themeMode: ThemeMode.system,
theme: AppTheme.lightTheme,
darkTheme: AppTheme.darkTheme,
在单独的主题文件中自定义的主题:
static final lightTheme = ThemeData(
scaffoldBackgroundColor: AppTheme.lightBackground,
brightness: Brightness.light,
primaryColor: blackText,
);
static final darkTheme = ThemeData(
scaffoldBackgroundColor: AppTheme.darkBackground,
brightness: Brightness.dark,
primaryColor: whiteText,
);
这是我想要在图像的暗模式和亮模式版本之间切换的代码(2 个不同的资产文件):
InkWell(
onTap: () {},
child: CircularPercentIndicator(
radius: 27 * SizeConfig.heightMultiplier, //250.0,
lineWidth: 1.62 * SizeConfig.heightMultiplier, //15.0,
percent: 1.0,
animation: true,
animationDuration: 8000,
center: Padding(
padding: EdgeInsets.all(
5.4 * SizeConfig.heightMultiplier,
), //50.0),
child: new SvgPicture.asset(Res.logoClear),
),
progressColor: AppTheme.green,
backgroundColor: AppTheme.lightGrey),
)
圆形 PercentageView 小部件中心的图像(“logoClear”)。
logoClear 是连接到不同 .dart 文件中的图像文件路径的常量字符串
如果你想动态改变资产路径,你可以这样检查主题
var brightness = MediaQuery.of(context).platformBrightness;
bool darkModeOn = brightness == Brightness.dark;
并根据结果像这样传递字符串路径
SvgPicture.asset((darkModeOn)
? 'your_path_for_dark_theme'
:'your_path_for_light_theme),
你可以对进度颜色和背景颜色做同样的事情,return不同的值取决于当前的主题
您好,我无法根据主题更改徽标。 在深色主题下我看不到徽标的黑色轮廓,而在浅色主题模式下我可以在白色背景上看到。
这是 main.dart 代码行:
@override
Widget build(BuildContext context) {
return LayoutBuilder(builder: (context, constraints) {
return OrientationBuilder(builder: (context, orientation) {
SizeConfig().init(constraints, orientation);
return MaterialApp(
debugShowCheckedModeBanner: false,
themeMode: ThemeMode.system,
theme: AppTheme.lightTheme,
darkTheme: AppTheme.darkTheme,
在单独的主题文件中自定义的主题:
static final lightTheme = ThemeData(
scaffoldBackgroundColor: AppTheme.lightBackground,
brightness: Brightness.light,
primaryColor: blackText,
);
static final darkTheme = ThemeData(
scaffoldBackgroundColor: AppTheme.darkBackground,
brightness: Brightness.dark,
primaryColor: whiteText,
);
这是我想要在图像的暗模式和亮模式版本之间切换的代码(2 个不同的资产文件):
InkWell(
onTap: () {},
child: CircularPercentIndicator(
radius: 27 * SizeConfig.heightMultiplier, //250.0,
lineWidth: 1.62 * SizeConfig.heightMultiplier, //15.0,
percent: 1.0,
animation: true,
animationDuration: 8000,
center: Padding(
padding: EdgeInsets.all(
5.4 * SizeConfig.heightMultiplier,
), //50.0),
child: new SvgPicture.asset(Res.logoClear),
),
progressColor: AppTheme.green,
backgroundColor: AppTheme.lightGrey),
)
圆形 PercentageView 小部件中心的图像(“logoClear”)。 logoClear 是连接到不同 .dart 文件中的图像文件路径的常量字符串
如果你想动态改变资产路径,你可以这样检查主题
var brightness = MediaQuery.of(context).platformBrightness;
bool darkModeOn = brightness == Brightness.dark;
并根据结果像这样传递字符串路径
SvgPicture.asset((darkModeOn)
? 'your_path_for_dark_theme'
:'your_path_for_light_theme),
你可以对进度颜色和背景颜色做同样的事情,return不同的值取决于当前的主题