Flutter - Android , Ios
·
Flutter
android 빌드 확인 사항 최신 버전의 Android SDK 및 Android Studio를 설치했는지 확인. 프로젝트 보기를 사용하여 Flutter 프로젝트에서 "android" 폴더를 열기. android 디렉터리 아래의 build.gradle 파일에 지정된 Gradle 버전을 확인. 이전 버전인 경우 최신 버전으로 업데이트할 수 있다. app 디렉터리 아래의 build.gradle 파일을 수정하여 minSdkVersion, targetSdkVersion 및 서명 구성과 같은 Android 빌드 설정을 구성한다. 여기에서 종속성과 플러그인을 추가할 수도 있다. Android 매니페스트 파일을 사용자 정의해야 하는 경우 app/src/main 디렉토리에 AndroidManifest.xml 파일을 만..
Flutter - yaml & pubspec.yaml
·
Flutter
yaml 또는 yml YAML(YAML Ain't Markup Language)은 소프트웨어 애플리케이션의 구성 파일에 일반적으로 사용되는 사람이 읽을 수 있는 데이터 직렬화 언어. YAML 파일을 작성할 때 파일이 잘 구조화되고 쉽게 읽고 유지 관리할 수 있도록 몇 가지 규칙을 따르는 것이 중요. 규칙 들여쓰기 사용: YAML 파일은 들여쓰기를 사용하여 중첩 구조를 정의한다. 두 개의 공백을 사용하여 각 수준의 들여쓰기를 파일 전체에서 일관성 있게 들여쓴다. 적절한 구문 사용: YAML에는 데이터 유형을 정의하기 위한 특정 구문이 있다. 키-값 쌍을 정의하려면 "key: value" 형식을 사용 목록 항목을 나타내려면 "-" 형식을 사용 여러 줄 문자열은 "\n" 형식을 사용 문자열에 따옴표 사용: 특..
Flutter - WebScoket
·
Flutter
1. 패키지 추가 웹소켓 관련 패키지를 사용하기 위해 pubspec.yaml의 dependencies 항목을 다음과 같이 수정한다. dependencies: flutter: sdk: flutter # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^0.1.2 web_socket_channel: ^1.0.13 2. 라이브러리 import 웹소켓 관련 패키지를 사용하기 위해 다음과 같이 라이브러리들을 import 한다. import 'package:flutter/material.dart'; import 'pa..
Flutter - JWT
·
Flutter
요청에 의한 접근 권한 체크 이전 글에서 앱에서 로그인 상태 유지를 위한 방법으로 FlutterSecureStorage를 사용하였다. 이 방법은 로그인 상태를 유지한 것이지 클라이언트가 서버에 특정 정보를 요청할 때 적절한 권한을 가진 클라이언트가 요청한 요청인지에 대해서 권한 체크를 할 수가 없다. 클라이언트가 GET이나 POST 요청한다고 해서 서버는 무작정 해당 정보를 접근할 수 있게하면 안된다. 서버가 인증한 클라이언트일 때 특정 정보에 요청 및 접근 할 수 있게 해야 된다. 세션 로그인 토큰 로그인 일반적으로 로그인 권한을 인증하는 방식에는 세션 로그인과 토큰 로그인 2가지가 있다. 모바일과 웹의 환경이 달라서 로그인을 구현하기 위해서 어떻게 구현하는지 정리 해보았다. 세션 로그인 클라이언트(브..
Flutter - 동시성 , 병렬성 , 콜백함수
·
Flutter
동시성(Concurrency)과 병렬성(Parallelism) 동시성 동시에 실행되는 것처럼 보이게 하는 것 하나의 코어에서 여러 개의 스레드를 동작시키기 위한 방식 여러 개 스레드를 컨텍스트 스위치(context switch)로 번갈아 가면서(interleaved) 실행 싱글 코어, 멀티 코어에서 모두 구현 가능 병렬성 여러 개의 코어가 실제로 각각 여러 개의 스레드를 맡아 동시에 처리하는 것 물리적 코어가 필요하므로 멀티 코어에서만 구현 가능 즉, 동시성과 병렬성 주제는 물리적 하드웨어 이슈에 더 가깝다. 콜백 지옥과 콜백 함수 콜백 함수 콜백 함수: 다른 함수의 매개변수에 함수의 이름을 적어 넘겨준 함수이다. 함수를 명시적으로 호출하는 것이 아니라 이벤트 발생하면 이벤트 핸들러가 어떤 상태를 바꾸는..
Flutter - Generators (제너레이터)
·
Flutter
Dart 의 generator 를 살펴보자. generator 의 용도는 to lazily produce a sequence of values 코드상에서 선언된 순간에 바로 데이터가 처리되지 않고 실제로 사용할 때 데이터가 처리된다. 뒤늦게(실제 데이터가 필요할 때) 처리되는 방식은 동기식 과 비동기식이 있다. 둘 다 yield 를 통해 데이터를 전달하는데 return 과 다른점은 처리할 데이터가 있는 동안은 동작을 완료하지 않고 계속 수행하게 된다. Synchronous sync* 속성을 함수가 가지게 된다. Iterable object 를 리턴한다. import 'dart:io'; Iterable generatorSync(int n) sync* { int k=0; while (k < n) { yiel..
Flutter - Timer
·
Flutter
Future.delayed와 Timer Future.delayed: Future 객체를 반환한다. 주어진 시간 만큼 지연 후 함수를 실행한다. 내부적으로는 타이머를 사용하지만 외부에 노출되지 않으므로 중간에 취소하거나 재시작하거나 할 수 없다. Future 객체를 반환하므로 await 키워드를 사용해서 지연 시간을 보장할 수 있다. Timer: 아무 것도 반환하지 않는다. 주어진 시간 만큼 지연 후 함수를 실행한다. 주기적인 타이머 알림을 받을 수 있다. 타이머를 종료(cancel)할 수 있다. Dart: Future.delayed Future.delayed(기간, 함수); 형식으로 호출한다. 기간: Duration 객체, 보통 const 상수로 만든다. 함수: 익명함수 void main() { Futu..
Flutter - Future , async , await
·
Flutter
굳이 비동기 함수로 작성할 필요가 없지만 오직 비동기 함수 작성과 호출 문법을 설명하기 위한 예제이다. 동기 함수의 선언 int sum(int a, int b) { return a + b; } 비동기 함수의 선언 Future sum(int a, int b) async { return a + b; } 동기 함수의 호출 void main() { print(sum(1, 2)); } 비동기 함수의 호출 (await 키워드 사용) Future main() async { final result = await sum(1, 2); print(result); } 비동기 함수의 호출 (Future - then() 메소드 절 사용) Future main() async { sum(1, 2).then((result) { pri..
Flutter - pubspec.yaml
·
Flutter
pubspec.yaml 파일 생성 가장 간단한 pubspec.yaml 파일은 다음과 같다. name: 프로젝트_이름 environment: sdk: '>=2.10.0
Flutter - 클래스 선언과 인스턴스 생성
·
Flutter
객체지향 개요 데이터 캡슐화(encapsulation) 데이터 추상화(abstraction) 복잡한 문제를 다루기 위해서 불필요한 부분들은 숨기고 중요한 부분만을 표현 재사용의 단위 클래스를 통해 객체 단위로 생성되어 움직인다. 정보은닉(블랙박스)을 실현하는 장치 인터페이스를 제외한 데이터와 함수들을 캡슐 속으로 숨기기 때문에 캡슐화를 통해 정보 은닉이 실현 public, private, protected 가시성 키워드가 없다. (자바는 있음) 다트는 기본이 public 변수이고 밑줄(_)을 붙이면 private 변수이다. public 변수는 모든 파일에서 접근이 가능하다. private 변수는 해당 파일에서만 접근이 가능하다. (같은 파일 안에서는 클래서 밖에서도 접근 가능) 속성과 메소드 속성 pro..