Flutter Android PreferenceScreen settings page

So, there doesn't exist any widget like that, you will have to create it on your own and handle their action in onChanged or onTap events. For example:

CheckBoxPreference

enter image description here

CheckboxListTile(
  value: true,
  title: Text("This is a CheckBoxPreference"),
  onChanged: (value) {},
),

SwitchPreference

enter image description here

SwitchListTile(
  value: false,
  title: Text("This is a SwitchPreference"),
  onChanged: (value) {},
),

ListPreference

enter image description here

ListTile(
  title: Text("This is a ListPreference"),
  subtitle: Text("Subtitle goes here"),
  onTap: (){},
)

According to my research now (I checked the https://pub.dartlang.org and other resources), the answer to your question is, no there is no page like that in Flutter (Check the official documentation). There is one plugin to have SharedPreferences which is from Flutter team, but if you check out its source code, you can see that it just does data modification. Other alternatives from other developers doesn't have anything visual too (I will keep checking, if I find one, I will edit my post).

There are some ways to do it, you can do it by calling android bridge and having android specific screen for only android (yeah I know, it doesn't make much sense) when you are with flutter or my real answer would be you can implement it by using list view as you mentioned and assign different child elements according to your needs.


In Flutter the easiest way to make a PreferenceScreen page is with a ListView and ListTiles.

ListView(children: <Widget>[
      ListTile(
        title: Text('Enable Feature'),
        trailing: Checkbox(
          value: PrefService.getBool('feature_enabled'),
          onChanged: (val) {
            setState(() {
              PrefService.setBool('feature_enabled', val);
            });
          },
        ),
        onTap: () {
          setState(() {
            PrefService.setBool(
                'feature_enabled', !PrefService.getBool('feature_enabled'));
          });
        },
      )
    ]),

But you still need to listen for changes and save them.

To make that easier you can use the package preferences. It removes the boilerplate code and manages saving the changes. The example above would look like this with preferences:

PreferencePage([
      CheckboxPreference(
        'Enable Feature',
        'feature_enabled',
      )
    ]),

You can find it under https://pub.dartlang.org/packages/preferences. For more features like subpages, hiding of preferences or more widgets look at the example.