从控制器颤动中分配变量值

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()

这里的第一个解决方案应该可以工作,因为在我的情况下。