【问题标题】:Icon not changing on onPressedonPressed上的图标没有改变
【发布时间】: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 被打印到控制台,但图标没有改变。有什么问题?

【问题讨论】:

    标签: flutter iconbutton


    【解决方案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;
      }
    }
    

    【讨论】:

    • 非常感谢
    猜你喜欢
    • 2016-03-29
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    相关资源
    最近更新 更多