颤振:将黑暗模式开关更改为图标

时间:2020-07-16 19:47:11

标签: flutter dart

我已经为扑动项目实现了暗模式,该模式使用放置在抽屉中的Swich来打开/关闭,您可以看到以下代码:

final themeChange = Provider.of<DarkThemeProvider>(context);

ListTile(
              leading: Icon(Icons.brightness_2, size: 30.0, color: Colors.blue),
              title: Text('night mode', style: TextStyle(fontSize: 18.0)),
              trailing: Switch(
                value: themeChange.darkTheme,
                onChanged: (bool value) {
                  themeChange.darkTheme = value;
                },
              ),
            ),

这是课程

import 'package:flutter/foundation.dart';
import 'package:azkar/core/shared/sharedpreferances.dart';

class DarkThemeProvider with ChangeNotifier {
  DarkThemePreference darkThemePreference = DarkThemePreference();
  bool _darkTheme = false;

  bool get darkTheme => _darkTheme;

  set darkTheme(bool value) {
    _darkTheme = value;
    darkThemePreference.setDarkTheme(value);
    notifyListeners();
  }
}

我现在面临的情况是某些屏幕没有抽屉。因此,我希望能够从这些屏幕的应用程序栏中打开/关闭暗模式,因为您知道在应用程序栏中放置开关看起来不太好。我该如何放置一个图标来做到这一点,当它打开并返回组织时,该图标将变为另一个图标。更改为关闭时显示图标。

1 个答案:

答案 0 :(得分:1)

我设法得到如下答案:

首先添加此变量:

  var _icon = Icons.wb_sunny;

然后实现此代码以更改图标并在暗模式和亮模式之间切换功能:

IconButton(
            icon: Icon(
              _icon,
              color: Colors.white,
              size: 30,
            ),
            onPressed: () {
              setState(() {
                if (_icon == Icons.wb_sunny) {
                  _icon = Icons.brightness_2;
                  themeChange.darkTheme = true;
                } else {
                  _icon = Icons.wb_sunny;
                  themeChange.darkTheme = false;
                }
              });
            },
          ),
相关问题