Попробуйте таким образом, вы просто используете один список или список классов pojo для достижения своей цели, пожалуйста, проверьте приведенное ниже решение для этого
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
class HomeScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return _HomeScreen();
}
}
class _HomeScreen extends State<HomeScreen> {
@override
void initState() {
// TODO: implement initState
super.initState();
}
@override
Widget build(BuildContext context) {
return Material(
child: ListView.builder(
itemCount: fields.length,
itemBuilder: (context, i) {
return new ExpansionTile(
title: new Text(fields[i].title, style: new TextStyle(fontSize: 12.0, fontWeight: FontWeight.bold),),
children: <Widget>[
new Column(
children: _buildExpandableContent(fields[i]),
),
],
);
},
),
);
}
_buildExpandableContent(Fields fields) {
List<Widget> columnContent = [];
for (String content in fields.dataList)
columnContent.add(
new ListTile(
title: new Text(content, style: new TextStyle(fontSize: 12.0,fontWeight: FontWeight.bold),),
leading: new Icon(fields.icon),
),
);
return columnContent;
}
}
class Fields {
final String title;
List<String> dataList = [];
final IconData icon;
Fields(this.title, this.dataList, this.icon);
}
List<Fields> fields = [
new Fields(
'DEFAULT CATEGORY',
['DEFAULT 1', 'DEFAULT 2', 'DEFAULT. 3', 'DEFAULT 4'],
Icons.line_style,
),
new Fields(
'SELECT COLOR',
['COLOR. 1', 'COLOR 2', 'COLOR 3'],
Icons.color_lens,
),
new Fields(
'ALERT TYPE',
['ALERT 1', 'ALERT 2', 'ALERT 3'],
Icons.ring_volume,
),
new Fields(
'VIBRATION TYPES',
['VIBRATION 1', 'VIBRATION 2', 'VIBRATION 3'],
Icons.vibration,
),
];
И, пожалуйста, проверьте следующее решение для него
![enter image description here](https://i.stack.imgur.com/SL1Qy.gif)