Refactor demos to use encapsulation (#734)

diff --git a/lib/data/demos.dart b/lib/data/demos.dart
index caece37..792a81c 100644
--- a/lib/data/demos.dart
+++ b/lib/data/demos.dart
@@ -105,1341 +105,6 @@
   final CodeDisplayer code;
 }
 
-List<GalleryDemo> allGalleryDemos(GalleryLocalizations localizations) =>
-    studies(localizations).values.toList() +
-    materialDemos(localizations) +
-    cupertinoDemos(localizations) +
-    otherDemos(localizations);
-
-List<String> allGalleryDemoDescriptions() =>
-    allGalleryDemos(GalleryLocalizationsEn())
-        .map((demo) => demo.describe)
-        .toList();
-
-Map<String, GalleryDemo> studies(GalleryLocalizations localizations) {
-  return <String, GalleryDemo>{
-    'shrine': GalleryDemo(
-      title: 'Shrine',
-      subtitle: localizations.shrineDescription,
-      category: GalleryDemoCategory.study,
-      studyId: 'shrine',
-    ),
-    'rally': GalleryDemo(
-      title: 'Rally',
-      subtitle: localizations.rallyDescription,
-      category: GalleryDemoCategory.study,
-      studyId: 'rally',
-    ),
-    'crane': GalleryDemo(
-      title: 'Crane',
-      subtitle: localizations.craneDescription,
-      category: GalleryDemoCategory.study,
-      studyId: 'crane',
-    ),
-    'fortnightly': GalleryDemo(
-      title: 'Fortnightly',
-      subtitle: localizations.fortnightlyDescription,
-      category: GalleryDemoCategory.study,
-      studyId: 'fortnightly',
-    ),
-    'reply': GalleryDemo(
-      title: 'Reply',
-      subtitle: localizations.replyDescription,
-      category: GalleryDemoCategory.study,
-      studyId: 'reply',
-    ),
-    'starterApp': GalleryDemo(
-      title: localizations.starterAppTitle,
-      subtitle: localizations.starterAppDescription,
-      category: GalleryDemoCategory.study,
-      studyId: 'starter',
-    ),
-  };
-}
-
-List<GalleryDemo> materialDemos(GalleryLocalizations localizations) {
-  LibraryLoader materialDemosLibrary = material_demos.loadLibrary;
-  return [
-    GalleryDemo(
-      title: localizations.demoAppBarTitle,
-      icon: GalleryIcons.appbar,
-      slug: 'app-bar',
-      subtitle: localizations.demoAppBarSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoAppBarTitle,
-          description: localizations.demoAppBarDescription,
-          documentationUrl: '$_docsBaseUrl/material/AppBar-class.html',
-          buildRoute: (_) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.AppBarDemo()),
-          code: CodeSegments.appbarDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoBannerTitle,
-      icon: GalleryIcons.listsLeaveBehind,
-      slug: 'banner',
-      subtitle: localizations.demoBannerSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoBannerTitle,
-          description: localizations.demoBannerDescription,
-          documentationUrl: '$_docsBaseUrl/material/MaterialBanner-class.html',
-          buildRoute: (_) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.BannerDemo()),
-          code: CodeSegments.bannerDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoBottomAppBarTitle,
-      icon: GalleryIcons.bottomAppBar,
-      slug: 'bottom-app-bar',
-      subtitle: localizations.demoBottomAppBarSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoBottomAppBarTitle,
-          description: localizations.demoBottomAppBarDescription,
-          documentationUrl: '$_docsBaseUrl/material/BottomAppBar-class.html',
-          buildRoute: (_) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.BottomAppBarDemo()),
-          code: CodeSegments.bottomAppBarDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoBottomNavigationTitle,
-      icon: GalleryIcons.bottomNavigation,
-      slug: 'bottom-navigation',
-      subtitle: localizations.demoBottomNavigationSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoBottomNavigationPersistentLabels,
-          description: localizations.demoBottomNavigationDescription,
-          documentationUrl:
-              '$_docsBaseUrl/material/BottomNavigationBar-class.html',
-          buildRoute: (_) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.BottomNavigationDemo(
-                    type: BottomNavigationDemoType.withLabels,
-                    restorationId: 'bottom_navigation_labels_demo',
-                  )),
-          code: CodeSegments.bottomNavigationDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoBottomNavigationSelectedLabel,
-          description: localizations.demoBottomNavigationDescription,
-          documentationUrl:
-              '$_docsBaseUrl/material/BottomNavigationBar-class.html',
-          buildRoute: (_) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.BottomNavigationDemo(
-                    type: BottomNavigationDemoType.withoutLabels,
-                    restorationId: 'bottom_navigation_without_labels_demo',
-                  )),
-          code: CodeSegments.bottomNavigationDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoBottomSheetTitle,
-      icon: GalleryIcons.bottomSheets,
-      slug: 'bottom-sheet',
-      subtitle: localizations.demoBottomSheetSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoBottomSheetPersistentTitle,
-          description: localizations.demoBottomSheetPersistentDescription,
-          documentationUrl: '$_docsBaseUrl/material/BottomSheet-class.html',
-          buildRoute: (_) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.BottomSheetDemo(
-                    type: BottomSheetDemoType.persistent,
-                  )),
-          code: CodeSegments.bottomSheetDemoPersistent,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoBottomSheetModalTitle,
-          description: localizations.demoBottomSheetModalDescription,
-          documentationUrl: '$_docsBaseUrl/material/BottomSheet-class.html',
-          buildRoute: (_) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.BottomSheetDemo(
-                    type: BottomSheetDemoType.modal,
-                  )),
-          code: CodeSegments.bottomSheetDemoModal,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoButtonTitle,
-      icon: GalleryIcons.genericButtons,
-      slug: 'button',
-      subtitle: localizations.demoButtonSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoTextButtonTitle,
-          description: localizations.demoTextButtonDescription,
-          documentationUrl: '$_docsBaseUrl/material/TextButton-class.html',
-          buildRoute: (_) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.ButtonDemo(type: ButtonDemoType.text)),
-          code: CodeSegments.buttonDemoText,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoElevatedButtonTitle,
-          description: localizations.demoElevatedButtonDescription,
-          documentationUrl: '$_docsBaseUrl/material/ElevatedButton-class.html',
-          buildRoute: (_) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.ButtonDemo(type: ButtonDemoType.elevated)),
-          code: CodeSegments.buttonDemoElevated,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoOutlinedButtonTitle,
-          description: localizations.demoOutlinedButtonDescription,
-          documentationUrl: '$_docsBaseUrl/material/OutlinedButton-class.html',
-          buildRoute: (_) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.ButtonDemo(type: ButtonDemoType.outlined)),
-          code: CodeSegments.buttonDemoOutlined,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoToggleButtonTitle,
-          description: localizations.demoToggleButtonDescription,
-          documentationUrl: '$_docsBaseUrl/material/ToggleButtons-class.html',
-          buildRoute: (_) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.ButtonDemo(type: ButtonDemoType.toggle)),
-          code: CodeSegments.buttonDemoToggle,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoFloatingButtonTitle,
-          description: localizations.demoFloatingButtonDescription,
-          documentationUrl:
-              '$_docsBaseUrl/material/FloatingActionButton-class.html',
-          buildRoute: (_) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.ButtonDemo(type: ButtonDemoType.floating)),
-          code: CodeSegments.buttonDemoFloating,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoCardTitle,
-      icon: GalleryIcons.cards,
-      slug: 'card',
-      subtitle: localizations.demoCardSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoCardTitle,
-          description: localizations.demoCardDescription,
-          documentationUrl: '$_docsBaseUrl/material/Card-class.html',
-          buildRoute: (context) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.CardsDemo()),
-          code: CodeSegments.cardsDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoChipTitle,
-      icon: GalleryIcons.chips,
-      slug: 'chip',
-      subtitle: localizations.demoChipSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoActionChipTitle,
-          description: localizations.demoActionChipDescription,
-          documentationUrl: '$_docsBaseUrl/material/ActionChip-class.html',
-          buildRoute: (context) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.ChipDemo(type: ChipDemoType.action)),
-          code: CodeSegments.chipDemoAction,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoChoiceChipTitle,
-          description: localizations.demoChoiceChipDescription,
-          documentationUrl: '$_docsBaseUrl/material/ChoiceChip-class.html',
-          buildRoute: (context) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.ChipDemo(type: ChipDemoType.choice)),
-          code: CodeSegments.chipDemoChoice,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoFilterChipTitle,
-          description: localizations.demoFilterChipDescription,
-          documentationUrl: '$_docsBaseUrl/material/FilterChip-class.html',
-          buildRoute: (context) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.ChipDemo(type: ChipDemoType.filter)),
-          code: CodeSegments.chipDemoFilter,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoInputChipTitle,
-          description: localizations.demoInputChipDescription,
-          documentationUrl: '$_docsBaseUrl/material/InputChip-class.html',
-          buildRoute: (context) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.ChipDemo(type: ChipDemoType.input)),
-          code: CodeSegments.chipDemoInput,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoDataTableTitle,
-      icon: GalleryIcons.dataTable,
-      slug: 'data-table',
-      subtitle: localizations.demoDataTableSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoDataTableTitle,
-          description: localizations.demoDataTableDescription,
-          documentationUrl: '$_docsBaseUrl/material/DataTable-class.html',
-          buildRoute: (context) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.DataTableDemo()),
-          code: CodeSegments.dataTableDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoDialogTitle,
-      icon: GalleryIcons.dialogs,
-      slug: 'dialog',
-      subtitle: localizations.demoDialogSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoAlertDialogTitle,
-          description: localizations.demoAlertDialogDescription,
-          documentationUrl: '$_docsBaseUrl/material/AlertDialog-class.html',
-          buildRoute: (context) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.DialogDemo(type: DialogDemoType.alert)),
-          code: CodeSegments.dialogDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoAlertTitleDialogTitle,
-          description: localizations.demoAlertDialogDescription,
-          documentationUrl: '$_docsBaseUrl/material/AlertDialog-class.html',
-          buildRoute: (context) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.DialogDemo(type: DialogDemoType.alertTitle)),
-          code: CodeSegments.dialogDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoSimpleDialogTitle,
-          description: localizations.demoSimpleDialogDescription,
-          documentationUrl: '$_docsBaseUrl/material/SimpleDialog-class.html',
-          buildRoute: (context) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.DialogDemo(type: DialogDemoType.simple)),
-          code: CodeSegments.dialogDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoFullscreenDialogTitle,
-          description: localizations.demoFullscreenDialogDescription,
-          documentationUrl:
-              '$_docsBaseUrl/widgets/PageRoute/fullscreenDialog.html',
-          buildRoute: (context) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.DialogDemo(type: DialogDemoType.fullscreen)),
-          code: CodeSegments.dialogDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoDividerTitle,
-      icon: GalleryIcons.divider,
-      slug: 'divider',
-      subtitle: localizations.demoDividerSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoDividerTitle,
-          description: localizations.demoDividerDescription,
-          documentationUrl: '$_docsBaseUrl/material/Divider-class.html',
-          buildRoute: (_) => DeferredWidget(
-              materialDemosLibrary,
-              () =>
-                  // ignore: prefer_const_constructors
-                  material_demos.DividerDemo(type: DividerDemoType.horizontal)),
-          code: CodeSegments.dividerDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoVerticalDividerTitle,
-          description: localizations.demoDividerDescription,
-          documentationUrl: '$_docsBaseUrl/material/VerticalDivider-class.html',
-          buildRoute: (_) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.DividerDemo(type: DividerDemoType.vertical)),
-          code: CodeSegments.verticalDividerDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoGridListsTitle,
-      icon: GalleryIcons.gridOn,
-      slug: 'grid-lists',
-      subtitle: localizations.demoGridListsSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoGridListsImageOnlyTitle,
-          description: localizations.demoGridListsDescription,
-          documentationUrl: '$_docsBaseUrl/widgets/GridView-class.html',
-          buildRoute: (context) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.GridListDemo(
-                  type: GridListDemoType.imageOnly)),
-          code: CodeSegments.gridListsDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoGridListsHeaderTitle,
-          description: localizations.demoGridListsDescription,
-          documentationUrl: '$_docsBaseUrl/widgets/GridView-class.html',
-          buildRoute: (context) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.GridListDemo(type: GridListDemoType.header)),
-          code: CodeSegments.gridListsDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoGridListsFooterTitle,
-          description: localizations.demoGridListsDescription,
-          documentationUrl: '$_docsBaseUrl/widgets/GridView-class.html',
-          buildRoute: (context) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.GridListDemo(type: GridListDemoType.footer)),
-          code: CodeSegments.gridListsDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoListsTitle,
-      icon: GalleryIcons.listAlt,
-      slug: 'lists',
-      subtitle: localizations.demoListsSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoOneLineListsTitle,
-          description: localizations.demoListsDescription,
-          documentationUrl: '$_docsBaseUrl/material/ListTile-class.html',
-          buildRoute: (context) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.ListDemo(type: ListDemoType.oneLine)),
-          code: CodeSegments.listDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoTwoLineListsTitle,
-          description: localizations.demoListsDescription,
-          documentationUrl: '$_docsBaseUrl/material/ListTile-class.html',
-          buildRoute: (context) => DeferredWidget(
-              materialDemosLibrary,
-              // ignore: prefer_const_constructors
-              () => material_demos.ListDemo(type: ListDemoType.twoLine)),
-          code: CodeSegments.listDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoMenuTitle,
-      icon: GalleryIcons.moreVert,
-      slug: 'menu',
-      subtitle: localizations.demoMenuSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoContextMenuTitle,
-          description: localizations.demoMenuDescription,
-          documentationUrl: '$_docsBaseUrl/material/PopupMenuItem-class.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            // ignore: prefer_const_constructors
-            () => material_demos.MenuDemo(type: MenuDemoType.contextMenu),
-          ),
-          code: CodeSegments.menuDemoContext,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoSectionedMenuTitle,
-          description: localizations.demoMenuDescription,
-          documentationUrl: '$_docsBaseUrl/material/PopupMenuItem-class.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            // ignore: prefer_const_constructors
-            () => material_demos.MenuDemo(type: MenuDemoType.sectionedMenu),
-          ),
-          code: CodeSegments.menuDemoSectioned,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoChecklistMenuTitle,
-          description: localizations.demoMenuDescription,
-          documentationUrl:
-              '$_docsBaseUrl/material/CheckedPopupMenuItem-class.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            // ignore: prefer_const_constructors
-            () => material_demos.MenuDemo(type: MenuDemoType.checklistMenu),
-          ),
-          code: CodeSegments.menuDemoChecklist,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoSimpleMenuTitle,
-          description: localizations.demoMenuDescription,
-          documentationUrl: '$_docsBaseUrl/material/PopupMenuItem-class.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            // ignore: prefer_const_constructors
-            () => material_demos.MenuDemo(type: MenuDemoType.simpleMenu),
-          ),
-          code: CodeSegments.menuDemoSimple,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoNavigationDrawerTitle,
-      icon: GalleryIcons.menu,
-      slug: 'nav_drawer',
-      subtitle: localizations.demoNavigationDrawerSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoNavigationDrawerTitle,
-          description: localizations.demoNavigationDrawerDescription,
-          documentationUrl: '$_docsBaseUrl/material/Drawer-class.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            // ignore: prefer_const_constructors
-            () => material_demos.NavDrawerDemo(),
-          ),
-          code: CodeSegments.navDrawerDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoNavigationRailTitle,
-      icon: GalleryIcons.navigationRail,
-      slug: 'nav_rail',
-      subtitle: localizations.demoNavigationRailSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoNavigationRailTitle,
-          description: localizations.demoNavigationRailDescription,
-          documentationUrl: '$_docsBaseUrl/material/NavigationRail-class.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            // ignore: prefer_const_constructors
-            () => material_demos.NavRailDemo(),
-          ),
-          code: CodeSegments.navRailDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoPickersTitle,
-      icon: GalleryIcons.event,
-      slug: 'pickers',
-      subtitle: localizations.demoPickersSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoDatePickerTitle,
-          description: localizations.demoDatePickerDescription,
-          documentationUrl: '$_docsBaseUrl/material/showDatePicker.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            // ignore: prefer_const_constructors
-            () => material_demos.PickerDemo(type: PickerDemoType.date),
-          ),
-          code: CodeSegments.pickerDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoTimePickerTitle,
-          description: localizations.demoTimePickerDescription,
-          documentationUrl: '$_docsBaseUrl/material/showTimePicker.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            // ignore: prefer_const_constructors
-            () => material_demos.PickerDemo(type: PickerDemoType.time),
-          ),
-          code: CodeSegments.pickerDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoDateRangePickerTitle,
-          description: localizations.demoDateRangePickerDescription,
-          documentationUrl: '$_docsBaseUrl/material/showDateRangePicker.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            // ignore: prefer_const_constructors
-            () => material_demos.PickerDemo(type: PickerDemoType.range),
-          ),
-          code: CodeSegments.pickerDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoProgressIndicatorTitle,
-      icon: GalleryIcons.progressActivity,
-      slug: 'progress-indicator',
-      subtitle: localizations.demoProgressIndicatorSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoCircularProgressIndicatorTitle,
-          description: localizations.demoCircularProgressIndicatorDescription,
-          documentationUrl:
-              '$_docsBaseUrl/material/CircularProgressIndicator-class.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            // ignore: prefer_const_constructors
-            () => material_demos.ProgressIndicatorDemo(
-              type: ProgressIndicatorDemoType.circular,
-            ),
-          ),
-          code: CodeSegments.progressIndicatorsDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoLinearProgressIndicatorTitle,
-          description: localizations.demoLinearProgressIndicatorDescription,
-          documentationUrl:
-              '$_docsBaseUrl/material/LinearProgressIndicator-class.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            // ignore: prefer_const_constructors
-            () => material_demos.ProgressIndicatorDemo(
-              type: ProgressIndicatorDemoType.linear,
-            ),
-          ),
-          code: CodeSegments.progressIndicatorsDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoSelectionControlsTitle,
-      icon: GalleryIcons.checkBox,
-      slug: 'selection-controls',
-      subtitle: localizations.demoSelectionControlsSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoSelectionControlsCheckboxTitle,
-          description: localizations.demoSelectionControlsCheckboxDescription,
-          documentationUrl: '$_docsBaseUrl/material/Checkbox-class.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            // ignore: prefer_const_constructors
-            () => material_demos.SelectionControlsDemo(
-              type: SelectionControlsDemoType.checkbox,
-            ),
-          ),
-          code: CodeSegments.selectionControlsDemoCheckbox,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoSelectionControlsRadioTitle,
-          description: localizations.demoSelectionControlsRadioDescription,
-          documentationUrl: '$_docsBaseUrl/material/Radio-class.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            // ignore: prefer_const_constructors
-            () => material_demos.SelectionControlsDemo(
-              type: SelectionControlsDemoType.radio,
-            ),
-          ),
-          code: CodeSegments.selectionControlsDemoRadio,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoSelectionControlsSwitchTitle,
-          description: localizations.demoSelectionControlsSwitchDescription,
-          documentationUrl: '$_docsBaseUrl/material/Switch-class.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            // ignore: prefer_const_constructors
-            () => material_demos.SelectionControlsDemo(
-              type: SelectionControlsDemoType.switches,
-            ),
-          ),
-          code: CodeSegments.selectionControlsDemoSwitches,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoSlidersTitle,
-      icon: GalleryIcons.sliders,
-      slug: 'sliders',
-      subtitle: localizations.demoSlidersSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoSlidersTitle,
-          description: localizations.demoSlidersDescription,
-          documentationUrl: '$_docsBaseUrl/material/Slider-class.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            // ignore: prefer_const_constructors
-            () => material_demos.SlidersDemo(type: SlidersDemoType.sliders),
-          ),
-          code: CodeSegments.slidersDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoRangeSlidersTitle,
-          description: localizations.demoRangeSlidersDescription,
-          documentationUrl: '$_docsBaseUrl/material/RangeSlider-class.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            () =>
-                // ignore: prefer_const_constructors
-                material_demos.SlidersDemo(type: SlidersDemoType.rangeSliders),
-          ),
-          code: CodeSegments.rangeSlidersDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoCustomSlidersTitle,
-          description: localizations.demoCustomSlidersDescription,
-          documentationUrl: '$_docsBaseUrl/material/SliderTheme-class.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            () =>
-                // ignore: prefer_const_constructors
-                material_demos.SlidersDemo(type: SlidersDemoType.customSliders),
-          ),
-          code: CodeSegments.customSlidersDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoSnackbarsTitle,
-      icon: GalleryIcons.snackbar,
-      slug: 'snackbars',
-      subtitle: localizations.demoSnackbarsSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoSnackbarsTitle,
-          description: localizations.demoSnackbarsDescription,
-          documentationUrl: '$_docsBaseUrl/material/SnackBar-class.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            // ignore: prefer_const_constructors
-            () => material_demos.SnackbarsDemo(),
-          ),
-          code: CodeSegments.snackbarsDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoTabsTitle,
-      icon: GalleryIcons.tabs,
-      slug: 'tabs',
-      subtitle: localizations.demoTabsSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoTabsScrollingTitle,
-          description: localizations.demoTabsDescription,
-          documentationUrl: '$_docsBaseUrl/material/TabBar-class.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            // ignore: prefer_const_constructors
-            () => material_demos.TabsDemo(type: TabsDemoType.scrollable),
-          ),
-          code: CodeSegments.tabsScrollableDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoTabsNonScrollingTitle,
-          description: localizations.demoTabsDescription,
-          documentationUrl: '$_docsBaseUrl/material/TabBar-class.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            // ignore: prefer_const_constructors
-            () => material_demos.TabsDemo(type: TabsDemoType.nonScrollable),
-          ),
-          code: CodeSegments.tabsNonScrollableDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoTextFieldTitle,
-      icon: GalleryIcons.textFieldsAlt,
-      slug: 'text-field',
-      subtitle: localizations.demoTextFieldSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoTextFieldTitle,
-          description: localizations.demoTextFieldDescription,
-          documentationUrl: '$_docsBaseUrl/material/TextField-class.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            // ignore: prefer_const_constructors
-            () => material_demos.TextFieldDemo(),
-          ),
-          code: CodeSegments.textFieldDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-    GalleryDemo(
-      title: localizations.demoTooltipTitle,
-      icon: GalleryIcons.tooltip,
-      slug: 'tooltip',
-      subtitle: localizations.demoTooltipSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoTooltipTitle,
-          description: localizations.demoTooltipDescription,
-          documentationUrl: '$_docsBaseUrl/material/Tooltip-class.html',
-          buildRoute: (context) => DeferredWidget(
-            materialDemosLibrary,
-            // ignore: prefer_const_constructors
-            () => material_demos.TooltipDemo(),
-          ),
-          code: CodeSegments.tooltipDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.material,
-    ),
-  ];
-}
-
-List<GalleryDemo> cupertinoDemos(GalleryLocalizations localizations) {
-  LibraryLoader cupertinoLoader = cupertino_demos.loadLibrary;
-  return [
-    GalleryDemo(
-      title: localizations.demoCupertinoActivityIndicatorTitle,
-      icon: GalleryIcons.cupertinoProgress,
-      slug: 'cupertino-activity-indicator',
-      subtitle: localizations.demoCupertinoActivityIndicatorSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoCupertinoActivityIndicatorTitle,
-          description: localizations.demoCupertinoActivityIndicatorDescription,
-          documentationUrl:
-              '$_docsBaseUrl/cupertino/CupertinoActivityIndicator-class.html',
-          buildRoute: (_) => DeferredWidget(
-              cupertinoLoader,
-              // ignore: prefer_const_constructors
-              () => cupertino_demos.CupertinoProgressIndicatorDemo()),
-          code: CodeSegments.cupertinoActivityIndicatorDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.cupertino,
-    ),
-    GalleryDemo(
-      title: localizations.demoCupertinoAlertsTitle,
-      icon: GalleryIcons.dialogs,
-      slug: 'cupertino-alerts',
-      subtitle: localizations.demoCupertinoAlertsSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoCupertinoAlertTitle,
-          description: localizations.demoCupertinoAlertDescription,
-          documentationUrl:
-              '$_docsBaseUrl/cupertino/CupertinoAlertDialog-class.html',
-          buildRoute: (_) => DeferredWidget(
-              cupertinoLoader,
-              // ignore: prefer_const_constructors
-              () => cupertino_demos.CupertinoAlertDemo(
-                  type: AlertDemoType.alert)),
-          code: CodeSegments.cupertinoAlertDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoCupertinoAlertWithTitleTitle,
-          description: localizations.demoCupertinoAlertDescription,
-          documentationUrl:
-              '$_docsBaseUrl/cupertino/CupertinoAlertDialog-class.html',
-          buildRoute: (_) => DeferredWidget(
-              cupertinoLoader,
-              // ignore: prefer_const_constructors
-              () => cupertino_demos.CupertinoAlertDemo(
-                  type: AlertDemoType.alertTitle)),
-          code: CodeSegments.cupertinoAlertDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoCupertinoAlertButtonsTitle,
-          description: localizations.demoCupertinoAlertDescription,
-          documentationUrl:
-              '$_docsBaseUrl/cupertino/CupertinoAlertDialog-class.html',
-          buildRoute: (_) => DeferredWidget(
-              cupertinoLoader,
-              // ignore: prefer_const_constructors
-              () => cupertino_demos.CupertinoAlertDemo(
-                  type: AlertDemoType.alertButtons)),
-          code: CodeSegments.cupertinoAlertDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoCupertinoAlertButtonsOnlyTitle,
-          description: localizations.demoCupertinoAlertDescription,
-          documentationUrl:
-              '$_docsBaseUrl/cupertino/CupertinoAlertDialog-class.html',
-          buildRoute: (_) => DeferredWidget(
-              cupertinoLoader,
-              // ignore: prefer_const_constructors
-              () => cupertino_demos.CupertinoAlertDemo(
-                  type: AlertDemoType.alertButtonsOnly)),
-          code: CodeSegments.cupertinoAlertDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoCupertinoActionSheetTitle,
-          description: localizations.demoCupertinoActionSheetDescription,
-          documentationUrl:
-              '$_docsBaseUrl/cupertino/CupertinoActionSheet-class.html',
-          buildRoute: (_) => DeferredWidget(
-              cupertinoLoader,
-              // ignore: prefer_const_constructors
-              () => cupertino_demos.CupertinoAlertDemo(
-                  type: AlertDemoType.actionSheet)),
-          code: CodeSegments.cupertinoAlertDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.cupertino,
-    ),
-    GalleryDemo(
-      title: localizations.demoCupertinoButtonsTitle,
-      icon: GalleryIcons.genericButtons,
-      slug: 'cupertino-buttons',
-      subtitle: localizations.demoCupertinoButtonsSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoCupertinoButtonsTitle,
-          description: localizations.demoCupertinoButtonsDescription,
-          documentationUrl:
-              '$_docsBaseUrl/cupertino/CupertinoButton-class.html',
-          buildRoute: (_) => DeferredWidget(
-              cupertinoLoader,
-              // ignore: prefer_const_constructors
-              () => cupertino_demos.CupertinoButtonDemo()),
-          code: CodeSegments.cupertinoButtonDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.cupertino,
-    ),
-    GalleryDemo(
-      title: localizations.demoCupertinoContextMenuTitle,
-      icon: GalleryIcons.moreVert,
-      slug: 'cupertino-context-menu',
-      subtitle: localizations.demoCupertinoContextMenuSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoCupertinoContextMenuTitle,
-          description: localizations.demoCupertinoContextMenuDescription,
-          documentationUrl:
-              '$_docsBaseUrl/cupertino/CupertinoContextMenu-class.html',
-          buildRoute: (_) => DeferredWidget(
-              cupertinoLoader,
-              // ignore: prefer_const_constructors
-              () => cupertino_demos.CupertinoContextMenuDemo()),
-          code: CodeSegments.cupertinoContextMenuDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.cupertino,
-    ),
-    GalleryDemo(
-      title: localizations.demoCupertinoNavigationBarTitle,
-      icon: GalleryIcons.bottomSheetPersistent,
-      slug: 'cupertino-navigation-bar',
-      subtitle: localizations.demoCupertinoNavigationBarSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoCupertinoNavigationBarTitle,
-          description: localizations.demoCupertinoNavigationBarDescription,
-          documentationUrl:
-              '$_docsBaseUrl/cupertino/CupertinoNavigationBar-class.html',
-          buildRoute: (_) => DeferredWidget(
-              cupertinoLoader,
-              // ignore: prefer_const_constructors
-              () => cupertino_demos.CupertinoNavigationBarDemo()),
-          code: CodeSegments.cupertinoNavigationBarDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.cupertino,
-    ),
-    GalleryDemo(
-      title: localizations.demoCupertinoPickerTitle,
-      icon: GalleryIcons.listAlt,
-      slug: 'cupertino-picker',
-      subtitle: localizations.demoCupertinoPickerSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoCupertinoPickerTitle,
-          description: localizations.demoCupertinoPickerDescription,
-          documentationUrl:
-              '$_docsBaseUrl/cupertino/CupertinoDatePicker-class.html',
-          buildRoute: (_) => DeferredWidget(
-              cupertinoLoader,
-              // ignore: prefer_const_constructors
-              () => cupertino_demos.CupertinoPickerDemo()),
-          code: CodeSegments.cupertinoPickersDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.cupertino,
-    ),
-    GalleryDemo(
-      title: localizations.demoCupertinoScrollbarTitle,
-      icon: GalleryIcons.listAlt,
-      slug: 'cupertino-scrollbar',
-      subtitle: localizations.demoCupertinoScrollbarSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoCupertinoScrollbarTitle,
-          description: localizations.demoCupertinoScrollbarDescription,
-          documentationUrl:
-              '$_docsBaseUrl/cupertino/CupertinoScrollbar-class.html',
-          buildRoute: (_) => DeferredWidget(
-              cupertinoLoader,
-              // ignore: prefer_const_constructors
-              () => cupertino_demos.CupertinoScrollbarDemo()),
-          code: CodeSegments.cupertinoScrollbarDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.cupertino,
-    ),
-    GalleryDemo(
-      title: localizations.demoCupertinoSegmentedControlTitle,
-      icon: GalleryIcons.tabs,
-      slug: 'cupertino-segmented-control',
-      subtitle: localizations.demoCupertinoSegmentedControlSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoCupertinoSegmentedControlTitle,
-          description: localizations.demoCupertinoSegmentedControlDescription,
-          documentationUrl:
-              '$_docsBaseUrl/cupertino/CupertinoSegmentedControl-class.html',
-          buildRoute: (_) => DeferredWidget(
-              cupertinoLoader,
-              // ignore: prefer_const_constructors
-              () => cupertino_demos.CupertinoSegmentedControlDemo()),
-          code: CodeSegments.cupertinoSegmentedControlDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.cupertino,
-    ),
-    GalleryDemo(
-      title: localizations.demoCupertinoSliderTitle,
-      icon: GalleryIcons.sliders,
-      slug: 'cupertino-slider',
-      subtitle: localizations.demoCupertinoSliderSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoCupertinoSliderTitle,
-          description: localizations.demoCupertinoSliderDescription,
-          documentationUrl:
-              '$_docsBaseUrl/cupertino/CupertinoSlider-class.html',
-          buildRoute: (_) => DeferredWidget(
-              cupertinoLoader,
-              // ignore: prefer_const_constructors
-              () => cupertino_demos.CupertinoSliderDemo()),
-          code: CodeSegments.cupertinoSliderDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.cupertino,
-    ),
-    GalleryDemo(
-      title: localizations.demoSelectionControlsSwitchTitle,
-      icon: GalleryIcons.cupertinoSwitch,
-      slug: 'cupertino-switch',
-      subtitle: localizations.demoCupertinoSwitchSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoSelectionControlsSwitchTitle,
-          description: localizations.demoCupertinoSwitchDescription,
-          documentationUrl:
-              '$_docsBaseUrl/cupertino/CupertinoSwitch-class.html',
-          buildRoute: (_) => DeferredWidget(
-              cupertinoLoader,
-              // ignore: prefer_const_constructors
-              () => cupertino_demos.CupertinoSwitchDemo()),
-          code: CodeSegments.cupertinoSwitchDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.cupertino,
-    ),
-    GalleryDemo(
-      title: localizations.demoCupertinoTabBarTitle,
-      icon: GalleryIcons.bottomNavigation,
-      slug: 'cupertino-tab-bar',
-      subtitle: localizations.demoCupertinoTabBarSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoCupertinoTabBarTitle,
-          description: localizations.demoCupertinoTabBarDescription,
-          documentationUrl:
-              '$_docsBaseUrl/cupertino/CupertinoTabBar-class.html',
-          buildRoute: (_) => DeferredWidget(
-              cupertinoLoader,
-              // ignore: prefer_const_constructors
-              () => cupertino_demos.CupertinoTabBarDemo()),
-          code: CodeSegments.cupertinoNavigationDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.cupertino,
-    ),
-    GalleryDemo(
-      title: localizations.demoCupertinoTextFieldTitle,
-      icon: GalleryIcons.textFieldsAlt,
-      slug: 'cupertino-text-field',
-      subtitle: localizations.demoCupertinoTextFieldSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoCupertinoTextFieldTitle,
-          description: localizations.demoCupertinoTextFieldDescription,
-          documentationUrl:
-              '$_docsBaseUrl/cupertino/CupertinoTextField-class.html',
-          buildRoute: (_) => DeferredWidget(
-              cupertinoLoader,
-              // ignore: prefer_const_constructors
-              () => cupertino_demos.CupertinoTextFieldDemo()),
-          code: CodeSegments.cupertinoTextFieldDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.cupertino,
-    ),
-    GalleryDemo(
-      title: localizations.demoCupertinoSearchTextFieldTitle,
-      icon: GalleryIcons.search,
-      slug: 'cupertino-search-text-field',
-      subtitle: localizations.demoCupertinoSearchTextFieldSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoCupertinoSearchTextFieldTitle,
-          description: localizations.demoCupertinoSearchTextFieldDescription,
-          documentationUrl:
-              '$_docsBaseUrl/cupertino/CupertinoSearchTextField-class.html',
-          buildRoute: (_) => DeferredWidget(
-              cupertinoLoader,
-              // ignore: prefer_const_constructors
-              () => cupertino_demos.CupertinoSearchTextFieldDemo()),
-          code: CodeSegments.cupertinoTextFieldDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.cupertino,
-    ),
-  ];
-}
-
-List<GalleryDemo> otherDemos(GalleryLocalizations localizations) {
-  return [
-    GalleryDemo(
-      title: localizations.demoTwoPaneTitle,
-      icon: GalleryIcons.bottomSheetPersistent,
-      slug: 'two-pane',
-      subtitle: localizations.demoTwoPaneSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoTwoPaneFoldableLabel,
-          description: localizations.demoTwoPaneFoldableDescription,
-          documentationUrl:
-              'https://pub.dev/documentation/dual_screen/latest/dual_screen/TwoPane-class.html',
-          buildRoute: (_) => DeferredWidget(
-            twopane_demo.loadLibrary,
-            // ignore: prefer_const_constructors
-            () => twopane_demo.TwoPaneDemo(
-              type: twopane_demo.TwoPaneDemoType.foldable,
-              restorationId: 'two_pane_foldable',
-            ),
-          ),
-          code: CodeSegments.twoPaneDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoTwoPaneTabletLabel,
-          description: localizations.demoTwoPaneTabletDescription,
-          documentationUrl:
-              'https://pub.dev/documentation/dual_screen/latest/dual_screen/TwoPane-class.html',
-          buildRoute: (_) => DeferredWidget(
-            twopane_demo.loadLibrary,
-            // ignore: prefer_const_constructors
-            () => twopane_demo.TwoPaneDemo(
-              type: twopane_demo.TwoPaneDemoType.tablet,
-              restorationId: 'two_pane_tablet',
-            ),
-          ),
-          code: CodeSegments.twoPaneDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoTwoPaneSmallScreenLabel,
-          description: localizations.demoTwoPaneSmallScreenDescription,
-          documentationUrl:
-              'https://pub.dev/documentation/dual_screen/latest/dual_screen/TwoPane-class.html',
-          buildRoute: (_) => DeferredWidget(
-            twopane_demo.loadLibrary,
-            // ignore: prefer_const_constructors
-            () => twopane_demo.TwoPaneDemo(
-              type: twopane_demo.TwoPaneDemoType.smallScreen,
-              restorationId: 'two_pane_single',
-            ),
-          ),
-          code: CodeSegments.twoPaneDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.other,
-    ),
-    GalleryDemo(
-      title: localizations.demoMotionTitle,
-      icon: GalleryIcons.animation,
-      slug: 'motion',
-      subtitle: localizations.demoMotionSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoContainerTransformTitle,
-          description: localizations.demoContainerTransformDescription,
-          documentationUrl: '$_docsAnimationsUrl/OpenContainer-class.html',
-          buildRoute: (_) => DeferredWidget(
-              motion_demo_container.loadLibrary,
-              // ignore: prefer_const_constructors
-              () => motion_demo_container.OpenContainerTransformDemo()),
-          code: CodeSegments.openContainerTransformDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoSharedXAxisTitle,
-          description: localizations.demoSharedAxisDescription,
-          documentationUrl:
-              '$_docsAnimationsUrl/SharedAxisTransition-class.html',
-          buildRoute: (_) => const SharedXAxisTransitionDemo(),
-          code: CodeSegments.sharedXAxisTransitionDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoSharedYAxisTitle,
-          description: localizations.demoSharedAxisDescription,
-          documentationUrl:
-              '$_docsAnimationsUrl/SharedAxisTransition-class.html',
-          buildRoute: (_) => const SharedYAxisTransitionDemo(),
-          code: CodeSegments.sharedYAxisTransitionDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoSharedZAxisTitle,
-          description: localizations.demoSharedAxisDescription,
-          documentationUrl:
-              '$_docsAnimationsUrl/SharedAxisTransition-class.html',
-          buildRoute: (_) => const SharedZAxisTransitionDemo(),
-          code: CodeSegments.sharedZAxisTransitionDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoFadeThroughTitle,
-          description: localizations.demoFadeThroughDescription,
-          documentationUrl:
-              '$_docsAnimationsUrl/FadeThroughTransition-class.html',
-          buildRoute: (_) => const FadeThroughTransitionDemo(),
-          code: CodeSegments.fadeThroughTransitionDemo,
-        ),
-        GalleryDemoConfiguration(
-          title: localizations.demoFadeScaleTitle,
-          description: localizations.demoFadeScaleDescription,
-          documentationUrl:
-              '$_docsAnimationsUrl/FadeScaleTransition-class.html',
-          buildRoute: (_) => const FadeScaleTransitionDemo(),
-          code: CodeSegments.fadeScaleTransitionDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.other,
-    ),
-    GalleryDemo(
-      title: localizations.demoColorsTitle,
-      icon: GalleryIcons.colors,
-      slug: 'colors',
-      subtitle: localizations.demoColorsSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoColorsTitle,
-          description: localizations.demoColorsDescription,
-          documentationUrl: '$_docsBaseUrl/material/MaterialColor-class.html',
-          buildRoute: (_) => DeferredWidget(
-              colors_demo.loadLibrary,
-              // ignore: prefer_const_constructors
-              () => colors_demo.ColorsDemo()),
-          code: CodeSegments.colorsDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.other,
-    ),
-    GalleryDemo(
-      title: localizations.demoTypographyTitle,
-      icon: GalleryIcons.customTypography,
-      slug: 'typography',
-      subtitle: localizations.demoTypographySubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demoTypographyTitle,
-          description: localizations.demoTypographyDescription,
-          documentationUrl: '$_docsBaseUrl/material/TextTheme-class.html',
-          buildRoute: (_) => DeferredWidget(
-              typography.loadLibrary,
-              // ignore: prefer_const_constructors
-              () => typography.TypographyDemo()),
-          code: CodeSegments.typographyDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.other,
-    ),
-    GalleryDemo(
-      title: localizations.demo2dTransformationsTitle,
-      icon: GalleryIcons.gridOn,
-      slug: '2d-transformations',
-      subtitle: localizations.demo2dTransformationsSubtitle,
-      configurations: [
-        GalleryDemoConfiguration(
-          title: localizations.demo2dTransformationsTitle,
-          description: localizations.demo2dTransformationsDescription,
-          documentationUrl: '$_docsBaseUrl/widgets/GestureDetector-class.html',
-          buildRoute: (_) => DeferredWidget(
-              transformations_demo.loadLibrary,
-              // ignore: prefer_const_constructors
-              () => transformations_demo.TransformationsDemo()),
-          code: CodeSegments.transformationsDemo,
-        ),
-      ],
-      category: GalleryDemoCategory.other,
-    ),
-  ];
-}
-
-Map<String?, GalleryDemo> slugToDemo(BuildContext context) {
-  final localizations = GalleryLocalizations.of(context)!;
-  return LinkedHashMap<String?, GalleryDemo>.fromIterable(
-    allGalleryDemos(localizations),
-    key: (dynamic demo) => demo.slug as String?,
-  );
-}
-
 /// Awaits all deferred libraries for tests.
 Future<void> pumpDeferredLibraries() {
   final futures = <Future<void>>[
@@ -1452,3 +117,1283 @@
   ];
   return Future.wait(futures);
 }
