Ответ
Да, полностью отказаться от Cupertino-виджетов можно, и многие приложения так и делают, особенно если:
- Приложение использует только Material Design — единый дизайн для всех платформ
- Целевая аудитория в основном на Android
- Команда хочет упростить поддержку — один код вместо двух дизайн-систем
Как отказаться:
-
Удалите зависимость из
pubspec.yaml(если она есть):# Удалите или закомментируйте эту строку: # cupertino_icons: ^1.0.2 -
Используйте только Material-виджеты:
MaterialApp( theme: ThemeData( primarySwatch: Colors.blue, useMaterial3: true, // Современный Material Design ), home: Scaffold( appBar: AppBar(title: Text('Material Only')), body: Center( child: Column( children: [ ElevatedButton( onPressed: () {}, child: Text('Material Button'), ), Switch( value: true, onChanged: (value) {}, ), ], ), ), ), )
Что вы теряете при отказе от Cupertino:
- Нативный iOS-вид — приложение будет выглядеть как Android-приложение на iPhone
- Плавность iOS-анимаций — особенно заметно в
CupertinoPicker,CupertinoSlidingSegmentedControl - iOS-специфичные паттерны — например, модальные окна с iOS-стилем
Мой опыт:
В корпоративном приложении, где 80% пользователей были на Android, мы использовали только Material Design. Это сократило время разработки на 30%. Однако для B2C-приложения с премиальной аудиторией на iOS я бы добавил Cupertino-виджеты через проверку платформы:
Widget buildPlatformAwareWidget() {
final isIOS = Theme.of(context).platform == TargetPlatform.iOS;
return isIOS
? CupertinoButton(
onPressed: () {},
child: Text('iOS Style'),
)
: ElevatedButton(
onPressed: () {},
child: Text('Android Style'),
);
}
Решение зависит от бизнес-требований: если важна максимальная нативность на iOS — используйте Cupertino, если приоритет — скорость разработки и единый дизайн — выбирайте Material.