전체 글 412

[Flutter] 다국어 지원

Flutter - 다국어 지원 https://software-creator.tistory.com/24 intl 패키지와 툴 써서 번역하기 플러터 다국어 지원은 좀 까다롭습니다. Intl.message를 .arb파일로 바꾼 뒤 읽어들여야 한다. .arb파일이란? arb(Application Resource Bundle)는 구글에서 만든, 파일 형식입니다. 언어 데이터를 저장했다가 번역하기 위해 쓰이죠. 단순한 형태의 json파일이라고 보면됩니다. 플러터에선 arb말곤 다국어지원을 안해서, 어쨋든 arb파일 다루는 법을 알아야 합니다. Google Translators Toolkit도 .arb파일형식을 지원하고 있습니다. intl란? intl은 다트에서 다국어(internalization and locati..

Flutter & Dart 2022.10.22

[Flutter] Screen Naviation | 화면(라우트)간 이동

Screen Naviation | 화면(라우트)간 이동 https://here4you.tistory.com/111?category=787559 라우트(Route)란? -Flutter 앱에서는 스크린이나 페이지를 라우트라고 부른다. 라우트간에 네비게이션을 하는 방법 import 'package:flutter/material.dart'; void main(){ runApp(MaterialApp( title: "Navigation Basics", home: FirstRoute(), //FirstRoute를 홈으로 설정 )); } //첫번째 라우트 class FirstRoute extends StatelessWidget{ @override Widget build(BuildContext context){ retu..

Flutter & Dart 2022.10.22

플러터 스트림

스트림은 데이터나 이벤트가 들어오는 통로다. 비동기 작업을 할 떄 주로 쓰인다. 1초마다 데이터를 만드는 스트림이다. void main(){ var stream = Stream.periodic(Duration(seconds: 1), (x) => x.take(10); //1초마다 데이터를 1개씩 만듬, 10개 까지만. stream.listen(print); //이벤트 처리 } 스트림은 항상 만들기 -> 연결(listen) -> 데이터 처리의 과정을 거친다. Stream - 여러 방법으로 스트림 만들기 즉시 만들거나, 일정 시간마다 만들거나, 퓨처를 써서 만들 수 있다. void main(){ Stream.fromIterable([1,2,3,4,5]) //일반적인 데이터를 다룰 때 .listen((int x..

Flutter & Dart 2022.10.22

[Flutter] 플러터에 대해 알아보자

Flutter 간단 정리 플러터 레이아웃 참고 사이트 안드로이드와 ios모바일 애플리케이션을 One Source로 개발할 수 있는 UI프레임워크 -플러터는 구글에서 만들었습니다. -플러터 공식 홈페이지 flutter.dev -플러터는 다트(Dart)라는 언어로 개발 -플러터 개발 시작은 안드로이드 스튜디오를 권장. 플러터 설치하기 1)안드로이드 스튜디오 설치 2)flutter-sdk를 설치합니다. 3)안드로이드 스튜디오에서 (flutter plugin)을 설치합니다. 변수 - 타입 지정, 타입 추론 다트는 타입을 정할 수도 있고, 안 정할 수도 있다. 타입을 정하지 않으면 컴파일할 때 타입이 정해진다.(타입 추론) 다만 한번 정한 타입을 나중에 바꿀 수는 없다.(type-safe) DART - 타입 지정..

Flutter & Dart 2022.10.20

다트 기본 문법

다트 문법 http://doocong.com/flutter/dart-study/ 다트 기본 문법 함수 void main(){ var test = "test"; print('test = $test'); } 기본값 설정 void printMsg(String msg, [String value = 'undefined']){ print('msg = $msg, value = $value'); } name, value 쌍으로 map형태로 인수 넣기 void main(){ printMsg(msg: "1234", value: "5678"); } 함수를 인자로 넣을수도 있다. double add(double a, double b) => a+b; //Function 정의자를 유의해서 보자. Function makeAdder..

Flutter & Dart 2022.10.20

Provider 패턴

Provider 패턴 프로바이더 패턴을 쓰는 이유는? a.관심사의 분리 관심사의 분리는 디자인 원칙의 하나입니다. 보통 관심사는 어떤 코드가 하는 일을 말합니다. UI를 담당하는 코드, 네트워크를 담당하는 코드, 데이터를 담당하는 코드 등 보통은 한 클래스가 여러 역할을 할 수록, 클래스가 커지고 관리가 어렵게 됩니다. 따라서 클래스가 하나의 역할(관심)만 갖도록, 클래스를 나눈다. 이게 바로 관심사의 분리이다. Provider나 Bloc패턴을 쓰는 이유는 관심사의 분리를 위해서이다. b. 데이터의 공유 하나의 데이터를 여러 페이지에서 공유하고 싶을 때가 있다. ex) 유저 인증 정 Provider패턴을 쓰면 데이터 공유를 쉽게 할 수 있습니다. c.좀 더 간결한 코드 Bloc패턴의 경우 클래스들을 역할..

코딩 2022.10.20

Bloc Pattern

Bloc Pattern Bussiness Logic Component https://medium.com/@pks2974/bloc-%EC%9D%B4%ED%95%B4-%ED%95%98%EA%B8%B0-%EB%B0%8F-%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC-%ED%95%98%EA%B8%B0-7dc705e4c640 Bloc 패턴은 Flutter의 상태 관리를 제어하기 위해서 Google개발자에 의해서 디자인 되었다. Flutter에서는 상태에 따라서 렌더링이 일어나기 때문에, 상태 관리가 매우 중요하다. BLOC은 UI와 Bussiness Logic을 분리하여, 각각 코드의 의존성을 낮추게한다. Bloc의 형태 bloc에서 각 UI객체들은 bloc객체를 구독하고 있다. bloc객체..

코딩 2022.10.20

팩토리 패턴(Factory pattern)

팩토리 패턴(Factory pattern) -모든 팩토리 패턴에서는 객체 생성을 캡슐화한다. -팩토리 메소드 패턴과 추상 팩토리 패턴이 존재한다. -팩토리 메소드 패턴: 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브 클래스에서 결정한다. -추상 팩토리 패턴: 인터페이스를 이용하여 서로 연관된, 또는 의존하는 객체를 구상 클래스를 지정하지 않고도 생성할 수 있다. 추상 팩토리 패턴에는 팩토리 메소드 패턴이 포함될 수 있다. -디자인 원칙 중 '추상화된 것에 의존하도록 만들어라. 구상 클래스에 의존하지 않도록 만든다.'에 기인한 패턴이다. 팩토리패턴의 핵심은 '클래스의 인스턴스를 만드는 것을 서브클래스에서 결정하도록 한다는 것이다.' 즉, new 키워드를 사용하는 부분..

코딩 2022.10.20