+
+class Demos {
+  static Map<String?, GalleryDemo> asSlugToDemoMap(BuildContext context) {
+    final localizations = GalleryLocalizations.of(context)!;
+    return LinkedHashMap<String?, GalleryDemo>.fromIterable(
+      all(localizations),
+      key: (dynamic demo) => demo.slug as String?,
+    );
+  }
+
+  static List<GalleryDemo> all(GalleryLocalizations localizations) =>
+      studies(localizations).values.toList() +
+      materialDemos(localizations) +
+      cupertinoDemos(localizations) +
+      otherDemos(localizations);
+
+  static List<String> allDescriptions() =>
+      all(GalleryLocalizationsEn()).map((demo) => demo.describe).toList();
+
+  static Map<String, GalleryDemo> studies(GalleryLocalizations localizations) {
+    return <String, GalleryDemo>{
+      'shrine': GalleryDemo(
+        title: 'Shrine',
+        subtitle: localizations.shrineDescription,
+        category: GalleryDemoCategory.study,
+        studyId: 'shrine',
+      ),
+      'rally': GalleryDemo(
+        title: 'Rally',
+        subtitle: localizations.rallyDescription,
+        category: GalleryDemoCategory.study,
+        studyId: 'rally',
+      ),
+      'crane': GalleryDemo(
+        title: 'Crane',
+        subtitle: localizations.craneDescription,
+        category: GalleryDemoCategory.study,
+        studyId: 'crane',
+      ),
+      'fortnightly': GalleryDemo(
+        title: 'Fortnightly',
+        subtitle: localizations.fortnightlyDescription,
+        category: GalleryDemoCategory.study,
+        studyId: 'fortnightly',
+      ),
+      'reply': GalleryDemo(
+        title: 'Reply',
+        subtitle: localizations.replyDescription,
+        category: GalleryDemoCategory.study,
+        studyId: 'reply',
+      ),
+      'starterApp': GalleryDemo(
+        title: localizations.starterAppTitle,
+        subtitle: localizations.starterAppDescription,
+        category: GalleryDemoCategory.study,
+        studyId: 'starter',
+      ),
+    };
+  }
+
+  static List<GalleryDemo> materialDemos(GalleryLocalizations localizations) {
+    LibraryLoader materialDemosLibrary = material_demos.loadLibrary;
+    return [
+      GalleryDemo(
+        title: localizations.demoAppBarTitle,
+        icon: GalleryIcons.appbar,
+        slug: 'app-bar',
+        subtitle: localizations.demoAppBarSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoAppBarTitle,
+            description: localizations.demoAppBarDescription,
+            documentationUrl: '$_docsBaseUrl/material/AppBar-class.html',
+            buildRoute: (_) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.AppBarDemo(),
+            ),
+            code: CodeSegments.appbarDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoBannerTitle,
+        icon: GalleryIcons.listsLeaveBehind,
+        slug: 'banner',
+        subtitle: localizations.demoBannerSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoBannerTitle,
+            description: localizations.demoBannerDescription,
+            documentationUrl:
+                '$_docsBaseUrl/material/MaterialBanner-class.html',
+            buildRoute: (_) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.BannerDemo(),
+            ),
+            code: CodeSegments.bannerDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoBottomAppBarTitle,
+        icon: GalleryIcons.bottomAppBar,
+        slug: 'bottom-app-bar',
+        subtitle: localizations.demoBottomAppBarSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoBottomAppBarTitle,
+            description: localizations.demoBottomAppBarDescription,
+            documentationUrl: '$_docsBaseUrl/material/BottomAppBar-class.html',
+            buildRoute: (_) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.BottomAppBarDemo(),
+            ),
+            code: CodeSegments.bottomAppBarDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoBottomNavigationTitle,
+        icon: GalleryIcons.bottomNavigation,
+        slug: 'bottom-navigation',
+        subtitle: localizations.demoBottomNavigationSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoBottomNavigationPersistentLabels,
+            description: localizations.demoBottomNavigationDescription,
+            documentationUrl:
+                '$_docsBaseUrl/material/BottomNavigationBar-class.html',
+            buildRoute: (_) => DeferredWidget(
+                materialDemosLibrary,
+                () => material_demos.BottomNavigationDemo(
+                      type: BottomNavigationDemoType.withLabels,
+                      restorationId: 'bottom_navigation_labels_demo',
+                    )),
+            code: CodeSegments.bottomNavigationDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoBottomNavigationSelectedLabel,
+            description: localizations.demoBottomNavigationDescription,
+            documentationUrl:
+                '$_docsBaseUrl/material/BottomNavigationBar-class.html',
+            buildRoute: (_) => DeferredWidget(
+                materialDemosLibrary,
+                () => material_demos.BottomNavigationDemo(
+                      type: BottomNavigationDemoType.withoutLabels,
+                      restorationId: 'bottom_navigation_without_labels_demo',
+                    )),
+            code: CodeSegments.bottomNavigationDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoBottomSheetTitle,
+        icon: GalleryIcons.bottomSheets,
+        slug: 'bottom-sheet',
+        subtitle: localizations.demoBottomSheetSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoBottomSheetPersistentTitle,
+            description: localizations.demoBottomSheetPersistentDescription,
+            documentationUrl: '$_docsBaseUrl/material/BottomSheet-class.html',
+            buildRoute: (_) => DeferredWidget(
+                materialDemosLibrary,
+                () => material_demos.BottomSheetDemo(
+                      type: BottomSheetDemoType.persistent,
+                    )),
+            code: CodeSegments.bottomSheetDemoPersistent,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoBottomSheetModalTitle,
+            description: localizations.demoBottomSheetModalDescription,
+            documentationUrl: '$_docsBaseUrl/material/BottomSheet-class.html',
+            buildRoute: (_) => DeferredWidget(
+                materialDemosLibrary,
+                () => material_demos.BottomSheetDemo(
+                      type: BottomSheetDemoType.modal,
+                    )),
+            code: CodeSegments.bottomSheetDemoModal,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoButtonTitle,
+        icon: GalleryIcons.genericButtons,
+        slug: 'button',
+        subtitle: localizations.demoButtonSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoTextButtonTitle,
+            description: localizations.demoTextButtonDescription,
+            documentationUrl: '$_docsBaseUrl/material/TextButton-class.html',
+            buildRoute: (_) => DeferredWidget(materialDemosLibrary,
+                () => material_demos.ButtonDemo(type: ButtonDemoType.text)),
+            code: CodeSegments.buttonDemoText,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoElevatedButtonTitle,
+            description: localizations.demoElevatedButtonDescription,
+            documentationUrl:
+                '$_docsBaseUrl/material/ElevatedButton-class.html',
+            buildRoute: (_) => DeferredWidget(materialDemosLibrary,
+                () => material_demos.ButtonDemo(type: ButtonDemoType.elevated)),
+            code: CodeSegments.buttonDemoElevated,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoOutlinedButtonTitle,
+            description: localizations.demoOutlinedButtonDescription,
+            documentationUrl:
+                '$_docsBaseUrl/material/OutlinedButton-class.html',
+            buildRoute: (_) => DeferredWidget(materialDemosLibrary,
+                () => material_demos.ButtonDemo(type: ButtonDemoType.outlined)),
+            code: CodeSegments.buttonDemoOutlined,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoToggleButtonTitle,
+            description: localizations.demoToggleButtonDescription,
+            documentationUrl: '$_docsBaseUrl/material/ToggleButtons-class.html',
+            buildRoute: (_) => DeferredWidget(materialDemosLibrary,
+                () => material_demos.ButtonDemo(type: ButtonDemoType.toggle)),
+            code: CodeSegments.buttonDemoToggle,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoFloatingButtonTitle,
+            description: localizations.demoFloatingButtonDescription,
+            documentationUrl:
+                '$_docsBaseUrl/material/FloatingActionButton-class.html',
+            buildRoute: (_) => DeferredWidget(materialDemosLibrary,
+                () => material_demos.ButtonDemo(type: ButtonDemoType.floating)),
+            code: CodeSegments.buttonDemoFloating,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoCardTitle,
+        icon: GalleryIcons.cards,
+        slug: 'card',
+        subtitle: localizations.demoCardSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoCardTitle,
+            description: localizations.demoCardDescription,
+            documentationUrl: '$_docsBaseUrl/material/Card-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.CardsDemo(),
+            ),
+            code: CodeSegments.cardsDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoChipTitle,
+        icon: GalleryIcons.chips,
+        slug: 'chip',
+        subtitle: localizations.demoChipSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoActionChipTitle,
+            description: localizations.demoActionChipDescription,
+            documentationUrl: '$_docsBaseUrl/material/ActionChip-class.html',
+            buildRoute: (context) => DeferredWidget(materialDemosLibrary,
+                () => material_demos.ChipDemo(type: ChipDemoType.action)),
+            code: CodeSegments.chipDemoAction,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoChoiceChipTitle,
+            description: localizations.demoChoiceChipDescription,
+            documentationUrl: '$_docsBaseUrl/material/ChoiceChip-class.html',
+            buildRoute: (context) => DeferredWidget(materialDemosLibrary,
+                () => material_demos.ChipDemo(type: ChipDemoType.choice)),
+            code: CodeSegments.chipDemoChoice,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoFilterChipTitle,
+            description: localizations.demoFilterChipDescription,
+            documentationUrl: '$_docsBaseUrl/material/FilterChip-class.html',
+            buildRoute: (context) => DeferredWidget(materialDemosLibrary,
+                () => material_demos.ChipDemo(type: ChipDemoType.filter)),
+            code: CodeSegments.chipDemoFilter,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoInputChipTitle,
+            description: localizations.demoInputChipDescription,
+            documentationUrl: '$_docsBaseUrl/material/InputChip-class.html',
+            buildRoute: (context) => DeferredWidget(materialDemosLibrary,
+                () => material_demos.ChipDemo(type: ChipDemoType.input)),
+            code: CodeSegments.chipDemoInput,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoDataTableTitle,
+        icon: GalleryIcons.dataTable,
+        slug: 'data-table',
+        subtitle: localizations.demoDataTableSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoDataTableTitle,
+            description: localizations.demoDataTableDescription,
+            documentationUrl: '$_docsBaseUrl/material/DataTable-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.DataTableDemo(),
+            ),
+            code: CodeSegments.dataTableDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoDialogTitle,
+        icon: GalleryIcons.dialogs,
+        slug: 'dialog',
+        subtitle: localizations.demoDialogSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoAlertDialogTitle,
+            description: localizations.demoAlertDialogDescription,
+            documentationUrl: '$_docsBaseUrl/material/AlertDialog-class.html',
+            buildRoute: (context) => DeferredWidget(materialDemosLibrary,
+                () => material_demos.DialogDemo(type: DialogDemoType.alert)),
+            code: CodeSegments.dialogDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoAlertTitleDialogTitle,
+            description: localizations.demoAlertDialogDescription,
+            documentationUrl: '$_docsBaseUrl/material/AlertDialog-class.html',
+            buildRoute: (context) => DeferredWidget(
+                materialDemosLibrary,
+                () =>
+                    material_demos.DialogDemo(type: DialogDemoType.alertTitle)),
+            code: CodeSegments.dialogDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoSimpleDialogTitle,
+            description: localizations.demoSimpleDialogDescription,
+            documentationUrl: '$_docsBaseUrl/material/SimpleDialog-class.html',
+            buildRoute: (context) => DeferredWidget(materialDemosLibrary,
+                () => material_demos.DialogDemo(type: DialogDemoType.simple)),
+            code: CodeSegments.dialogDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoFullscreenDialogTitle,
+            description: localizations.demoFullscreenDialogDescription,
+            documentationUrl:
+                '$_docsBaseUrl/widgets/PageRoute/fullscreenDialog.html',
+            buildRoute: (context) => DeferredWidget(
+                materialDemosLibrary,
+                () =>
+                    material_demos.DialogDemo(type: DialogDemoType.fullscreen)),
+            code: CodeSegments.dialogDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoDividerTitle,
+        icon: GalleryIcons.divider,
+        slug: 'divider',
+        subtitle: localizations.demoDividerSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoDividerTitle,
+            description: localizations.demoDividerDescription,
+            documentationUrl: '$_docsBaseUrl/material/Divider-class.html',
+            buildRoute: (_) => DeferredWidget(
+                materialDemosLibrary,
+                () => material_demos.DividerDemo(
+                    type: DividerDemoType.horizontal)),
+            code: CodeSegments.dividerDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoVerticalDividerTitle,
+            description: localizations.demoDividerDescription,
+            documentationUrl:
+                '$_docsBaseUrl/material/VerticalDivider-class.html',
+            buildRoute: (_) => DeferredWidget(
+                materialDemosLibrary,
+                () =>
+                    material_demos.DividerDemo(type: DividerDemoType.vertical)),
+            code: CodeSegments.verticalDividerDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoGridListsTitle,
+        icon: GalleryIcons.gridOn,
+        slug: 'grid-lists',
+        subtitle: localizations.demoGridListsSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoGridListsImageOnlyTitle,
+            description: localizations.demoGridListsDescription,
+            documentationUrl: '$_docsBaseUrl/widgets/GridView-class.html',
+            buildRoute: (context) => DeferredWidget(
+                materialDemosLibrary,
+                () => material_demos.GridListDemo(
+                    type: GridListDemoType.imageOnly)),
+            code: CodeSegments.gridListsDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoGridListsHeaderTitle,
+            description: localizations.demoGridListsDescription,
+            documentationUrl: '$_docsBaseUrl/widgets/GridView-class.html',
+            buildRoute: (context) => DeferredWidget(
+                materialDemosLibrary,
+                () =>
+                    material_demos.GridListDemo(type: GridListDemoType.header)),
+            code: CodeSegments.gridListsDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoGridListsFooterTitle,
+            description: localizations.demoGridListsDescription,
+            documentationUrl: '$_docsBaseUrl/widgets/GridView-class.html',
+            buildRoute: (context) => DeferredWidget(
+                materialDemosLibrary,
+                () =>
+                    material_demos.GridListDemo(type: GridListDemoType.footer)),
+            code: CodeSegments.gridListsDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoListsTitle,
+        icon: GalleryIcons.listAlt,
+        slug: 'lists',
+        subtitle: localizations.demoListsSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoOneLineListsTitle,
+            description: localizations.demoListsDescription,
+            documentationUrl: '$_docsBaseUrl/material/ListTile-class.html',
+            buildRoute: (context) => DeferredWidget(materialDemosLibrary,
+                () => material_demos.ListDemo(type: ListDemoType.oneLine)),
+            code: CodeSegments.listDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoTwoLineListsTitle,
+            description: localizations.demoListsDescription,
+            documentationUrl: '$_docsBaseUrl/material/ListTile-class.html',
+            buildRoute: (context) => DeferredWidget(materialDemosLibrary,
+                () => material_demos.ListDemo(type: ListDemoType.twoLine)),
+            code: CodeSegments.listDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoMenuTitle,
+        icon: GalleryIcons.moreVert,
+        slug: 'menu',
+        subtitle: localizations.demoMenuSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoContextMenuTitle,
+            description: localizations.demoMenuDescription,
+            documentationUrl: '$_docsBaseUrl/material/PopupMenuItem-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.MenuDemo(type: MenuDemoType.contextMenu),
+            ),
+            code: CodeSegments.menuDemoContext,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoSectionedMenuTitle,
+            description: localizations.demoMenuDescription,
+            documentationUrl: '$_docsBaseUrl/material/PopupMenuItem-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.MenuDemo(type: MenuDemoType.sectionedMenu),
+            ),
+            code: CodeSegments.menuDemoSectioned,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoChecklistMenuTitle,
+            description: localizations.demoMenuDescription,
+            documentationUrl:
+                '$_docsBaseUrl/material/CheckedPopupMenuItem-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.MenuDemo(type: MenuDemoType.checklistMenu),
+            ),
+            code: CodeSegments.menuDemoChecklist,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoSimpleMenuTitle,
+            description: localizations.demoMenuDescription,
+            documentationUrl: '$_docsBaseUrl/material/PopupMenuItem-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.MenuDemo(type: MenuDemoType.simpleMenu),
+            ),
+            code: CodeSegments.menuDemoSimple,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoNavigationDrawerTitle,
+        icon: GalleryIcons.menu,
+        slug: 'nav_drawer',
+        subtitle: localizations.demoNavigationDrawerSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoNavigationDrawerTitle,
+            description: localizations.demoNavigationDrawerDescription,
+            documentationUrl: '$_docsBaseUrl/material/Drawer-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.NavDrawerDemo(),
+            ),
+            code: CodeSegments.navDrawerDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoNavigationRailTitle,
+        icon: GalleryIcons.navigationRail,
+        slug: 'nav_rail',
+        subtitle: localizations.demoNavigationRailSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoNavigationRailTitle,
+            description: localizations.demoNavigationRailDescription,
+            documentationUrl:
+                '$_docsBaseUrl/material/NavigationRail-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.NavRailDemo(),
+            ),
+            code: CodeSegments.navRailDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoPickersTitle,
+        icon: GalleryIcons.event,
+        slug: 'pickers',
+        subtitle: localizations.demoPickersSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoDatePickerTitle,
+            description: localizations.demoDatePickerDescription,
+            documentationUrl: '$_docsBaseUrl/material/showDatePicker.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.PickerDemo(type: PickerDemoType.date),
+            ),
+            code: CodeSegments.pickerDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoTimePickerTitle,
+            description: localizations.demoTimePickerDescription,
+            documentationUrl: '$_docsBaseUrl/material/showTimePicker.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.PickerDemo(type: PickerDemoType.time),
+            ),
+            code: CodeSegments.pickerDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoDateRangePickerTitle,
+            description: localizations.demoDateRangePickerDescription,
+            documentationUrl: '$_docsBaseUrl/material/showDateRangePicker.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.PickerDemo(type: PickerDemoType.range),
+            ),
+            code: CodeSegments.pickerDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoProgressIndicatorTitle,
+        icon: GalleryIcons.progressActivity,
+        slug: 'progress-indicator',
+        subtitle: localizations.demoProgressIndicatorSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoCircularProgressIndicatorTitle,
+            description: localizations.demoCircularProgressIndicatorDescription,
+            documentationUrl:
+                '$_docsBaseUrl/material/CircularProgressIndicator-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.ProgressIndicatorDemo(
+                type: ProgressIndicatorDemoType.circular,
+              ),
+            ),
+            code: CodeSegments.progressIndicatorsDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoLinearProgressIndicatorTitle,
+            description: localizations.demoLinearProgressIndicatorDescription,
+            documentationUrl:
+                '$_docsBaseUrl/material/LinearProgressIndicator-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.ProgressIndicatorDemo(
+                type: ProgressIndicatorDemoType.linear,
+              ),
+            ),
+            code: CodeSegments.progressIndicatorsDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoSelectionControlsTitle,
+        icon: GalleryIcons.checkBox,
+        slug: 'selection-controls',
+        subtitle: localizations.demoSelectionControlsSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoSelectionControlsCheckboxTitle,
+            description: localizations.demoSelectionControlsCheckboxDescription,
+            documentationUrl: '$_docsBaseUrl/material/Checkbox-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.SelectionControlsDemo(
+                type: SelectionControlsDemoType.checkbox,
+              ),
+            ),
+            code: CodeSegments.selectionControlsDemoCheckbox,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoSelectionControlsRadioTitle,
+            description: localizations.demoSelectionControlsRadioDescription,
+            documentationUrl: '$_docsBaseUrl/material/Radio-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.SelectionControlsDemo(
+                type: SelectionControlsDemoType.radio,
+              ),
+            ),
+            code: CodeSegments.selectionControlsDemoRadio,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoSelectionControlsSwitchTitle,
+            description: localizations.demoSelectionControlsSwitchDescription,
+            documentationUrl: '$_docsBaseUrl/material/Switch-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.SelectionControlsDemo(
+                type: SelectionControlsDemoType.switches,
+              ),
+            ),
+            code: CodeSegments.selectionControlsDemoSwitches,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoSlidersTitle,
+        icon: GalleryIcons.sliders,
+        slug: 'sliders',
+        subtitle: localizations.demoSlidersSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoSlidersTitle,
+            description: localizations.demoSlidersDescription,
+            documentationUrl: '$_docsBaseUrl/material/Slider-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.SlidersDemo(type: SlidersDemoType.sliders),
+            ),
+            code: CodeSegments.slidersDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoRangeSlidersTitle,
+            description: localizations.demoRangeSlidersDescription,
+            documentationUrl: '$_docsBaseUrl/material/RangeSlider-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.SlidersDemo(
+                  type: SlidersDemoType.rangeSliders),
+            ),
+            code: CodeSegments.rangeSlidersDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoCustomSlidersTitle,
+            description: localizations.demoCustomSlidersDescription,
+            documentationUrl: '$_docsBaseUrl/material/SliderTheme-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.SlidersDemo(
+                  type: SlidersDemoType.customSliders),
+            ),
+            code: CodeSegments.customSlidersDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoSnackbarsTitle,
+        icon: GalleryIcons.snackbar,
+        slug: 'snackbars',
+        subtitle: localizations.demoSnackbarsSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoSnackbarsTitle,
+            description: localizations.demoSnackbarsDescription,
+            documentationUrl: '$_docsBaseUrl/material/SnackBar-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.SnackbarsDemo(),
+            ),
+            code: CodeSegments.snackbarsDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoTabsTitle,
+        icon: GalleryIcons.tabs,
+        slug: 'tabs',
+        subtitle: localizations.demoTabsSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoTabsScrollingTitle,
+            description: localizations.demoTabsDescription,
+            documentationUrl: '$_docsBaseUrl/material/TabBar-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.TabsDemo(type: TabsDemoType.scrollable),
+            ),
+            code: CodeSegments.tabsScrollableDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoTabsNonScrollingTitle,
+            description: localizations.demoTabsDescription,
+            documentationUrl: '$_docsBaseUrl/material/TabBar-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.TabsDemo(type: TabsDemoType.nonScrollable),
+            ),
+            code: CodeSegments.tabsNonScrollableDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoTextFieldTitle,
+        icon: GalleryIcons.textFieldsAlt,
+        slug: 'text-field',
+        subtitle: localizations.demoTextFieldSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoTextFieldTitle,
+            description: localizations.demoTextFieldDescription,
+            documentationUrl: '$_docsBaseUrl/material/TextField-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.TextFieldDemo(),
+            ),
+            code: CodeSegments.textFieldDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+      GalleryDemo(
+        title: localizations.demoTooltipTitle,
+        icon: GalleryIcons.tooltip,
+        slug: 'tooltip',
+        subtitle: localizations.demoTooltipSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoTooltipTitle,
+            description: localizations.demoTooltipDescription,
+            documentationUrl: '$_docsBaseUrl/material/Tooltip-class.html',
+            buildRoute: (context) => DeferredWidget(
+              materialDemosLibrary,
+              () => material_demos.TooltipDemo(),
+            ),
+            code: CodeSegments.tooltipDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.material,
+      ),
+    ];
+  }
+
+  static List<GalleryDemo> cupertinoDemos(GalleryLocalizations localizations) {
+    LibraryLoader cupertinoLoader = cupertino_demos.loadLibrary;
+    return [
+      GalleryDemo(
+        title: localizations.demoCupertinoActivityIndicatorTitle,
+        icon: GalleryIcons.cupertinoProgress,
+        slug: 'cupertino-activity-indicator',
+        subtitle: localizations.demoCupertinoActivityIndicatorSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoCupertinoActivityIndicatorTitle,
+            description:
+                localizations.demoCupertinoActivityIndicatorDescription,
+            documentationUrl:
+                '$_docsBaseUrl/cupertino/CupertinoActivityIndicator-class.html',
+            buildRoute: (_) => DeferredWidget(
+              cupertinoLoader,
+              () => cupertino_demos.CupertinoProgressIndicatorDemo(),
+            ),
+            code: CodeSegments.cupertinoActivityIndicatorDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.cupertino,
+      ),
+      GalleryDemo(
+        title: localizations.demoCupertinoAlertsTitle,
+        icon: GalleryIcons.dialogs,
+        slug: 'cupertino-alerts',
+        subtitle: localizations.demoCupertinoAlertsSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoCupertinoAlertTitle,
+            description: localizations.demoCupertinoAlertDescription,
+            documentationUrl:
+                '$_docsBaseUrl/cupertino/CupertinoAlertDialog-class.html',
+            buildRoute: (_) => DeferredWidget(
+                cupertinoLoader,
+                () => cupertino_demos.CupertinoAlertDemo(
+                    type: AlertDemoType.alert)),
+            code: CodeSegments.cupertinoAlertDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoCupertinoAlertWithTitleTitle,
+            description: localizations.demoCupertinoAlertDescription,
+            documentationUrl:
+                '$_docsBaseUrl/cupertino/CupertinoAlertDialog-class.html',
+            buildRoute: (_) => DeferredWidget(
+                cupertinoLoader,
+                () => cupertino_demos.CupertinoAlertDemo(
+                    type: AlertDemoType.alertTitle)),
+            code: CodeSegments.cupertinoAlertDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoCupertinoAlertButtonsTitle,
+            description: localizations.demoCupertinoAlertDescription,
+            documentationUrl:
+                '$_docsBaseUrl/cupertino/CupertinoAlertDialog-class.html',
+            buildRoute: (_) => DeferredWidget(
+                cupertinoLoader,
+                () => cupertino_demos.CupertinoAlertDemo(
+                    type: AlertDemoType.alertButtons)),
+            code: CodeSegments.cupertinoAlertDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoCupertinoAlertButtonsOnlyTitle,
+            description: localizations.demoCupertinoAlertDescription,
+            documentationUrl:
+                '$_docsBaseUrl/cupertino/CupertinoAlertDialog-class.html',
+            buildRoute: (_) => DeferredWidget(
+                cupertinoLoader,
+                () => cupertino_demos.CupertinoAlertDemo(
+                    type: AlertDemoType.alertButtonsOnly)),
+            code: CodeSegments.cupertinoAlertDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoCupertinoActionSheetTitle,
+            description: localizations.demoCupertinoActionSheetDescription,
+            documentationUrl:
+                '$_docsBaseUrl/cupertino/CupertinoActionSheet-class.html',
+            buildRoute: (_) => DeferredWidget(
+                cupertinoLoader,
+                () => cupertino_demos.CupertinoAlertDemo(
+                    type: AlertDemoType.actionSheet)),
+            code: CodeSegments.cupertinoAlertDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.cupertino,
+      ),
+      GalleryDemo(
+        title: localizations.demoCupertinoButtonsTitle,
+        icon: GalleryIcons.genericButtons,
+        slug: 'cupertino-buttons',
+        subtitle: localizations.demoCupertinoButtonsSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoCupertinoButtonsTitle,
+            description: localizations.demoCupertinoButtonsDescription,
+            documentationUrl:
+                '$_docsBaseUrl/cupertino/CupertinoButton-class.html',
+            buildRoute: (_) => DeferredWidget(
+              cupertinoLoader,
+              () => cupertino_demos.CupertinoButtonDemo(),
+            ),
+            code: CodeSegments.cupertinoButtonDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.cupertino,
+      ),
+      GalleryDemo(
+        title: localizations.demoCupertinoContextMenuTitle,
+        icon: GalleryIcons.moreVert,
+        slug: 'cupertino-context-menu',
+        subtitle: localizations.demoCupertinoContextMenuSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoCupertinoContextMenuTitle,
+            description: localizations.demoCupertinoContextMenuDescription,
+            documentationUrl:
+                '$_docsBaseUrl/cupertino/CupertinoContextMenu-class.html',
+            buildRoute: (_) => DeferredWidget(
+              cupertinoLoader,
+              () => cupertino_demos.CupertinoContextMenuDemo(),
+            ),
+            code: CodeSegments.cupertinoContextMenuDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.cupertino,
+      ),
+      GalleryDemo(
+        title: localizations.demoCupertinoNavigationBarTitle,
+        icon: GalleryIcons.bottomSheetPersistent,
+        slug: 'cupertino-navigation-bar',
+        subtitle: localizations.demoCupertinoNavigationBarSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoCupertinoNavigationBarTitle,
+            description: localizations.demoCupertinoNavigationBarDescription,
+            documentationUrl:
+                '$_docsBaseUrl/cupertino/CupertinoNavigationBar-class.html',
+            buildRoute: (_) => DeferredWidget(
+              cupertinoLoader,
+              () => cupertino_demos.CupertinoNavigationBarDemo(),
+            ),
+            code: CodeSegments.cupertinoNavigationBarDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.cupertino,
+      ),
+      GalleryDemo(
+        title: localizations.demoCupertinoPickerTitle,
+        icon: GalleryIcons.listAlt,
+        slug: 'cupertino-picker',
+        subtitle: localizations.demoCupertinoPickerSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoCupertinoPickerTitle,
+            description: localizations.demoCupertinoPickerDescription,
+            documentationUrl:
+                '$_docsBaseUrl/cupertino/CupertinoDatePicker-class.html',
+            buildRoute: (_) => DeferredWidget(
+                cupertinoLoader,
+                // ignore: prefer_const_constructors
+                () => cupertino_demos.CupertinoPickerDemo()),
+            code: CodeSegments.cupertinoPickersDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.cupertino,
+      ),
+      GalleryDemo(
+        title: localizations.demoCupertinoScrollbarTitle,
+        icon: GalleryIcons.listAlt,
+        slug: 'cupertino-scrollbar',
+        subtitle: localizations.demoCupertinoScrollbarSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoCupertinoScrollbarTitle,
+            description: localizations.demoCupertinoScrollbarDescription,
+            documentationUrl:
+                '$_docsBaseUrl/cupertino/CupertinoScrollbar-class.html',
+            buildRoute: (_) => DeferredWidget(
+                cupertinoLoader,
+                // ignore: prefer_const_constructors
+                () => cupertino_demos.CupertinoScrollbarDemo()),
+            code: CodeSegments.cupertinoScrollbarDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.cupertino,
+      ),
+      GalleryDemo(
+        title: localizations.demoCupertinoSegmentedControlTitle,
+        icon: GalleryIcons.tabs,
+        slug: 'cupertino-segmented-control',
+        subtitle: localizations.demoCupertinoSegmentedControlSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoCupertinoSegmentedControlTitle,
+            description: localizations.demoCupertinoSegmentedControlDescription,
+            documentationUrl:
+                '$_docsBaseUrl/cupertino/CupertinoSegmentedControl-class.html',
+            buildRoute: (_) => DeferredWidget(
+              cupertinoLoader,
+              () => cupertino_demos.CupertinoSegmentedControlDemo(),
+            ),
+            code: CodeSegments.cupertinoSegmentedControlDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.cupertino,
+      ),
+      GalleryDemo(
+        title: localizations.demoCupertinoSliderTitle,
+        icon: GalleryIcons.sliders,
+        slug: 'cupertino-slider',
+        subtitle: localizations.demoCupertinoSliderSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoCupertinoSliderTitle,
+            description: localizations.demoCupertinoSliderDescription,
+            documentationUrl:
+                '$_docsBaseUrl/cupertino/CupertinoSlider-class.html',
+            buildRoute: (_) => DeferredWidget(
+              cupertinoLoader,
+              () => cupertino_demos.CupertinoSliderDemo(),
+            ),
+            code: CodeSegments.cupertinoSliderDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.cupertino,
+      ),
+      GalleryDemo(
+        title: localizations.demoSelectionControlsSwitchTitle,
+        icon: GalleryIcons.cupertinoSwitch,
+        slug: 'cupertino-switch',
+        subtitle: localizations.demoCupertinoSwitchSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoSelectionControlsSwitchTitle,
+            description: localizations.demoCupertinoSwitchDescription,
+            documentationUrl:
+                '$_docsBaseUrl/cupertino/CupertinoSwitch-class.html',
+            buildRoute: (_) => DeferredWidget(
+              cupertinoLoader,
+              () => cupertino_demos.CupertinoSwitchDemo(),
+            ),
+            code: CodeSegments.cupertinoSwitchDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.cupertino,
+      ),
+      GalleryDemo(
+        title: localizations.demoCupertinoTabBarTitle,
+        icon: GalleryIcons.bottomNavigation,
+        slug: 'cupertino-tab-bar',
+        subtitle: localizations.demoCupertinoTabBarSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoCupertinoTabBarTitle,
+            description: localizations.demoCupertinoTabBarDescription,
+            documentationUrl:
+                '$_docsBaseUrl/cupertino/CupertinoTabBar-class.html',
+            buildRoute: (_) => DeferredWidget(
+              cupertinoLoader,
+              () => cupertino_demos.CupertinoTabBarDemo(),
+            ),
+            code: CodeSegments.cupertinoNavigationDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.cupertino,
+      ),
+      GalleryDemo(
+        title: localizations.demoCupertinoTextFieldTitle,
+        icon: GalleryIcons.textFieldsAlt,
+        slug: 'cupertino-text-field',
+        subtitle: localizations.demoCupertinoTextFieldSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoCupertinoTextFieldTitle,
+            description: localizations.demoCupertinoTextFieldDescription,
+            documentationUrl:
+                '$_docsBaseUrl/cupertino/CupertinoTextField-class.html',
+            buildRoute: (_) => DeferredWidget(
+              cupertinoLoader,
+              () => cupertino_demos.CupertinoTextFieldDemo(),
+            ),
+            code: CodeSegments.cupertinoTextFieldDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.cupertino,
+      ),
+      GalleryDemo(
+        title: localizations.demoCupertinoSearchTextFieldTitle,
+        icon: GalleryIcons.search,
+        slug: 'cupertino-search-text-field',
+        subtitle: localizations.demoCupertinoSearchTextFieldSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoCupertinoSearchTextFieldTitle,
+            description: localizations.demoCupertinoSearchTextFieldDescription,
+            documentationUrl:
+                '$_docsBaseUrl/cupertino/CupertinoSearchTextField-class.html',
+            buildRoute: (_) => DeferredWidget(
+              cupertinoLoader,
+              () => cupertino_demos.CupertinoSearchTextFieldDemo(),
+            ),
+            code: CodeSegments.cupertinoTextFieldDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.cupertino,
+      ),
+    ];
+  }
+
+  static List<GalleryDemo> otherDemos(GalleryLocalizations localizations) {
+    return [
+      GalleryDemo(
+        title: localizations.demoTwoPaneTitle,
+        icon: GalleryIcons.bottomSheetPersistent,
+        slug: 'two-pane',
+        subtitle: localizations.demoTwoPaneSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoTwoPaneFoldableLabel,
+            description: localizations.demoTwoPaneFoldableDescription,
+            documentationUrl:
+                'https://pub.dev/documentation/dual_screen/latest/dual_screen/TwoPane-class.html',
+            buildRoute: (_) => DeferredWidget(
+              twopane_demo.loadLibrary,
+              () => twopane_demo.TwoPaneDemo(
+                type: twopane_demo.TwoPaneDemoType.foldable,
+                restorationId: 'two_pane_foldable',
+              ),
+            ),
+            code: CodeSegments.twoPaneDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoTwoPaneTabletLabel,
+            description: localizations.demoTwoPaneTabletDescription,
+            documentationUrl:
+                'https://pub.dev/documentation/dual_screen/latest/dual_screen/TwoPane-class.html',
+            buildRoute: (_) => DeferredWidget(
+              twopane_demo.loadLibrary,
+              () => twopane_demo.TwoPaneDemo(
+                type: twopane_demo.TwoPaneDemoType.tablet,
+                restorationId: 'two_pane_tablet',
+              ),
+            ),
+            code: CodeSegments.twoPaneDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoTwoPaneSmallScreenLabel,
+            description: localizations.demoTwoPaneSmallScreenDescription,
+            documentationUrl:
+                'https://pub.dev/documentation/dual_screen/latest/dual_screen/TwoPane-class.html',
+            buildRoute: (_) => DeferredWidget(
+              twopane_demo.loadLibrary,
+              () => twopane_demo.TwoPaneDemo(
+                type: twopane_demo.TwoPaneDemoType.smallScreen,
+                restorationId: 'two_pane_single',
+              ),
+            ),
+            code: CodeSegments.twoPaneDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.other,
+      ),
+      GalleryDemo(
+        title: localizations.demoMotionTitle,
+        icon: GalleryIcons.animation,
+        slug: 'motion',
+        subtitle: localizations.demoMotionSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoContainerTransformTitle,
+            description: localizations.demoContainerTransformDescription,
+            documentationUrl: '$_docsAnimationsUrl/OpenContainer-class.html',
+            buildRoute: (_) => DeferredWidget(
+              motion_demo_container.loadLibrary,
+              () => motion_demo_container.OpenContainerTransformDemo(),
+            ),
+            code: CodeSegments.openContainerTransformDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoSharedXAxisTitle,
+            description: localizations.demoSharedAxisDescription,
+            documentationUrl:
+                '$_docsAnimationsUrl/SharedAxisTransition-class.html',
+            buildRoute: (_) => const SharedXAxisTransitionDemo(),
+            code: CodeSegments.sharedXAxisTransitionDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoSharedYAxisTitle,
+            description: localizations.demoSharedAxisDescription,
+            documentationUrl:
+                '$_docsAnimationsUrl/SharedAxisTransition-class.html',
+            buildRoute: (_) => const SharedYAxisTransitionDemo(),
+            code: CodeSegments.sharedYAxisTransitionDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoSharedZAxisTitle,
+            description: localizations.demoSharedAxisDescription,
+            documentationUrl:
+                '$_docsAnimationsUrl/SharedAxisTransition-class.html',
+            buildRoute: (_) => const SharedZAxisTransitionDemo(),
+            code: CodeSegments.sharedZAxisTransitionDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoFadeThroughTitle,
+            description: localizations.demoFadeThroughDescription,
+            documentationUrl:
+                '$_docsAnimationsUrl/FadeThroughTransition-class.html',
+            buildRoute: (_) => const FadeThroughTransitionDemo(),
+            code: CodeSegments.fadeThroughTransitionDemo,
+          ),
+          GalleryDemoConfiguration(
+            title: localizations.demoFadeScaleTitle,
+            description: localizations.demoFadeScaleDescription,
+            documentationUrl:
+                '$_docsAnimationsUrl/FadeScaleTransition-class.html',
+            buildRoute: (_) => const FadeScaleTransitionDemo(),
+            code: CodeSegments.fadeScaleTransitionDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.other,
+      ),
+      GalleryDemo(
+        title: localizations.demoColorsTitle,
+        icon: GalleryIcons.colors,
+        slug: 'colors',
+        subtitle: localizations.demoColorsSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoColorsTitle,
+            description: localizations.demoColorsDescription,
+            documentationUrl: '$_docsBaseUrl/material/MaterialColor-class.html',
+            buildRoute: (_) => DeferredWidget(
+              colors_demo.loadLibrary,
+              () => colors_demo.ColorsDemo(),
+            ),
+            code: CodeSegments.colorsDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.other,
+      ),
+      GalleryDemo(
+        title: localizations.demoTypographyTitle,
+        icon: GalleryIcons.customTypography,
+        slug: 'typography',
+        subtitle: localizations.demoTypographySubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demoTypographyTitle,
+            description: localizations.demoTypographyDescription,
+            documentationUrl: '$_docsBaseUrl/material/TextTheme-class.html',
+            buildRoute: (_) => DeferredWidget(
+              typography.loadLibrary,
+              () => typography.TypographyDemo(),
+            ),
+            code: CodeSegments.typographyDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.other,
+      ),
+      GalleryDemo(
+        title: localizations.demo2dTransformationsTitle,
+        icon: GalleryIcons.gridOn,
+        slug: '2d-transformations',
+        subtitle: localizations.demo2dTransformationsSubtitle,
+        configurations: [
+          GalleryDemoConfiguration(
+            title: localizations.demo2dTransformationsTitle,
+            description: localizations.demo2dTransformationsDescription,
+            documentationUrl:
+                '$_docsBaseUrl/widgets/GestureDetector-class.html',
+            buildRoute: (_) => DeferredWidget(
+              transformations_demo.loadLibrary,
+              () => transformations_demo.TransformationsDemo(),
+            ),
+            code: CodeSegments.transformationsDemo,
+          ),
+        ],
+        category: GalleryDemoCategory.other,
+      ),
+    ];
+  }
+}
diff --git a/lib/pages/demo.dart b/lib/pages/demo.dart
index c969da3..5d03031 100644
--- a/lib/pages/demo.dart
+++ b/lib/pages/demo.dart
@@ -57,7 +57,7 @@
     // page, we save it in a variable. The cost of running `slugToDemo` is
     // still only close to constant, as it's just iterating over all of the
     // demos.
