NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #700 most downloaded on pub.dev
Settings screens that look native on iOS, Android, macOS, Windows, Linux (GNOME) and the web, from one API, with sub-pages and a split view for tablets and desktop.
Last release 12 days ago
26 Sep 2026
Ships unpredictably
gaps range from 2 weeks to 4.2 years
Nearly every release is documented
notes for 14 of 15 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
17 releases · first in 2019
README: a More from Yako grid with an animated preview of each of our other packages.
Migrated from package:flutter/material.dart and package:flutter/cupertino.dart to the decoupled material_ui and cupertino_ui packages ( #207 , thanks
package:flutter/material.dart and package:flutter/cupertino.dart to the decoupled material_ui and cupertino_ui packages (#207, thanks @SlayerOrnstein)MaterialApp/CupertinoApp from material_ui/cupertino_ui. In an app still on package:flutter/material.dart, SettingsList can't read your theme and falls back to default colors and light mode. Stay on ^3.0.1 until your app has migrated.SettingsThemeData still win.CupertinoSettingsSwitch instead of CupertinoSwitch. Tests that find CupertinoSwitch need to look for CupertinoSettingsSwitch.MacosSettingsSwitch, not a CupertinoSwitch.FluentSettingsSwitch, not a CupertinoSwitch.AdwaitaSettingsSwitch, not a Material Switch, so tests that find Switch on Linux need to look for AdwaitaSettingsSwitch.SettingsList now comes from the width the list gets, not the screen width (see Bug fixes). A list in a side panel or a narrow pane of a wide window gets less side padding than before.CupertinoSettingsSwitch, so you can use it outside settings lists too.MacosSettingsSwitch (36x16, or 44x20 with MacosSettingsSwitchSize.large).surfaceContainer page. 16sp titles, tighter rows, and switches that show a check or a cross.FluentSettingsSwitch, a public WinUI-style toggle drawn in Flutter.go-next arrow on navigation tiles, hover and keyboard focus highlights, and an AdwClamp-style 600px column. Its switch, a 46x26 GNOME switch drawn in Flutter, is public as AdwaitaSettingsSwitch, and AdwaitaPanDownIcon gives combo rows their arrow.CustomSettingsTile (a ListTile, a Checkbox) work on the cards without a Scaffold, and text in custom tiles takes the tile's style and color.material_ui (#206)value, like on Android (#201, thanks @mmng-a)SettingsList.brightness now overrides the brightness from the app theme, in every style. It was ignored. The Android and web styles, whose colors come from the app's ColorScheme, then use a scheme of that brightness made from its primary color, and the iOS switch follows it tooApplicationType.both now goes by the platform the app runs on: the CupertinoTheme on iOS and macOS, the Material Theme elsewhere. Before, it read the Material brightness unless platform: DevicePlatform.iOS was set, so a CupertinoApp that follows the system could show light colors in dark modecrossAxisAlignment: CrossAxisAlignment.start now puts the content at the start edge on wide screens (left in LTR, right in RTL). The default padding used to keep it centeredSettingsList in a narrow pane of a wide window fits the pane. iOS tile descriptions also take the list's width nowSettingsSection with no tiles no longer crashes on iOS, macOS and Windows. Empty sections now show nothing on every platformSettingsTile.titleDescriptionPadding now pads the title description on iOS. titlePadding was used insteadSettingsTile.trailingPadding and descriptionPadding now work on iOS, macOS and Windows, and titlePadding on Android and web. They were ignored thereSettingsThemeData.inactiveSwitchColor with or without a trailing widget, and a web switch next to a trailing widget no longer has a hard-coded blue active color (#188)onPressed or onToggle from the keyboard (Tab, then Enter or Space)onPressed (iOS, macOS and Windows), the row and its switch are two items, both named by the titleonPressed, or disabled) no longer offer screen readers a tap actiononPressed are buttons, and section titles headingsSettingsSplitView: the list and the selected page side by side on iPad, tablets, unfolded foldables, desktop and the web, and a list with pushed pages on phones. It follows each platform app: iPad Settings (320pt sidebar, blue capsule selection, two panes from 600pt on iPads), Android Settings (36.36% list pane on surface dim, two panes at 720dp wide with a 600dp smallest width, no icons in a list pane under 380dp) and Chrome (266px menu, two panes above 980px). It keeps pages, their state, pushed sub-pages and the keyboard focus when a device folds, unfolds or rotates, handles back, Android predictive back and the iOS back swipe (a PopScope in a page can veto), restores the shown page, closes a page whose tile goes away, puts the panes on each side of a hinge, and mirrors in right-to-left layouts. In one pane, back first closes a route that a list tile pushed itself (Navigator.push, a menu, a sheet), and the view stays in one pane until that route has closed. It also works in a CupertinoApp or WidgetsApp without MaterialLocalizations. Control it with SettingsSplitController, SettingsSplitLayout, initialDestinationId and onDestinationChanged. The arrow keys move through the list pane and Tab moves between the panes (#2)SettingsSplitView on the desktop styles: each draws its settings app's sidebar and page header. In the sidebars Up and Down stop at the first and last rows, a click focuses the row (its focus ring shows once a key is pressed), Tab reaches switch rows, and screen readers hear which row is selected.
NavigationView (a 300px pane from 1008px and a 48px icon rail with tooltips from 641px, whose menu button opens the pane over the page). The selected item has an accent pill that slides from the previous one. The page title is large, and pages opened from a page show a breadcrumb. Both stay on one line: the first crumbs collapse into "…".SettingsDestination and SettingsTile.navigation(destination: ...): a tile can open a page without your own Navigator.push. In a SettingsList it pushes a Cupertino or Material route with the platform's page header (iOS 26 inline title and glass back button, Android's collapsing large title, the macOS toolbar, the Windows page title with a breadcrumb, GNOME's header bar, Chrome's page title), and the SettingsList in the page takes the platform, brightness and themes of the list that opened itSettingsThemeData.selectedTileColor, selectedTileTextColor, selectedTileIconColor and listPaneBackground for the split view, with defaults for every styleSettingsList finds no material_ui or cupertino_ui theme above itllms.txt: a compact API reference with the platform differences and the mistakes to avoid, for coding agents. It ships in the package, and the README's prompts fetch it from GitHubAGENTS.md with instructions for agents working on this repositorySettingsTile instead of SettingsTile.navigation (#204)dart format (flutter format was removed from Flutter)cd example && flutter run --route '/split-view?platform=android&theme=dark', ?screen=showcase&platform=windows on the web, or --dart-define=SCREEN=gnome-powerOne column per quarter.
README rewritten with a full API reference, examples and screenshots. No code changes
Replaced deprecated textScaleFactor with MediaQuery.textScalerOf
Theme.of(context).colorScheme (Material 3). Custom color overrides via SettingsThemeData still work.compact: bool parameter on SettingsTile — use smaller vertical padding for dense layoutscrossAxisAlignment parameter on SettingsListtitleTextStyle, tileTextStyle, tileDescriptionTextStyle, inactiveSwitchColor fields on SettingsThemeDataplatform: android/web was set (#139)SwitchTheme due to hardcoded fallback color (#188)super.key, super.child)textScaleFactor with MediaQuery.textScalerOfSwitch.activeColor with Switch.activeThumbColorCupertinoSwitch.activeColor with CupertinoSwitch.activeTrackColoractions/checkout@v4, coverage gate raised from 35% → 60%Enabled parameter for the ListTile widget
* Cover image was updated
The whole codebase was refactored
Nothing published for this version
Round borders for web and iPad settings tiles
* Null safety preview release
Added iosChevron and iosChevronPadding for forward chevron and color in iOS.
New onPressed(context) parameter for SettingsTile, onTap() is deprecated from now on.
Custom colors support for SettingsList
Change background color for dark theme in SettingsList with backgroundColor attribute.
Added onTap color change for cupertino tiles.
* Slight updates.
Initial release with basic SettingsTile and SettingsTile.switchTile.
1.04k
likes
160
points
324k
downloads
API reference
yako.dev
Settings screens that look native on iOS, Android, macOS, Windows, Linux (GNOME) and the web, from one API, with sub-pages and a split view for tablets and desktop.
Repository (GitHub)
View/report issues
#settings #preferences #ui #widget #adaptive
Apache-2.0 ( license )
cupertino_ui , flutter , material_ui
Packages that depend on settings_ui
1.04k
likes
160
points
324k
downloads
API reference
yako.dev
Settings screens that look native on iOS, Android, macOS, Windows, Linux (GNOME) and the web, from one API, with sub-pages and a split view for tablets and desktop.
Repository (GitHub)
View/report issues
#settings #preferences #ui #widget #adaptive
Apache-2.0 ( license )
cupertino_ui , flutter , material_ui
Packages that depend on settings_ui
Back
Your coding agent can read these notes before it upgrades. Set up the MCP server →