Я пытаюсь создать приложение калькулятора, используя флаттер, где вместо ввода через клавиатуру я хочу вводить через некоторые кнопки.Проблема возникает, когда я нажимаю кнопку, но она не отображает соответствующие данные в виджете «Текст» выше.
Все мои классы не имеют состояния, кроме первого класса MyApp, который является Stateful.
Я попытался создать общую переменную вне всех классов и использовать ее для переноса текста из класса кнопки в класс отображения, но это не сработало.
Общая переменная «_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
);
}
}
Я хочу отобразить значение _calcText в виджете «Текст» DisplayAnswer.Я хочу, чтобы _calcText также менялся при нажатии других кнопок, т.е.если нажать 2, текст должен отображать только 2, если щелкнуть 5 после этого, он должен отобразить 25
Полный код здесь: https://drive.google.com/open?id=1C4MLAkjowloicbjBP_uV8BfpPzhz4Yxf