【发布时间】:2018-11-25 18:39:32
【问题描述】:
我在流构建器中有这个 listview.builder。在列表视图中,我在每个索引的容器中都有一个按钮和圆形进度指示器,现在我想仅在按下按钮时在该特定索引处显示圆形指示器。
我尝试使用布尔值来隐藏和显示指示器。但是我的问题是,当每次尝试使指标可见时,所有指标都变得可见,这不是我想要的。我怎样才能做到这一点?
【问题讨论】:
我在流构建器中有这个 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}"),
],
),
);
}
}
【讨论】:
您应该将每个列表项构建为具有自己的逻辑和状态的单独小部件,这样您就可以为每个项目拥有不同的布尔状态属性。
【讨论】: