Ответ
Cupertino — это библиотека виджетов Flutter, реализующая дизайн-систему iOS (Human Interface Guidelines). Эти виджеты визуально соответствуют нативным iOS-компонентам.
Основные виджеты:
CupertinoApp— корневой виджет вместоMaterialAppCupertinoNavigationBar— навигационная панель iOS-стиляCupertinoButton— кнопка с iOS-анимациейCupertinoPicker— колесо выбораCupertinoSwitch— переключательCupertinoActivityIndicator— индикатор загрузки
Пример использования CupertinoApp:
import 'package:flutter/cupertino.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const CupertinoApp(
title: 'iOS Style App',
home: CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: Text('Home'),
),
child: Center(
child: CupertinoButton(
onPressed: () {},
child: Text('Press Me'),
),
),
),
);
}
}
Когда использовать:
- При разработке iOS-эксклюзивных приложений
- Для кросс-платформенных приложений, где нужен нативный iOS-вид на Apple-устройствах
- При создании дизайн-системы, адаптирующейся под платформу
Важно: Cupertino-виджеты работают на всех платформах, но визуально оптимизированы под iOS. Для адаптивного дизайна часто используют Platform.isIOS проверку для выбора между Material и Cupertino.
Ответ 18+ 🔞
А, ну это про тот самый Cupertino, который делает твоё Flutter-приложение похожим на нативное iOS-приложение, да? Ёпта, выглядит так, будто его делали в Купертино, а не в гараже на коленке. Библиотека виджетов, которая тырит дизайн-систему Apple — Human Interface Guidelines, и делает всё, чтобы айфонюзер не охуел от непривычного интерфейса.
Основные штуки, которые там есть:
CupertinoApp— это типа корень всего, вместоMaterialApp, но в шляпе и с яблочком на лого.CupertinoNavigationBar— эта панель сверху, где кнопки «Назад» выглядят так хитрожопо, что хочется их потрогать.CupertinoButton— кнопка, которая при нажатии делает такую анимацию, что волнение ебать, прям как на настоящем айфоне.CupertinoPicker— это колесо выбора, которое крутится с таким чувством, будто шестерёнки смазаны дорогим маслом.CupertinoSwitch— переключатель, который щёлкает с таким удовлетворяющим звуком в голове.CupertinoActivityIndicator— индикатор загрузки, тот самый спиннер, который крутится, пока твои данные летят из облака, блядь.
Вот, смотри, как это в коде выглядит, чувак:
import 'package:flutter/cupertino.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const CupertinoApp(
title: 'iOS Style App',
home: CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: Text('Home'),
),
child: Center(
child: CupertinoButton(
onPressed: () {},
child: Text('Press Me'),
),
),
),
);
}
}
Видишь? Всё чисто, аккуратно, и пахнет новым макбуком. Никакого лишнего материального дизайна, только холодный эппловский минимализм.
А теперь, когда это всё городить:
- Если пишешь приложение только под iOS, и тебе похуй на андроид-пользователей. Прям такой, бля, эксклюзив, ядрёна вошь.
- Для кросс-платформы, когда на айфоне должен быть один вид, а на андроиде — другой. Чтобы не было пиздопроебибны, когда интерфейс выглядит как мартышлюшка в театре.
- Когда делаешь умную систему, которая сама определяет платформу и подсовывает нужные виджеты. Типа
if (Platform.isIOS) — покажи Cupertino, else — давай Material. Удобно, аж терпения ноль ебать.
Важный момент, на котором многие обжигаются: Эти Cupertino-виджеты будут работать везде, даже на холодильнике, если на нём стоит Flutter. Но выглядеть-то они будут как под iOS. Так что если запустить это безобразие на андроиде, пользователь может сам от себя охуеть, увидев у себя в телефоне интерфейс айфона. Поэтому головой думай, где и что использовать.