从控制器颤动中分配变量值
Assigning variable value's from controller flutter
Okey,我们有 buton,每次他被推时 var _gracze 都会递减,如果 _gracze <=0 我希望他从控制器 graczeCon 中获取值并将其代替_gracze。我不知道如何从控制器获取值并将其放入 _gracze(SecGamePage 与 FirGamePage 相同)。请帮忙:c
class ZmienneClass extends ChangeNotifier {
var _gracze;
var _rundy;
int get iloscGraczy {
return _gracze;
}
void decrementCounter(int number) {
_gracze -= 1;
if (_gracze <= 1) {
_gracze = liczbagraczy;
}
}
}
}
class _InfoPageState extends State<InfoPage> {[![InfoPage, graczeCon][1]][1]
TextEditingController graczeCon = TextEditingController();
TextEditingController rundyCon = TextEditingController();
int liczbagraczy = 10; //here should be value from graczeCon
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [ChangeNotifierProvider.value(value: ZmienneClass())],
child: Scaffold(
backgroundColor: const Color.fromARGB(255, 84, 84, 84),
appBar: AppBar(
toolbarHeight: 70,]))
body: Stack(children: [
Column(
children: [
Center(
child: SizedBox(
child: TextFormField(
onChanged: (gracze) {},
controller: graczeCon,
)))])
Align(
child: TextButton(
onPressed: () {
Provider.of<ZmienneClass>(context, listen: false)
.setPlayerCount(
liczbagraczy: int.parse(graczeCon.text));
Navigator.push(context,
MaterialPageRoute(builder: (context) => FirGamePage()));
})];
}
}
class _FirGamePageState extends State<FirGamePage> {
@override
Widget build(BuildContext context) {
var _gracze = Provider.of<ZmienneClass>(context).iloscGraczy;
return Scaffold(...
Align(
alignment: Alignment.topLeft,
child: Text("Osoby: $_gracze",
)))
}
试试这个。
void decrementCounter(int number) {
_gracze -= number;
_gracze = _gracze <= 1 ? graczeCon.text ?? '' : liczbagraczy;
}
此外,请记住,graczeCon.text 是一个字符串值。所以按照你认为合适的方式处理它。
试试这些:
1.
graczeCon.text.toString()
graczeCon.value.toString()
这里的第一个解决方案应该可以工作,因为在我的情况下。
Okey,我们有 buton,每次他被推时 var _gracze 都会递减,如果 _gracze <=0 我希望他从控制器 graczeCon 中获取值并将其代替_gracze。我不知道如何从控制器获取值并将其放入 _gracze(SecGamePage 与 FirGamePage 相同)。请帮忙:c
class ZmienneClass extends ChangeNotifier {
var _gracze;
var _rundy;
int get iloscGraczy {
return _gracze;
}
void decrementCounter(int number) {
_gracze -= 1;
if (_gracze <= 1) {
_gracze = liczbagraczy;
}
}
}
}
class _InfoPageState extends State<InfoPage> {[![InfoPage, graczeCon][1]][1]
TextEditingController graczeCon = TextEditingController();
TextEditingController rundyCon = TextEditingController();
int liczbagraczy = 10; //here should be value from graczeCon
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [ChangeNotifierProvider.value(value: ZmienneClass())],
child: Scaffold(
backgroundColor: const Color.fromARGB(255, 84, 84, 84),
appBar: AppBar(
toolbarHeight: 70,]))
body: Stack(children: [
Column(
children: [
Center(
child: SizedBox(
child: TextFormField(
onChanged: (gracze) {},
controller: graczeCon,
)))])
Align(
child: TextButton(
onPressed: () {
Provider.of<ZmienneClass>(context, listen: false)
.setPlayerCount(
liczbagraczy: int.parse(graczeCon.text));
Navigator.push(context,
MaterialPageRoute(builder: (context) => FirGamePage()));
})];
}
}
class _FirGamePageState extends State<FirGamePage> {
@override
Widget build(BuildContext context) {
var _gracze = Provider.of<ZmienneClass>(context).iloscGraczy;
return Scaffold(...
Align(
alignment: Alignment.topLeft,
child: Text("Osoby: $_gracze",
)))
}
试试这个。
void decrementCounter(int number) {
_gracze -= number;
_gracze = _gracze <= 1 ? graczeCon.text ?? '' : liczbagraczy;
}
此外,请记住,graczeCon.text 是一个字符串值。所以按照你认为合适的方式处理它。
试试这些: 1.
graczeCon.text.toString()
graczeCon.value.toString()
这里的第一个解决方案应该可以工作,因为在我的情况下。