-    slugToDemoMap = slugToDemo(context);
+    slugToDemoMap = Demos.asSlugToDemoMap(context);
   }
 
   @override
diff --git a/lib/pages/home.dart b/lib/pages/home.dart
index 5c260d5..65faef2 100644
--- a/lib/pages/home.dart
+++ b/lib/pages/home.dart
@@ -43,7 +43,7 @@
     var carouselHeight = _carouselHeight(.7, context);
     final isDesktop = isDisplayDesktop(context);
     final localizations = GalleryLocalizations.of(context)!;
-    final studyDemos = studies(localizations);
+    final studyDemos = Demos.studies(localizations);
     final carouselCards = <Widget>[
       _CarouselCard(
         demo: studyDemos['reply'],
@@ -144,7 +144,7 @@
             'assets/icons/material/material.png',
             package: 'flutter_gallery_assets',
           ),
-          demos: materialDemos(localizations),
+          demos: Demos.materialDemos(localizations),
         ),
         _DesktopCategoryItem(
           category: GalleryDemoCategory.cupertino,
@@ -152,7 +152,7 @@
             'assets/icons/cupertino/cupertino.png',
             package: 'flutter_gallery_assets',
           ),
-          demos: cupertinoDemos(localizations),
+          demos: Demos.cupertinoDemos(localizations),
         ),
         _DesktopCategoryItem(
           category: GalleryDemoCategory.other,
@@ -160,7 +160,7 @@
             'assets/icons/reference/reference.png',
             package: 'flutter_gallery_assets',
           ),
