【发布时间】:2019-08-29 17:18:06
【问题描述】:
当用户按下 onTapDown() 和 onTapUP(在 GestureDetector 内)时,我想更新我的 MaterialButton。但我无法做到这一点。我试过但没有成功。我已经在控制台中打印了一些信息来检查我的代码是否正常工作,但在不更新我的 MaterialButton 小部件的情况下一切正常。请帮我 我的一些代码如下:-
(此代码用于具有可变背景图像的按钮)。
Container(
color: Colors.amber,
alignment: Alignment.center,
padding: EdgeInsets.only(top: 15, bottom: 10),
child: Text(
"CALL FUNTIONS",
style: TextStyle(
fontSize: 25,
fontWeight: FontWeight.bold,
),
)),
Container(
padding: EdgeInsets.only(bottom: 10),
color: Colors.amber,
child: callFunctionsForLessThan600Pixel(),
),
Widget callFunctionsForLessThan600Pixel() {
return new Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
lessThan600Pixel(Key("LockCallButton"),"button_default","locked"),
lessThan600Pixel(Key("UnLockCallButton"),"button_default","unlocked"),
lessThan600Pixel(Key("StatusCallButton"),"button_default","info"),
],
),
],
);
}
Widget lessThan600Pixel(Key key, String buttonName, String svgName) {
return MaterialButton(
key: key,
child: ConstrainedBox(
constraints: BoxConstraints(
maxHeight: 70,
maxWidth: 70,
),
child: GestureDetector(
child: Stack(
children: <Widget>[
Image.asset("assets/images/$buttonName.png",),
SvgPicture.asset(
"assets/images/$svgName.svg",
height: 30,
width: 30,
color: Colors.white,
),
],
alignment: Alignment.center,
),
onTapDown: (v) {
buttonTappedDown(key, svgName);
},
onTapUp: (v) {
buttonTappedDown(key, svgName);
},
),
),
onPressed: buttonPressed,
elevation: 0,
highlightElevation: 0,
highlightColor: Colors.amber,
);
}
void buttonTappedDown(Key key, String svgName) {
setState(() {
lessThan600Pixel(key, "button_pressed", svgName);
});
}
void buttonTappedUp(Key key, String svgName) {
setState(() {
lessThan600Pixel(key, "button_default", svgName);
});
}
【问题讨论】: