quickSettingsListBuilder method Null safety

Builder quickSettingsListBuilder()

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()),
          ),
        );
      }
    },
  );
}