프로그래밍177 [Flutter] Flutter App (2) * 좋아요 만들기 import 'package:flutter/material.dart'; import 'package:english_words/english_words.dart'; import 'package:flutter/rendering.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'Startup Name Generator', home: RandomWords(), ); } } class Ran.. 2021. 3. 16. [Flutter] Flutter App (1) * app 만들어보기 - Stateless 위젯 : 모든 속성(변수)들이 변하지 않음. 모든 값들은 final 선언 - Scaffold 위젯 : appBar, title, body property 제공 - StatelessWidget : 단 한번만 Build 과정 발생. 한 번 그려진 화면은 계속 유지되며, 성능상 장점 - StatefulWidget : state(데이터 상태) 포함하며, setState(데이터 변화) 발생할 때마다 다시 Build 과정 발생 ▶ 동적 화면 쉽게 구현 가능 //pubspec.yaml dependencies: flutter: sdk: flutter # The following adds the Cupertino Icons font to your application. # Us.. 2021. 3. 16. [Flutter] Dart 문법 (stream, async*, yield) * stream : 파이프 개념. - 값, 이벤트, 객체, 컬렉션, 맵, 오류 또는 심지어 다른 스트림에서 모든 유형의 데이터가 스트림에 의해 전달 가능 - async* : 게으른 연산. 요청이 있을 때는 연산을 미루다가 함수에서 사용 시 연산함 - yield : return과 비슷하게 값을 반환해주는데 한번에 하나씩 return함과 동시에 함수가 종료되지 않고 계속 열려있으면서 지속적으로 return 해줌. import 'dart:async'; Future sumStream(Stream stream) async { var sum = 0; await for (var value in stream) { sum += value; print("value : " + value.toString() + ", sum .. 2021. 3. 16. [Flutter] Dart 문법(??=, ??, null 인식 연산자, cascade, ..) #flutter operater ?? #flutter null #dart .. * null 인식 연산자 : ??=, ?? * cascade (..연산자) : 자바의 builder 패턴과 유사. 객체 레퍼런스 변수 없이 바로 값 대입 가능 class Animal { var name = "dog"; var age; var sound; } main() { var a = 3; // ??= : 변수가 현재 널인 경우에만 변수에 값 지정 a ??= 4; print(a); // ?? : 왼쪽 표현식 값이 널이 아니면 왼쪽 표현식을, 널이면 오른쪽 표현식 리턴 print(1 ?? 3); print(null ?? 12); Animal animal = Animal(); print(animal.name); Animal? ani2; // ?. : null이면 null값 출력 print(ani2?.nam.. 2021. 3. 16. [Flutter] Dart 문법 (skip, take) * skip, take - skip : 첫 번째 (count) 요소 제외한 모든 요소 제공하는 iterable 반환, 즉 count개 요소 제외한 모든 요소 - take : 이 iterable의 첫 번째 요소 (count) 개의 lazy iterable 반환, 즉 iterable의 첫 번째 요소부터 count개 까지의 lazy iterable 반환 String scream(int length) => "${'a' * length}"; main() { final values = [1, 2, 3, 5, 10, 50]; for (var length in values) { print(scream(length)); } print("\n"); var map = values.map(scream); print(map.r.. 2021. 3. 15. [Flutter] Dart 문법 (json) * 클래스 직렬화 (Json) - Flutter는 간단한 json 인코더와 디코더가 내장된 dart:convert 라이브러리 가짐 - fromJson : map 구조에서 새로운 User 객체 생성하기 위한 생성자 - toJson : User 객체를 map 구조로 변환하기 위한 메서드 //user.dart class User { final String name; final String email; User(this.name, this.email); User.fromJson(Map json) : name = json['name'], email = json['email']; Map toJson() => { 'name': name, 'email': email, }; } //main.dart import 'use.. 2021. 3. 15. [Flutter] Dart 문법 (getter, setter) * getter, setter class Rectangle { double left, top, width, height; Rectangle(this.left, this.top, this.width, this.height); //Define two calculated properties : right and bottom. double get right => left + width; set right(double value) => left = value - width; double get bottom => top + height; set bottom(double value) => top = value - height; void printRectangle() { print("===================.. 2021. 3. 15. [Flutter] Dart 문법 (async, Future, await, then) * 비동기 - 아래 printWithDelay함수에서 await를 빼고 실행시키면 Future.delayed와 print가 동시에 실행되는 듯 하고, await을 넣고 실행시키면 delay가 적용된 후에 print가 실행된다. //Future : An object representing a delayed computation. //async : async 함수 본문 앞에 키워드 사용하여 비동기로 표시 //await : async 내에서 작동하는 기능. Future printWithDelay(Duration delay, String message) async { await Future.delayed(delay); print(message); } Future printWithDelay2() async { v.. 2021. 3. 15. [Flutter] Dart 문법 (abstract, implement) * 추상클래스, implement : 추상클래스 및 일반 클래스 implement 가능. - implement하면 클래스가 구현해 둔 메서드도 재정의 해야할 강제성이 생김. (일반 메서드도 구현해야 함) class Spacecraft extends Describable { String? name; DateTime? launchDate; //Constructor, with syntactic sugar for assignment to members. Spacecraft(this.name, this.launchDate) { //Initialization code goes here. } Spacecraft.origin() { name = "무탈리스크"; launchDate = DateTime.now(); } /.. 2021. 3. 15. [Flutter] Dart 문법 (상속) * 상속 class Spacecraft { String? name; DateTime? launchDate; //Constructor, with syntactic sugar for assignment to members. Spacecraft(this.name, this.launchDate) { //Initialization code goes here. } Spacecraft.origin() { name = "무탈리스크"; launchDate = DateTime.now(); } //Named contructor that forwards to the default one. Spacecraft.unlaunched(String name) : this(name, null); int? get launchYear =>.. 2021. 3. 15. 이전 1 ··· 11 12 13 14 15 16 17 18 다음