Flutter - 带有更改开/关图标的通知按钮

时间:2021-03-20 09:26:42

标签: flutter button notifications icons

我想将这个带有“通知开/关”功能的提升按钮转换为一个带有变化图标的按钮,类似于下面用于暗/亮模式的按钮。只有当通知打开和关闭时才会停止,图标会改变......

                          child: ElevatedButton(
                            style: ElevatedButton.styleFrom(
                                primary: Color(0xFF34445C)),
                            onPressed: () {
                              setState(() {
                                _notificationsEnabled =
                                    !_notificationsEnabled;
                                _updateNotifications(_notificationsEnabled);
                              });
                            },
                            child: Text(
                                _notificationsEnabled
                                    ? 'PUSH-BENACHRICHTIGUNGEN AKTIVIERT'
                                    : 'PUSH-BENACHRICHTIGUNGEN DEAKTIVIERT',
                                style: TextStyle(
                                    fontSize: 11.0)),
                          ),

所以行 (isDark? Icons.wb_sunny: Icons.brightness_2,) 必须连接到 _notificationsEnabled 函数,以便图标不会根据暗/亮模式而改变,而是通知开/关图标.

                    child: ClipOval(
                      child: Material(
                        color: Color(0xFF282C39),
                        child: InkWell(
                          splashColor: Colors.blue,
                          child: SizedBox(
                              width: 32,
                              height: 32,
                              child: Icon(
                                  isDark ? Icons.wb_sunny : Icons.brightness_2,
                                  size: 20,
                                  color: Colors.white)),
                          onTap: () {
                            isDark
                                ? Magazin.of(context)!
                                .setBrightness(Brightness.light)
                                : Magazin.of(context)!
                                .setBrightness(Brightness.dark);
                          },
                        ),
                      ),
                    ),

1 个答案:

答案 0 :(得分:0)

您应该使用ElevatedButton.icon。这是一个基于您的代码的示例。

        ElevatedButton.icon(
            icon: _notificationsEnabled
                ? Icon(Icons.notifications_active)
                : Icon(Icons.notifications_off),
            label: Text(
              _notificationsEnabled
                  ? 'PUSH-BENACHRICHTIGUNGEN AKTIVIERT'
                  : 'PUSH-BENACHRICHTIGUNGEN DEAKTIVIERT',
              style: TextStyle(fontSize: 11.0),
            ),
            onPressed: () {
              setState(() {
                _notificationsEnabled = !_notificationsEnabled;
                _updateNotifications(_notificationsEnabled);
              });
            },
          ),