我正在尝试使用Flutter开发计算器应用程序,而不是通过键盘来输入,而是希望通过一些按钮来进行输入。当我按下一个按钮时出现问题,但是它没有在上面的“文本”小部件中显示相应的数据。
我的所有类都是无状态的,除了第一个MyApp类是有状态的。
我尝试通过在所有类之外创建一个常规变量,然后使用该变量将文本从按钮类传输到显示类,但这没有用。
常规变量是“ _calcText”
class DisplayAnswer extends StatelessWidget {
final String _text;
DisplayAnswer(this._text);
@override
Widget build(BuildContext context) {
return Expanded(
flex: 2,
child: Material(
color: Colors.greenAccent,
child: Ink(
padding: EdgeInsets.all(10.0),
child: Center(
child: Container(
constraints: BoxConstraints.expand(),
decoration: BoxDecoration(border: Border.all(color: Colors.black, width: 5.0), color: Colors.white),
child: Text(_text,style: TextStyle(fontSize: 50.0), textAlign: TextAlign.center,),
),
),
),
),
);
}
}
class NumButtons extends StatelessWidget {
final String _number;
NumButtons(this._number);
@override
Widget build(BuildContext context) {
return FlatButton(
onPressed: () {
_calcText = _calcText + _number;
print(_calcText);
DisplayAnswer(_calcText);
} ,
child: Text(_number.toString(), style: TextStyle(fontSize: 30.0),),
color: Colors.white
);
}
}
我想在DisplayAnswer的“文本”小部件中显示_calcText的值。我希望_calcText也随着单击其他按钮而改变,即;如果单击2,则文本应仅显示2,如果单击5,则应显示25
完整的代码在这里: https://drive.google.com/open?id=1C4MLAkjowloicbjBP_uV8BfpPzhz4Yxf
答案 0 :(得分:0)
使用由StatelessWidget插入的Statefull小部件。
分配操作之后,在setState()
函数上调用onPressed
方法。它将使用新值构建您的小部件。
在DisplayAnswer
上,您必须创建一个函数来增大值,而不是将此函数作为参数传递给NumButtons
。
将回调Function
传递到NumButtons
,例如:
class NumButtons extends StatelessWidget {
final String _number;
final Function callback;
...