Flutter Elevated Button - 如何使用 MaterialStateProperty.all 删除高程?

问题描述

好的,通过新的 Flutter 更新,我已经弄清楚了大部分事情,但我似乎无法弄清楚提升的属性想要什么。我已经应用 MaterialStateProperty.all 并且该属性要求一个位置参数,但我不知道它想要什么。我已经尝试了 double、highlightValue 和其他所有可预测的东西,但我无法辨别如何将其设置为零。有人可以提供使用 MaterialStateProperty 将高程设置为零的新高架按钮的代码示例吗?

解决方法

这就是你如何使用新的 Elevated button

ElevatedButtonThemeData(
      style: ButtonStyle(
        backgroundColor: MaterialStateProperty.resolveWith<Color>(
          (Set<MaterialState> states) {
            if (states.contains(MaterialState.disabled)) {
              return greyColor;
            }
            return selectedPrimaryColor; // Defer to the widget's default.
          },),elevation: MaterialStateProperty.resolveWith<double>(  // As you said you dont need elevation. I'm returning 0 in both case
              (Set<MaterialState> states) {
            if (states.contains(MaterialState.disabled)) {
              return 0;
            }
            return 0; // Defer to the widget's default.
          },foregroundColor: MaterialStateProperty.resolveWith<Color>(
          (Set<MaterialState> states) {
            if (states.contains(MaterialState.disabled)) {
              return greyColor;
            }
            return selectedPrimaryColor; // Defer to the widget's default.
          },

顺便说一句,我是从 themeData 中提取的。这样我就不需要一次又一次地重复代码。您还应该学习 ThemeData 类。 Here 是文档。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...