원클릭으로
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