Ответ
Material и Cupertino — это две разные дизайн-системы, предоставляемые Flutter для создания нативных интерфейсов.
-
Material (
package:flutter/material): Реализация Material Design от Google. Характерны плоские поверхности, чёткие геометрические формы, насыщенные цвета и выразительные анимации. Стандартный выбор для приложений на Android и кроссплатформенных проектов.MaterialApp( home: Scaffold( appBar: AppBar(title: const Text('Material App')), body: Center( child: ElevatedButton( onPressed: () {}, child: const Text('Кнопка'), ), ), ), ); -
Cupertino (
package:flutter/cupertino): Реализация Human Interface Guidelines от Apple. Имитирует нативные iOS-компоненты с полупрозрачностями, размытием, скевоморфными деталями (например, переключатели) и плавными анимациями.CupertinoApp( home: CupertinoPageScaffold( navigationBar: const CupertinoNavigationBar( middle: Text('Cupertino App'), ), child: Center( child: CupertinoButton( onPressed: () {}, child: const Text('Кнопка'), ), ), ), );
На практике я часто использую условную логику для автоматического выбора стиля в зависимости от платформы:
Widget getPlatformButton() {
if (Platform.isIOS) {
return CupertinoButton(onPressed: () {}, child: const Text('Далее'));
} else {
return ElevatedButton(onPressed: () {}, child: const Text('Далее'));
}
}
Также существуют библиотеки (например, adaptive_components), которые помогают создавать адаптивные интерфейсы.