以下代码_isVisible转换成动态变量实现 class MyWidget extends StatefulWidget { @override _MyWidgetState createState() => _MyWidgetState(); } class _MyWidgetState extends State<MyWidget> { bool _isVisible1 = false; bool _isVisible2 = false; bool _isVisible3 = false; @override Widget build(BuildContext context) { return Column( children: [ ListTile( title: Text('备注1'), trailing: IconButton( icon: Icon(_isVisible1 ? Icons.arrow_drop_up : Icons.arrow_drop_down), onPressed: () { setState(() { _isVisible1 = !_isVisible1; }); }, ), ), Visibility( visible: _isVisible1, child: Text('这是备注1的内容'), ), ListTile( title: Text('备注2'), trailing: IconButton( icon: Icon(_isVisible2 ? Icons.arrow_drop_up : Icons.arrow_drop_down), onPressed: () { setState(() { _isVisible2 = !_isVisible2; }); }, ), ), Visibility( visible: _isVisible2, child: Text('这是备注2的内容'), ), ListTile( title: Text('备注3'), trailing: IconButton( icon: Icon(_isVisible3 ? Icons.arrow_drop_up : Icons.arrow_drop_down), onPressed: () { setState(() { _isVisible3 = !_isVisible3; }); }, ), ), Visibility( visible: _isVisible3, child: Text('这是备注3的内容'), ), ], ); } }
时间: 2024-02-10 14:16:13 浏览: 177
以下是将_isVisible转换为动态变量的代码:
```dart
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
List<bool> _isVisible = List.generate(3, (_) => false);
@override
Widget build(BuildContext context) {
return Column(
children: [
ListTile(
title: Text('备注1'),
trailing: IconButton(
icon: Icon(_isVisible[0] ? Icons.arrow_drop_up : Icons.arrow_drop_down),
onPressed: () {
setState(() {
_isVisible[0] = !_isVisible[0];
});
},
),
),
Visibility(
visible: _isVisible[0],
child: Text('这是备注1的内容'),
),
ListTile(
title: Text('备注2'),
trailing: IconButton(
icon: Icon(_isVisible[1] ? Icons.arrow_drop_up : Icons.arrow_drop_down),
onPressed: () {
setState(() {
_isVisible[1] = !_isVisible[1];
});
},
),
),
Visibility(
visible: _isVisible[1],
child: Text('这是备注2的内容'),
),
ListTile(
title: Text('备注3'),
trailing: IconButton(
icon: Icon(_isVisible[2] ? Icons.arrow_drop_up : Icons.arrow_drop_down),
onPressed: () {
setState(() {
_isVisible[2] = !_isVisible[2];
});
},
),
),
Visibility(
visible: _isVisible[2],
child: Text('这是备注3的内容'),
),
],
);
}
}
```
这里使用了一个包含3个元素的bool型列表来存储每个备注的可见性状态。在构建视图时,使用ListView.builder()方法来动态生成每个列表项。每个列表项都包含一个标题和一个可展开/折叠的区域。当用户点击标题时,将使用setState()方法来切换相应的可见性状态,然后重绘UI以反映更改。
阅读全文