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不同的值取决于当前的主题