void _activebutton() {
controller = TextEditingController();
print(controller);
_isButtonActive = !_isButtonActive;
controller.addListener(
() {
final _isButtonActive = controller.text.isNotEmpty;
this._isButtonActive = _isButtonActive;
},
);
notifyListeners();
}
_isButtonActive变量默认值被指定为false。。
Consumer<PasswordVisibilty>(
builder: (context, mybutton, child) {
return ElevatedButton(
style: ElevatedButton.styleFrom(
primary: appPrimaryColor, // background
onPrimary: Colors.white, // foreground
fixedSize: Size(context.screenWidth * 0.80,
context.screenHeight * 0.07),
onSurface: appPrimaryColor,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15),
),
),
onPressed: mybutton.buttonactive
? () {
mybutton.activebutton();
}
: null,
提升按钮被Consumer包裹,但按下按钮时不会改变状态
您可能想尝试一下。
ElevatedButton(
// ...
onPressed: this._isButtonActive ? mybutton.activebutton : null,
)
请注意,您可以使用撕下而不是闭合。
此外,侦听器中的双重分配是不必要的:
controller.addListener(() => _isButtonActive = controller.text.isNotEmpty);