Implementation
Builder quickSettingsListBuilder() {
return Builder(
builder: (context) {
List<String>? quickSettingsTitles =
prefs.getStringList('quickSettingsTitles');
List<String>? quickSettingsContents =
prefs.getStringList('quickSettingsContents');
if (quickSettingsTitles != null && quickSettingsContents != null) {
quickSettings = [];
for (int i = 0; i < quickSettingsTitles.length; i++) {
if (opened[i] == null) {
opened[i] = false;
}
quickSettings.add(Padding(
padding: const EdgeInsets.only(left: 8.0, right: 8.0, top: 8.0),
child: Column(
children: [
ListTile(
shape: RoundedRectangleBorder(
borderRadius: opened[i] == false
? BorderRadius.circular(8.0)
: const BorderRadius.only(
topLeft: Radius.circular(8.0),
topRight: Radius.circular(8.0))),
tileColor: themeData.activeColor.withOpacity(0.05),
leading: IconButton(
icon: opened[i] == false
? const Icon(FluentIcons.chevron_down)
: const Icon(FluentIcons.chevron_up),
onPressed: () {
setState(() {
opened[i] = opened[i] == true ? false : true;
});
},
),
title: Text(quickSettingsTitles[i]),
// subtitle: Text(quickSettingsContents[i]),
trailing: Row(
children: [
IconButton(
icon: const Icon(FluentIcons.edit),
onPressed: () {
setState(() {
showInput = true;
nameController.text = quickSettingsTitles[i];
contentController.text = quickSettingsContents[i];
});
},
),
IconButton(
icon: const Icon(FluentIcons.delete),
onPressed: () {
quickSettings.removeAt(i);
quickSettingsTitles.removeAt(i);
quickSettingsContents.removeAt(i);
prefs.setStringList(
'quickSettingsTitles', quickSettingsTitles);
prefs.setStringList(
'quickSettingsContents', quickSettingsContents);
setState(() {
quickSettings = quickSettings;
});
},
),
],
),
),
opened[i] == true
? Container(
decoration: BoxDecoration(
color: themeData.activeColor.withOpacity(0.05),
borderRadius: const BorderRadius.only(
bottomLeft: Radius.circular(8.0),
bottomRight: Radius.circular(8.0))),
width: MediaQuery.of(context).size.width,
child: Padding(
padding: const EdgeInsets.only(
left: 20.0, right: 20.0, bottom: 4.0),
child: Text(quickSettingsContents[i],
style: TextStyle(
color: themeData.activeColor
.withOpacity(0.4))),
))
: Container(),
],
),
));
}
}
if (quickSettings.isNotEmpty) {
return Column(children: quickSettings);
} else {
return Padding(
padding:
EdgeInsets.only(top: MediaQuery.of(context).size.height / 2.5),
child: Center(
child: Text('addquickactioninfo-text'.i18n()),
),
);
}
},
);
}