【问题标题】:How to set a variable value in a widget and in another widget?如何在一个小部件和另一个小部件中设置变量值?
【发布时间】:2021-06-01 05:12:00
【问题描述】:

我正在尝试从 SecondWidget 设置 FirstWidget 中存在的变量值(数字,在下面的代码中)。并通知两个小部件,以便在两个小部件中更新数字。

class FirstWidget extends StatefulWidget {
  @override
  _FirstWidgetState createState() => _FirstWidgetState();
}

class _FirstWidgetState extends State<FirstWidget> {
  int number = 0;

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Text(
          '$number',
        ),
        SecondWidget(),
        Text(
          '$number',
        )
      ],
    );
  }
}

class SecondWidget extends StatefulWidget {
  @override
  _SecondWidgetState createState() => _SecondWidgetState();
}

class _SecondWidgetState extends State<SecondWidget> {
  @override
  Widget build(BuildContext context) {
    return TextButton(
      child: Text('The number is $number. Press to increase the number'),
      onPressed: () {
        setState(() {
          number++;
        });
      },
    );
  }
}

(我知道那个代码会出错,但主要的想法是给你我想要解决的问题)。

我希望它显示的输出:

在按下按钮之前 -

0
The number is 0. Press to increase the number
0

按下按钮后-

1
The number is 1. Press to increase the number
1

如果你能帮助解决这个问题,我会很高兴。

谢谢。

【问题讨论】:

    标签: flutter dart widget setstate


    【解决方案1】:

    有很多方法可以得到你想要的结果,这个是使用 ValueNotifier 来改变 number

    的值

    这是一个基于您的代码的示例:

    https://dartpad.dev/b6409e10de32b280b8938aa75364fa7b

    我们可以使用另一个状态管理,比如 Provider 或 Cubit,我们会得到相同的结果。

    另一种方法是在第二个小部件中将函数作为参数传递,并在按下按钮时执行该函数

    【讨论】:

      猜你喜欢
      • 2020-07-31
      • 2021-12-26
      • 2021-04-03
      • 1970-01-01
      • 2012-08-05
      • 2011-01-18
      • 1970-01-01
      • 2021-12-26
      • 2018-10-30
      相关资源
      最近更新 更多