-          demos: otherDemos(localizations),
+          demos: Demos.otherDemos(localizations),
         ),
       ];
 
@@ -411,7 +411,7 @@
                   restorationId: 'home_material_category_list',
                   category: GalleryDemoCategory.material,
                   imageString: 'assets/icons/material/material.png',
-                  demos: materialDemos(localizations),
+                  demos: Demos.materialDemos(localizations),
                   initiallyExpanded:
                       _isMaterialListExpanded.value || isTestMode,
                   onTap: (shouldOpenList) {
@@ -428,7 +428,7 @@
                   restorationId: 'home_cupertino_category_list',
                   category: GalleryDemoCategory.cupertino,
                   imageString: 'assets/icons/cupertino/cupertino.png',
-                  demos: cupertinoDemos(localizations),
+                  demos: Demos.cupertinoDemos(localizations),
                   initiallyExpanded:
                       _isCupertinoListExpanded.value || isTestMode,
                   onTap: (shouldOpenList) {
@@ -445,7 +445,7 @@
                   restorationId: 'home_other_category_list',
                   category: GalleryDemoCategory.other,
                   imageString: 'assets/icons/reference/reference.png',
-                  demos: otherDemos(localizations),
+                  demos: Demos.otherDemos(localizations),
                   initiallyExpanded: _isOtherListExpanded.value || isTestMode,
                   onTap: (shouldOpenList) {
                     _isOtherListExpanded.value = shouldOpenList;
diff --git a/test/demo_descriptions_test.dart b/test/demo_descriptions_test.dart
index b9f4e61..5bd429c 100644
--- a/test/demo_descriptions_test.dart
+++ b/test/demo_descriptions_test.dart
@@ -30,21 +30,21 @@
   });
 
   test('Demo descriptions are unique and correct', () {
-    final allDemos = allGalleryDemos(GalleryLocalizationsEn());
+    final allDemos = Demos.all(GalleryLocalizationsEn());
     final allDemoDescriptions = allDemos.map((d) => d.describe).toList();
 
     expect(_isUnique(allDemoDescriptions), true);
     expect(
       _stringListEquality.equals(
         allDemoDescriptions,
-        allGalleryDemoDescriptions(),
+        Demos.allDescriptions(),
       ),
       true,
     );
   });
 
   test('Special demo descriptions are correct', () {
-    final allDemos = allGalleryDemoDescriptions();
+    final allDemos = Demos.allDescriptions();
 
     final specialDemos = <String>[
       'shrine@study',
diff --git a/test_benchmarks/benchmarks/gallery_automator.dart b/test_benchmarks/benchmarks/gallery_automator.dart
index 4b03e87..f747a89 100644
--- a/test_benchmarks/benchmarks/gallery_automator.dart
+++ b/test_benchmarks/benchmarks/gallery_automator.dart
@@ -8,7 +8,6 @@
 
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
-
 import 'package:gallery/data/demos.dart';
 import 'package:gallery/main.dart';
 
@@ -70,7 +69,7 @@
   LiveWidgetController controller;
 
   /// An iterable that generates all demo names.
-  Iterable<String> get demoNames => allGalleryDemoDescriptions();
+  Iterable<String> get demoNames => Demos.allDescriptions();
 
   /// The gallery widget, with automation.
   Widget createWidget() {
diff --git a/test_driver/transitions_perf.dart b/test_driver/transitions_perf.dart
index e9a9130..a7040b6 100644
--- a/test_driver/transitions_perf.dart
+++ b/test_driver/transitions_perf.dart
@@ -15,7 +15,7 @@
 Future<String> _handleMessages(String? message) async {
   switch (message) {
     case 'demoDescriptions':
-      final demoDescriptions = allGalleryDemoDescriptions();
+      final demoDescriptions = Demos.allDescriptions();
       return const JsonEncoder.withIndent('  ').convert(demoDescriptions);
     case 'isTestingCraneOnly':
       return const String.fromEnvironment('onlyCrane', defaultValue: 'false');