В showDialog вы не можете изменять никакие значения.
Следующая строка - из официальных документов.
Виджет, возвращаемый компоновщиком, не разделяет контекст с местоположением, из которого первоначально вызывается showDialog. Используйте StatefulBuilder или пользовательский StatefulWidget, если диалог должен динамически обновляться.
Итак, вам нужно использовать Stateful виджет.
Следующий минимальный код поможет вам понять больше.
class _DeleteWidgetState extends State<DeleteWidget> {
int t = 10;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: RaisedButton(
child: Text("Press"),
onPressed: () {
showDialog(
context: context,
builder: (_) {
return NewWidget(t);
});
},
),
),
);
}
}
class NewWidget extends StatefulWidget {
final int t;
NewWidget(this.t);
@override
_NewWidgetState createState() => _NewWidgetState();
}
class _NewWidgetState extends State<NewWidget> {
int newt;
@override
void initState() {
super.initState();
newt = widget.t;
}
@override
Widget build(BuildContext context) {
return Center(
child: RaisedButton(
child: Text(newt.toString()),
onPressed: () {
setState(() {
newt = newt + 1;
});
},
),
);
}
}