🤔Cross Platform?
크로스플랫폼이란, 서로 다른 디바이스 또는 전혀 다른 OS에도
대응되어 어색함 없이 동일하게 작동될 수 있도록 프로그램( 어플리케이션 )을
개발하는 것을 의미한다.
앱개발로 유명한 두가지 프레임워크를 뽑자면 React Native와 Flutter를 꼽을 수 있다.
React-Native 일명 RN은 JS로 이뤄져있는 코드를 큰 번들러로 묶어
액션이 일어나면 브릿지로 JS코드를 전달하고 브릿지는 이를 해석하여
OS가 인식할 수 있는 코드로 재번역하여 전달하고 작동(렌더링)하게 된다.
즉, RN은 브릿지가 JS로 이루어진 코드를 Native하게 작동할 수 있도록 하는
아주 중요한 역할을 하는 셈이다.
그렇다면 Flutter는 어떻게 크로스플랫폼을 지원하고 있을까?
🛠️Flutter
플러터는 Google에서 개발된 Dart 언어 기반의 프레임워크이다.
Dart라는 새로운 언어를 배워야 활용이 가능한 부분에서 러닝커브가 있는 편이지만
React, Java, Python 등을 경험해본 입장에서는 크게 어렵지 않았다.
객체지향 방식의 패턴이 오히려 접근성이 좋아 러닝커브가 높다는 생각은 들지 않았던 것 같다.
플러터는 RN과 같이 직접적으로 OS와 소통 후 작동(렌더링)하는 방식이 아닌,
별도의 C++로 구성된 엔진위에서 어플리케이션을 그려낸 후 독립적인 형태로
동작하기 때문에 OS간 불일치율이 없다시피 개발이 가능한 것이 강점이다.
Create Project
flutter create your_project
Example Code
import 'package:flutter/material.dart';
void main() {
runApp(const App());
}
class App extends StatelessWidget {
const App({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
backgroundColor: Colors.black,
body: Column(
children: [
// 박스를 추가하여 간격을 만듦
const SizedBox(
height: 80,
),
// 헤더 Row
Row(
// Row의 Align을 end로 설정 ( justify-content: end 와 유사 )
mainAxisAlignment: MainAxisAlignment.end,
children: [
Column(
// 해당 컬럼 item 내부 정렬을 end로 설정 ( justify-content: end 와 유사 )
crossAxisAlignment: CrossAxisAlignment.end,
children: [
const Text(
"안녕하세요, 홍길동님",
style: TextStyle(
color: Colors.white,
fontSize: 38,
fontWeight: FontWeight.w600,
),
),
Text(
"복귀를 환영합니다.",
style: TextStyle(
color: Colors.white.withOpacity(0.8), fontSize: 22),
),
],
)
],
)
],
),
),
);
}
}
* 위 예제코드는 " /your_project/lib " 경로에 있는 main.dart 파일에서 활용된 소스코드입니다.
✍️마치며...
새로운 언어, 새로운 프레임워크를 공부하고 개발할 때마다 역시 기술을 공부하며 개발하는 것은 개발자의 평생 숙제라는 것을 다시 한번 깨닫게 되는 계기였다. 여러 언어, 프레임워크를 경험하며 느껴지는 것들은 한가지만 고수하는 것도 분명 역량을 끌어올리기 좋을 수 있지만 다방면의 경험을 쌓는 것 또한 프로그래밍, 개발에 있어 전체적인 흐름을 이해하고 더 넓은 시야로 볼 수 있는 역량이 좋아지고 있는 것 같다. 다시금 느껴지는 것은 개발자라는 직업을 갖게되어 정말 다행이고 행복하다. 앞으로도 이 마음가짐을 잃어버리지 않도록 더욱이 노력해야겠다 ㅎㅎ