Flutter 錯誤The argument type 'Color' can't be assigned to the parameter type 'MaterialStateProperty ?'.dart(argument_type_not_assignable)


MaterialStateProperty<Color?>?和Color

  • 當為TextButton等button添加顏色時,使用ButtonStyle為其添加顏色
TextButton(
      onPressed: () {},
      child: Text('text'),
      style:
          ButtonStyle(backgroundColor:Colors.white),
    );
  • 這樣設置會報錯,如題

MaterialStateProperty.all() 方法是設置點擊事件所有狀態下的樣式。
MaterialStateProperty.resolveWith() 可攔截分別設置不同狀態下的樣式。

  • 如果所有的狀態時的顏色都相同,使用MaterialStateProperty.all(),如果不同狀態要使用不同的顏色時,用MaterialStateProperty.resolveWith(),例如:
TextButton(
      onPressed: () {},
      child: Text('text'),
      style: ButtonStyle(
        //backgroundColor:MaterialStateProperty.all(Colors.white)
        backgroundColor: MaterialStateProperty.resolveWith(
          (states) {
            if (states.contains(MaterialState.focused) &&
                !states.contains(MaterialState.pressed)) {
              //獲取焦點時的顏色
              return Colors.blue;
            } else if (states.contains(MaterialState.pressed)) {
              //按下時的顏色
              return Colors.deepPurple;
            }
            //默認狀態使用灰色
            return Colors.grey;
          },
        ),
      ),
    );

參考:https://zhuanlan.zhihu.com/p/278330232


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM