【问题标题】:Assigning variable value's from controller flutter从控制器颤振分配变量值
【发布时间】:2021-08-28 14:25:07
【问题描述】:

好的,我们有一个按钮,每次他被推时都会递减 var _gracze,如果 _gracze 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",
        )))
}

【问题讨论】:

    标签: flutter dart provider


    【解决方案1】:

    试试这些: 1.

    graczeCon.text.toString()
    
    graczeCon.value.toString()
    

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

    【讨论】:

      【解决方案2】:

      试试这个。

        void decrementCounter(int number) {
          _gracze -= number;
          _gracze = _gracze <= 1 ? graczeCon.text ?? '' : liczbagraczy;
        }
      

      另外,请记住,graczeCon.text 是一个字符串值。因此,请按您认为合适的方式处理。

      【讨论】:

        猜你喜欢
        • 2021-12-04
        • 2021-04-24
        • 2021-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-02
        • 2021-03-28
        • 2021-08-05
        相关资源
        最近更新 更多