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