플러터의 구조 (메인 클래스파일)
import 'package:flutter/material.dart'; //플러터 프레임워크 전처리
void main() { //메인 메소드 (메인클래스를 실행)
runApp(MyApp());
}
class MyApp extends StatelessWidget { //메인클래스 (무조건 StatelessWidget을 상속받는다)
// This widget is the root of your application. //※StatelessWidget이란? 앱화면의 상태가 변하지 않는 위젯의 형태
@override //보통 StatefulWidget을 상속받은 클래스를 return하여 사용
Widget build(BuildContext context) {
return MaterialApp(
home: testApp(),
);
}
}
class testApp extends StatefulWidget { //건드리지 않는 부분 (앱 화면의 상태에 접근하기 위한 미끼)
@override
testAppState createState() => testAppState();
}
class testAppState extends State<testApp> { //실질적으로 코딩하는 부분 (Stateful 위젯을 상속받아 앱의 실질적인 부분을 담당하는 클래스)
@override
Widget build(BuildContext context) {
return Container(
);
}
}
다트의 기본
다트는 JAVA기반의 언어이고, 플러터는 앱 개발을 위한 다트기반의 프레임워크 이다.
변수형이 자유롭고 람다방식(a=>b)를 지원하기 때문에 더 간결한 코드 작성이 가능하다
다트의 변수형
print()안에 “”와 ‘’을 둘다 써도 된다
var이라는 변수형이 있어 모든 변수를 편하게 사용할 수 있다. (심지어 이걸로 배열도 만들 수 있다. => var items = [1,2,3])
dynamic 이라는 변수형이 있는데 이것은 메소드에서 파라미터를 자유롭게 넘길 때 사용 (인수에서의 var)
num은 정수와 실수를 둘다 포함하는 변수형이다
final은 JAVA와 달리 변수형을 따로 선언하지 않아도 되며, 이는 const와 마찬가지로 상수형이다 (변하지 않는 수)
(final은 동적으로 메모리에 할당, const는 정적으로 메모리에 할당)
다트에서는 배열형이 따로 없고 List를 사용한다, Ex) List<string> items = [‘a’,‘b’,‘c’]
다트의 문법
if (a is! int) { }
: a가 정수가 아니라면 참
b = a as double;
: 변수 b에 변수 a를 실수형으로 치환하여 값을 대입한다
print(name ?? ‘널’)
: name변수의 값이 null이 아니면 ‘널’을 출력
정수형은 print할 때 ‘$a’ 이렇게앞에 $를 붙여야함
var 사용팁
var keymap = { ‘key1’ : 1, ‘key2’ : 2, ‘key3’ : 3 }
(이런식으로 json형식의 변수를 만들 수 있음)
var a = {1,2,3}
var b = {...a, 4, 5} => {1, 2, 3, 4, 5}
변수이름 앞에 언더바를 넣으면 private변수가 된다 ex ) var _name
주석달 때 ///을 하면 메서드 정보에도 나온다
다트의 메서드
다트에서 메서드는 1급 객체이다. =>
메소드의 파라미터를 옵션으로 만들 수 있다 (오버로드 할 필요가 없어지고 오류가 적다)
void hel({var item, int age}) { }
void llo(string name, {int age}) { }
- 요청후에 return 받기
: future networkRequest() async { await Fucture.delayed(Duration(seconds: 3)) }
: 비동기처리(로그인 이라던가 회원가입 등의 네트워크를 통한 주기적이지 못한 처리)에 용이
다트의 클래스
생성자
: Person(this.name, this.age);
: 자바와 달리 생성자가 매우 간단함
줄여서 대입하기
: var person = Person(); person.name = ‘hong’; person.age = ‘14’;
var per = Person() ..setName(‘홍길동’) ..setAge(‘15’);
=> 객체명을 생략하고 ..만 써도 된다!
interface 대신 implements로 인터페이스를 만든다
: with를 사용하면 선택적으로 @override를 할 수 있다.
입력받기 (Stream)
var _a = StreamController<int>()..add(0);
_a.add(count);
=> 이런식으로 스트림을 이용하여 이벤트를 처리할 수 있다
=> 참고로 저 예제는 _a라는 스트림컨트롤러 객체에 0이라는 값을 추가하고 count라는 파라미터를 넘긴 것
'Development > Project' 카테고리의 다른 글
211020~211122 이게뭐약 리뉴얼 개발일지 (0) | 2022.01.30 |
---|---|
모해묵지 프로젝트 Readme (0) | 2021.11.28 |
Hermes 개발일지 (0) | 2021.10.20 |
Hermes_ 개발 중 공부 정리 본 (0) | 2021.10.20 |
211011~15 모해묵지 개발일지 (0) | 2021.10.19 |