Class 如何在flatter中从另一个类获取一个类的变量

Class 如何在flatter中从另一个类获取一个类的变量,class,flutter,dart,widget,Class,Flutter,Dart,Widget,我有一个包含按钮的有状态小部件。我在一个名为“counter”的int变量中保存用户点击的次数 我有另一个小部件,它是我的主屏幕。我在那个屏幕上有一条文字。我需要动态显示此文本上的点击次数。因此,当用户点击第一个类上的按钮时,第二个类上的文本必须更新 将计数器变量从第一个小部件传递到第二个小部件的最佳方式是什么 添加了一些代码 我的两个类都是有状态的小部件。我声明了静态int计数器,如下所示 class AppListView extends StatefulWidget { static

我有一个包含按钮的有状态小部件。我在一个名为“counter”的int变量中保存用户点击的次数

我有另一个小部件,它是我的主屏幕。我在那个屏幕上有一条文字。我需要动态显示此文本上的点击次数。因此,当用户点击第一个类上的按钮时,第二个类上的文本必须更新

将计数器变量从第一个小部件传递到第二个小部件的最佳方式是什么

添加了一些代码

我的两个类都是有状态的小部件。我声明了静态int计数器,如下所示

class AppListView extends StatefulWidget {
  static int counter;

  @override
  _AppListViewState createState() => _AppListViewState();
}
现在我可以从其他类接触到计数器,但从它自己的类接触不到。我的意思是我需要增加那个部分的计数器,但它说未定义

class _AppListViewState extends State<AppListView> {
@override
  Widget build(BuildContext context) {
    return FlatButton(
           onPressed: (){
              counter++ (can't reach counter here)
      }
class\u应用程序视图状态扩展状态{
@凌驾
小部件构建(构建上下文){
返回按钮(
已按下:(){
计数器++(此处无法到达计数器)
}

您可能希望将所需变量设置为静态变量

class Something {
   static int counter; 
}
然后您可以在其他小部件中使用该变量,如下所示:

class StatefulWidget{
   FlatButton(
    onPressed: (){
      Something.counter++; // This variable is your counter you mentioned earlier
   }
);
}


方法1:

创建一个从父窗口小部件add pass到FirstWidget的值changed,当change couter->call ValueChanged向父窗口小部件发送更新时,父窗口小部件将更新第二个窗口小部件的状态

方法2:

从父窗口小部件创建一个流,将pass添加到FirstWidget和Sencond窗口小部件(使用StreamBuilder呈现窗口小部件)。当更改couter->更改流的值以更新到第二个窗口小部件时

更新演示:


很简单,在您的代码中只需在child中写入“widget.counter”。在statefull widget中,要访问父变量,您必须使用“widget.instace”。在这种情况下,“widget.counter”将允许您访问父变量的计数器

  class AppListView extends StatefulWidget {
    int counter;

    @override
    _AppListViewState createState() => _AppListViewState();
  }

  class _AppListViewState extends State<AppListView> {
  @override
    Widget build(BuildContext context) {
      return FlatButton(
            onPressed: (){
                widget.counter++
        }
类AppListView扩展StatefulWidget{
整数计数器;
@凌驾
_AppListViewState createState()=>\u AppListViewState();
}
类\u AppListViewState扩展了状态{
@凌驾
小部件构建(构建上下文){
返回按钮(
已按下:(){
小部件计数器++
}

注意:你不需要计数器变量是静态的,因为你可以用widget.counter在子类中调用它

我在问题中添加了一些代码。我尝试了这个方法,但我有另一个问题。但是我还需要从另一个类中访问该变量。所以实际上我需要它使其成为静态的,但当我使其成为静态的时候,widget.counter就不起作用了。你的同意通道1的演示很棒,你们有方法2的演示吗?