ワンクリックで
button-system
Button widgets in iOS Design System - CupertinoButtonWidget and ButtonWidget with all variants
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Button widgets in iOS Design System - CupertinoButtonWidget and ButtonWidget with all variants
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Specialized widgets and themes for Music, Stocks, Weather, App Store, and Books apps
Guide to creating new widgets following iOS Design System patterns and conventions
Icons, tags, titles, descriptions, dividers, and markdown rendering for iOS Design System
Using flutter_hooks for cleaner state management in iOS Design System widgets
Text fields, switches, pickers, date pickers, and form validation for iOS Design System
ScaffoldWidget, GroupedTableWidget, RowWidget, NavigationBar, and ToolBar for iOS Design System
| name | button-system |
| description | Button widgets in iOS Design System - CupertinoButtonWidget and ButtonWidget with all variants |
Two-layer system:
Low-level widget providing:
CupertinoButtonWidget(
onPressed: () {},
color: theme.defaultColors.systemBlue,
borderRadius: BorderRadius.circular(12),
padding: EdgeInsets.all(16),
child: Text('Button'),
)
CupertinoButtonWidget(
onPressed: isLoading ? null : () {},
displayCupertinoActivityIndicator: isLoading,
color: theme.defaultColors.systemBlue,
child: Text('Submit'),
)
CupertinoButtonWidget(
onPressed: () {},
backgroundGradient: LinearGradient(
colors: [
theme.defaultColors.systemPurple,
theme.defaultColors.systemPink,
],
),
child: Text('Premium'),
)
High-level button with automatic theming.
ButtonWidget.label(
size: const LargeButtonSize(),
color: const BlueButtonColor(),
label: 'Continue',
leftIcon: CupertinoIcons.checkmark,
onPressed: () {},
)
ButtonWidget.icon(
size: const MediumButtonSize(),
color: const GreyTransparentButtonColor(),
leftIcon: CupertinoIcons.add,
onPressed: () {},
)
Define your own dimensions:
const CustomButtonSize(
borderRadius: BorderRadius.all(Radius.circular(16)),
padding: EdgeInsets.symmetric(horizontal: 24, vertical: 18),
iconSize: 22,
boxConstraints: BoxConstraints(minHeight: 56, minWidth: 56),
)
class RedButtonColor extends ButtonColor {
const RedButtonColor();
@override
Color? backgroundEnabled({required BuildContext context}) {
final theme = IosTheme.of(context);
return theme.defaultColors.systemRed;
}
@override
Color labelEnabled({required BuildContext context}) {
final theme = IosTheme.of(context);
return theme.defaultColors.systemWhite;
}
}
ButtonWidget.label(
size: const LargeButtonSize(),
color: const BlueButtonColor(),
label: 'Continue',
onPressed: () {},
)
ButtonWidget.label(
size: const MediumButtonSize(),
color: const GreyTransparentButtonColor(),
label: 'Share',
leftIcon: CupertinoIcons.share,
onPressed: () {},
)
ButtonWidget.icon(
size: const MediumButtonSize(),
color: const GreyTransparentButtonColor(),
leftIcon: CupertinoIcons.add,
onPressed: () {},
)
ButtonWidget.label(
size: const LargeButtonSize(),
color: const BlueButtonColor(),
label: 'Processing',
displayCupertinoActivityIndicator: isLoading,
onPressed: isLoading ? null : () {},
)
ButtonWidget.label(
size: const MediumButtonSize(),
color: const CustomButtonColor(
backgroundEnabled: theme.defaultColors.systemRed,
labelEnabled: theme.defaultColors.systemWhite,
),
label: 'Delete',
leftIcon: CupertinoIcons.trash,
onPressed: () {},
)
kAnimationInDuration // 180ms
kAnimationOutDuration // 120ms
kCupertinoButtonPressedOpacity // 0.8
/lib/src/widgets/cupertino_button_widget.dart/lib/src/widgets/button_widget.dart