onPressed上的图标没有改变

Posted

技术标签:

【中文标题】onPressed上的图标没有改变【英文标题】:Icon not changing on onPressed 【发布时间】:2021-11-16 10:49:29 【问题描述】:

我正在做一个更大的项目,但不知道为什么这个小部分让我几乎呆了一整天。

import 'package:flutter/material.dart';

void main() 
  runApp(const AllTests());


class AllTests extends StatefulWidget 
  const AllTests(Key? key) : super(key: key);

  @override
  _AllTestsState createState() => _AllTestsState();


class _AllTestsState extends State<AllTests> 

  IconData play = Icons.play_circle_filled;
  onPressed()
    if(play == Icons.play_circle_filled)
      play == Icons.pause_circle_filled_rounded;
     else 
      play == Icons.play_circle_filled;
    
  

  @override
  Widget build(BuildContext context) 
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children:  [
              IconButton(
                icon: Icon(
                  play,
                  size: 80,
                  color: Colors.black,
                ), 
                onPressed: () 
                  setState(() 
                    print('hello');
                    onPressed();
                  );
                ,
              ),
            ],
          ),
        ),
      ),
    );
  

我刚刚尝试在 AllTests() 之前删除 const 关键字,但它现在仍然有效。 我也试过把函数直接放到 IconButton 的 onPressed 中。

hello 被打印到控制台,但图标没有改变。有什么问题?

【问题讨论】:

【参考方案1】:

您使用了== 运算符而不是= 运算符。改用这个:

onPressed()
if(play == Icons.play_circle_filled)
    play = Icons.pause_circle_filled_rounded;

 else 
    play = Icons.play_circle_filled;


【讨论】:

非常感谢 @AmiManye 很乐意为您提供帮助...如果我的回答解决了您的问题,如果您将其标记为解决方案,我将不胜感激。【参考方案2】:

使用= 运算符而不是==

onPressed() 
  if(play == Icons.play_circle_filled)
    play = Icons.pause_circle_filled_rounded;
   else 
    play = Icons.play_circle_filled;
  

【讨论】:

非常感谢

以上是关于onPressed上的图标没有改变的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 onPressed 为选择的收藏图标选择单个颤振 ListTiles?

Flutter 布局 3 列宽 3 行深,图标和文本在下方 - 图标 OnPressed(不是导航栏,而是全屏)

Android设备上的Expo App某些onPress()未触发

Flutter:IconButton onPressed 在控制台中响应但在显示中没有响应

如何左对齐 Flutter 中的 OutlineButton 图标

颤振 ListView.builder 使 onPressed 仅适用于关注项