#flutter #class #dart #setstate
#flutter #класс #dart #setstate
Вопрос:
Следующий код не обновляет статус счетчика. Если я решу использовать функцию с именем _incremetcounter, нажимая Floatingactionbutton, она работает. Если я помещаю содержимое функции непосредственно в действие «при нажатии», оно не работает. Пожалуйста, объясните мне, почему? Ниже также приведен код класса. С уважением.
class _MyHomePageState extends State<MyHomePage> {
int counter = 0;
final appbarcounter = Counter(); //instance creation
void initState() {
super.initState();
appbarcounter.valuetoadd = 5;
}
void _incrementCounter() {
setState(() {
appbarcounter.incrementof();
counter = appbarcounter.countervalue;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:',
),
Text(
'$counter',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
//onPressed: _incrementCounter,
onPressed: () {
setstate() {
appbarcounter.incrementof();
counter = appbarcounter.countervalue;
}
;
},
tooltip: 'Increment',
child: Icon(Icons.add),
), // This trailing comma makes auto-formatting nicer for build methods.
);
}
}
class Counter {
Counter() {
this.countervalue;
this.valuetoadd;
countervalue = 0;
valuetoadd = 2;
}
int countervalue; //definisco la variabile contatore
int valuetoadd; //definisco la variabile contatore
int get number {
return valuetoadd;
}
void increment() {
countervalue ;
}
void incrementof() {
countervalue = countervalue valuetoadd;
}
void decrement() {
countervalue--;
}
void decrementof(int valuetoadd) {
countervalue = countervalue - valuetoadd;
}
}
Комментарии:
1. Может быть, опечатка ‘setstate’ в ‘setState’?
Ответ №1:
Измените setstate
с setState
помощью .
Ответ №2:
use this syntax
onPressed: () {
setState(() {
appbarcounter.incrementof();
counter = appbarcounter.countervalue;
});
},
Комментарии:
1. Хотя этот код может дать решение вопроса, лучше добавить контекст относительно того, почему / как это работает. Это может помочь будущим пользователям учиться и применять эти знания к своему собственному коду. Вы также, вероятно, получите положительные отзывы от пользователей в виде положительных голосов, когда будет объяснен код.