简体   繁体   English

如何在flutter中的listview.builder中的索引处设置小部件的状态

[英]How to set the state of a widget at an index in a listview.builder in flutter

I have this listview.builder in a stream builder.我在流构建器中有这个 listview.builder 。 Inside the listview I have a button and circular progress indicator in a container at every index, now I want to show the circular indicator at that particular index only when the button is pressed.在列表视图中,我在容器中的每个索引处都有一个按钮和圆形进度指示器,现在我只想在按下按钮时在该特定索引处显示圆形指示器。

I have tried to use a boolean to hide and show the indicator.我尝试使用布尔值来隐藏和显示指标。 however my problem is when every try to make the indicator visible all of them become visible which is not what I want.但是我的问题是,当每次尝试使指示器可见时,它们都变得可见,这不是我想要的。 how can I achieve this?我怎样才能做到这一点?

This is an Example to demonstrate How to use a widget which manages its own state in a listview builder.这是一个示例,用于演示如何在列表视图构建器中使用管理其自身状态的小部件。

class MainClass extends StatefulWidget {
  @override
  _MainClassState createState() => _MainClassState();
}

class _MainClassState extends State<MainClass> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Column(
        children: <Widget>[
          ListView.builder(
           // itemCount: ,
            itemBuilder: (context,index){
                return HoldNewStateOf(
                  descriptions: "Description From List",
                  index: index,
                  name: "Name From List",
                );
            },
          )
        ],
      ),
    );
  }
}



class HoldNewStateOf extends StatefulWidget {
final name;
final descriptions;
final index;

HoldNewStateOf({
this.name,
this.descriptions,
this.index,
});
  @override
  _HoldNewStateOfState createState() => _HoldNewStateOfState();
}

class _HoldNewStateOfState extends State<HoldNewStateOf> {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        children: <Widget>[
          Text("Name: ${widget.name}"),
           Text("Description: ${widget.descriptions}"),
            Text("Current Index: ${widget.index}"),
        ],
      ),
    );
  }
}

您应该将每个列表项构建为具有自己的逻辑和状态的单独小部件,这样您就可以为每个项目拥有不同的布尔状态属性。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM