[Flutter] 안드로이드는 Material, iOS는 Cupertino 로 위젯을 보여주려면

ChangJoo Park
3 min readFeb 8, 2020

--

Material(좌) 그리고 Cupertino(우)

Flutter를 시작하면 프로젝트 기본 설정이 Material Design을 따르도록 되어있습니다. Flutter에는 iOS를 지원하도록 Cupertino 라는 패키지를 제공합니다. iOS에서 제공하는 대부분의 기본 UI 컴포넌트를 가지고 있습니다.

Flutter 앱을 Android / iOS 두 플랫폼으로 제공한다면, 해당 플랫폼의 기기에 어울리는 UI를 보여주는 것이 더 좋은 사용자 경험을 가져올 수 있을 것입니다.

내장된 ‘dart:io’ 패키지에는 플랫폼 구분을 위한 Platform 클래스를 제공합니다. Android, iOS 뿐만아니라 Windows, Linux, macOS 그리고 Fuchsia까지 구분할 수 있습니다. 이 글에서는 Andorid, iOS 환경에 따라 다른 UI 위젯을 보여주는 방법을 알아봅니다.

플랫폼마다 다른 UI를 보여줄 PlatformSwitch
class PlatformSwitch extends StatefulWidget {
PlatformSwitch();
@override
_PlatformSwitchState createState() => _PlatformSwitchState();
}
class _PlatformSwitchState extends State<PlatformSwitch> {
bool _value = false;
@override
Widget build(BuildContext context) {
if (Platform.isIOS) {
return CupertinoSwitch(value: _value, onChanged: onChanged);
}
return Switch(value: _value, onChanged: onChanged);
}
onChanged(bool value) {
setState(() {
_value = value;
});
}
}

기본적인 Switch를 StatefulWidget으로 감싸고, build 메소드에서 Platform클래스로 플랫폼에 맞는 위젯 스위치를 그리면 됩니다.

Flutter에는 수많은 위젯이 있고 모든 위젯을 새로 만들기 힘듭니다. Flutter Platform Widget은 이런 수고를 덜어주는 패키지입니다. 이 패키지를 사용하면 Scaffold부터 Icon까지 안드로이드와 iOS 환경에 따라 다른 위젯을 그리는 설정을 조금은 수월하게 할 수 있습니다.

시리즈의 전체목록을 보려면 링크를 눌러주세요

--

--

No responses yet