Что такое Cupertino в контексте Flutter?

Ответ

Cupertino — это библиотека виджетов Flutter, реализующая дизайн-систему iOS (Human Interface Guidelines). Эти виджеты визуально соответствуют нативным iOS-компонентам.

Основные виджеты:

  • CupertinoApp — корневой виджет вместо MaterialApp
  • CupertinoNavigationBar — навигационная панель 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'),
          ),
        ),
      ),
    );
  }
}

Когда использовать:

  1. При разработке iOS-эксклюзивных приложений
  2. Для кросс-платформенных приложений, где нужен нативный iOS-вид на Apple-устройствах
  3. При создании дизайн-системы, адаптирующейся под платформу

Важно: 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'),
          ),
        ),
      ),
    );
  }
}

Видишь? Всё чисто, аккуратно, и пахнет новым макбуком. Никакого лишнего материального дизайна, только холодный эппловский минимализм.

А теперь, когда это всё городить:

  1. Если пишешь приложение только под iOS, и тебе похуй на андроид-пользователей. Прям такой, бля, эксклюзив, ядрёна вошь.
  2. Для кросс-платформы, когда на айфоне должен быть один вид, а на андроиде — другой. Чтобы не было пиздопроебибны, когда интерфейс выглядит как мартышлюшка в театре.
  3. Когда делаешь умную систему, которая сама определяет платформу и подсовывает нужные виджеты. Типа if (Platform.isIOS) — покажи Cupertino, else — давай Material. Удобно, аж терпения ноль ебать.

Важный момент, на котором многие обжигаются: Эти Cupertino-виджеты будут работать везде, даже на холодильнике, если на нём стоит Flutter. Но выглядеть-то они будут как под iOS. Так что если запустить это безобразие на андроиде, пользователь может сам от себя охуеть, увидев у себя в телефоне интерфейс айфона. Поэтому головой думай, где и что использовать.