[Flutter] Docs
프로젝트 구조
.idea : 개발 도구에 필요한 설정 android : 안드로이드 네이티브 코드를 작성하는 부분 build : 빌드시 생성되는 파일 ios : ios 네이티브 코드를 작성하는 부분 lib : 다트 코드를 작성하는 부분 test
.gitignore .metadata : 프로젝트가 관리하는 파일 .,pacakages : 각종 패키지 정보 flutter_app.iml : 개발 도구에 필요한 설정 파일 pubspec.lock : 패키지 매니저가 이용하는 파일 pubspec.yaml : 패키지 매니저가 이용하는 파일 README.md
StatelessWIdget
상태를 가지지 않는 위젯을 구성하는 기본 클래스
한번 그려진 후 다시 그리지 않는 경우. 프로퍼티로 변수를 가지지 안흔다. (상수는 가질 수 있다.)
MaterialApp 클래스
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
)
title : 제목 theme : 테마 home : 작성하는 위젯이 실제 이 앱이 표시하는 위젯
StateFulWidget
상태가 있는 위젯을 정의할 떄 사용
StateFulWidget 클래스는 StatefulWidget을 상속받은 MyHomePage 클래스와 State<MyHomePage>
클래스를 상속받은 _MyHomePageState 클래스로 구성됨.
createState() 메소드는 StatefulWidget이 생성될 때 한번만 실행되는 메서드
State 클래스를 상속받은 클래스는 상태 클래스 라고 부름.
상태클래스는 변경 가능한 상태를 프로퍼티 변수로 표현함. 이 변수의 값을 변경하면서 화면을 다시 그리게 됨.
setState() 메서드는 전달된 익명 함수를 실행한 후 화면을 다시 그리게하는 역할을 함.
화면은 build() 메서드가 실행되면서 그려진다.
즉, setState()메서드는 build() 메서드가 다시 실행되게 하는 역할.
Scaffold 클래스 , AppBar 클래스
build() 메서드가 호출될 때 불리는 Scaffold 클래스
Scaffold 클래스는 머티리얼 디자인 앱을 만들 떄 뼈대가 되는 위젯. 즉, 머티리얼 디자인 앱을 만든다면 MaterialApp -> Scaffold가 기본 형태.
// 그림
’$_counter’
정수형 변수를 Text위젯에 표시하려면 문자로 변경해야함.
변숫값을 문자열 형태로 변경하고자 할 때는 변수 앞에 $기호를 붙임.
FloatingActionButton
Scaffold 클래스는 머티리얼 디자인에 자주 사용되는 FloatingActionGButton 클래스를 정의하는 프로퍼티를 제공함.
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
onPressed 프로퍼티는 버튼이 눌러지면 실행되는 부분이다.
여기에 동작시킬 코드를 함수 형태로 작성함. 다트에서는 함수도 값으로 사용될 수 있기 때문에, _increamentCount()메서드의 이름을 직접 값으로 작성했음.
onPressed: () => _incrementCounter(),
onPressed: () {
return _incrementCounter();
}
tooltip 프로퍼티에는 사용자가 FloatingActionButton을 길게 터치할 때 표시할 글자를 지정
child 프로퍼티에는 아이콘 인스턴스를 정의하여 +모양 버튼을 표현
image
Image.network("https://picsum.photos/200"),
FadeInImage.assetNetwork(placeholder: "assets/loading.gif", image: "https://picsum.photos/200"),