1. flutter SDK 설치
- 한국어 페이지에서는 왜인지 SDK설치 자체가 안됩니다..( https://flutter.dev/ 로 가서 설치하셔야합니다)
- 안드로이드 스튜디오 필수 ! 플러그인 - dart, flutter설치
2. 앱의 기본 구성(리액트랑 비교)
- 가져온 패키지를 사용할때 어떤 패키지에서 가져왔는지 알수가없음
- setState로 상태변경을 하는 구문이 유사
- Widget - React의 Component의 느낌
- build(BuildContext context) { 는 react에 render() {
- StatefulWidget - state에 따라 변화하는 Widget,
- StatelessWidget - state에 영향을 받지 않는 Widget
3.패키지
- 패키지 추가는 pubspec.yml에서 추가(package.json 역할)
- 안드로이드 스튜디오 자체에서 Pub get 버튼으로 패키지 추가 가능
4. 장점
- Chrome, IOS, Android 3가지 환경에서 쉽게 확인 가능
- canvas로 UI를 그리기 때문에 IOS, Android, Web 모두 동일한 UI로 구성됨
- 손쉬운 환경구성
5. 단점
- canvas로 UI를 그리기때문에 각 화면의 Native기능을 사용 할 수 없음
- Web의 퍼포먼스와 SSR이 제한적
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.red,
),
home: MyHomePage(title: "hello world"),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int counter = 0;
void _incrementCounter() {
setState(() {
counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: MyCustomForm()
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}
class MyCustomForm extends StatefulWidget {
@override
MyCustomFormState createState() {
return MyCustomFormState();
}
}
class MyCustomFormState extends State<MyCustomForm> {
final _formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
// Build a Form widget using the _formKey created above.
return Form(
key: _formKey,
child: Column(
children: <Widget>[TextFormField(
validator: (value) {
if (value == null || value.isEmpty) {
return 'Please enter some text';
}
return null;
},
),
// Add TextFormFields and ElevatedButton here.
],
),
);
}
}
5.비교해볼점
네비게이션 개념 (react navigation과 비교)
스택개념
웹에서의 네비게이션 개념
'Front-End' 카테고리의 다른 글
[Typescript] Generic (0) | 2021.07.15 |
---|---|
[flutter] flutter의 상태관리 라이브러리 GetX (1) | 2021.07.08 |
[React Native Web] 에러 정리 (7) | 2021.06.01 |
[React Native Web] 앱과 웹을 한번에 개발하기 - 4(feat.Styled-Components) (4) | 2021.05.09 |
[React Native Web] 앱과 웹을 한번에 개발하기 - 3 (Feat. Typescript) (4) | 2021.03.27 |
댓글