shadcn_flutter_cupertino 0.0.54 copy "shadcn_flutter_cupertino: ^0.0.54" to clipboard
shadcn_flutter_cupertino: ^0.0.54 copied to clipboard

[pending analysis]

Cupertino integration for shadcn_flutter: use cupertino_ui widgets alongside shadcn_flutter components with a shared theme.

shadcn_flutter_cupertino #

Cupertino interop for shadcn_flutter.

shadcn_flutter is built on package:flutter/widgets.dart alone — it depends on neither Material nor Cupertino, following Flutter's move of those libraries out of the framework and into the material_ui and cupertino_ui packages. Add this package when your app uses Cupertino widgets alongside shadcn_flutter components.

Install #

flutter pub add shadcn_flutter_cupertino

This pulls in cupertino_ui transitively. Add it directly too if you import its widgets in your own code, which you almost always will:

flutter pub add cupertino_ui

Use #

CupertinoShadcnApp is a drop-in replacement for ShadcnApp. It takes exactly the same parameters, registers the Cupertino localizations, and installs the CupertinoTheme ancestor that Cupertino widgets read from.

import 'package:cupertino_ui/cupertino_ui.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter_cupertino/shadcn_flutter_cupertino.dart';

void main() {
  runApp(
    CupertinoShadcnApp(
      title: 'My App',
      theme: ThemeData(
        colorScheme: ColorSchemes.lightZinc(),
        radius: 0.5,
      ),
      home: CupertinoPageScaffold(
        navigationBar: const CupertinoNavigationBar(
          middle: Text('Hybrid app'),
        ),
        child: const Center(
          child: PrimaryButton(child: Text('A shadcn button')),
        ),
      ),
    ),
  );
}

The Cupertino theme is derived from the shadcn theme, so it follows it automatically — including darkTheme and themeMode switches. Pass cupertinoTheme to override it.

One subtree only #

If Cupertino widgets appear in only part of the app, keep the plain ShadcnApp and wrap that subtree in a CupertinoLayer. Register the localizations delegates at the app level: delegates have to sit above the Localizations widget, so a layer alone cannot add them.

ShadcnApp(
  localizationsDelegates: kCupertinoLocalizationsDelegates,
  home: Builder(
    builder: (context) {
      return CupertinoLayer(
        child: CupertinoPageScaffold(
          navigationBar: const CupertinoNavigationBar(
            middle: Text('Only this screen'),
          ),
          child: const SizedBox.shrink(),
        ),
      );
    },
  ),
);

The other direction #

To use shadcn_flutter components inside an existing CupertinoApp, you need neither this package nor any special setup: wrap the subtree in ShadcnLayer, or a single widget in ShadcnUI.

What this package exports #

Symbol What it does
CupertinoShadcnApp ShadcnApp plus Cupertino theme and localizations.
CupertinoLayer Installs CupertinoTheme around a subtree.
cupertinoThemeFor(ThemeData) Derives a CupertinoThemeData from a shadcn ThemeData.
kCupertinoLocalizationsDelegates The delegates Cupertino widgets require.
buildCupertinoEditableTextContextMenu iOS-style text selection toolbar, the old TextField.cupertinoContextMenuBuilder().
buildCupertinoSpellCheckSuggestionsToolbar iOS-style spell check toolbar.
CupertinoIcons, CupertinoPage, CupertinoPageRoute Re-exported from cupertino_ui.
cupertinoDesktopTextSelectionControls and friends Re-exported; these used to come from shadcn_flutter.

Everything else comes from package:cupertino_ui/cupertino_ui.dart — import it directly, with a prefix if its names collide with shadcn_flutter's.

0
likes
0
points
73
downloads

Documentation

Documentation

Publisher

unverified uploader

Weekly Downloads

Cupertino integration for shadcn_flutter: use cupertino_ui widgets alongside shadcn_flutter components with a shared theme.

Repository (GitHub)
View/report issues

Topics

#widget #user-interface #cupertino #shadcn-ui #interop

License

(pending) (license)

Dependencies

cupertino_ui, flutter, shadcn_flutter

More

Packages that depend on shadcn_flutter_cupertino