### 데이터베이스란? 일정한 규칙을 통해 구조화 되어 저장되는 데이터의 모음 ### 데이터베이스의 특징 * 실시간 접근성 * 지속적인 변화 * 동시 공용 * 내용에 의한 참조 ### 릴레이션 데이터베이스에서 정보를 구분하여 저장하는 기본 단위 ### 테이블과 컬렉션 관계형 데이터베이스 : 레코드 -> 테이블 -> 데이터베이스 NoSQL : 도큐먼트 -> 컬렉션 -> 데이터베이스 ### 데이터베이스 언어 DDL : 데이터베이스 구조를 정의 (alter, creat, drop) DML : 데이터베이스 조작어 (select, insert, update, delete) DCL : 데이터베이스 제어어 , 무결성 유지, 병행수행 제어, 보호와 관리(commit, rollback, grant, revoke) ###..

12-1 안드로이드 네이티브와 통신하기 네이티브 각 모바일 운영체제에 최적화된 언어로 작성된 소스 운영체제에 맞게 개발된 오픈소스를 사용할 때는 네이티브 언어로 작성된 API를 이용한다. 플러터는 이러한 운영체제별 API를 메세지 전달 방식으로 사용할 수 있도록 지원한다. 플러터 앱이 운영체제별 API와 통신하는 방법 플러터 앱은 플랫폼 채널을 통해서 안드로이드나 ios 호스트(호스트는 양방향으로 데이터를 주고받는 통신 장치라고 생각하면 쉽다.) 에 메시지를 전달한다. 메세지를 전달받은 호스트는 네이티브 언어를 사용해서 운영체제별 API를 호출하고 플러터 앱에 응답을 보내준다.즉, 플랫폼 채널이라는 창구를 이용해 운영체제별 호스트와 통신함으로써 API를 사용할 수 있다. 이때 다트의 자료형을 각 플랫폼에..

11-1 애니메이션 위젯이 처음 위치에서 마지막 위치까지 어떻게 이동할 것인지를 정의하는 것 AnimatedContainer 위젯 기존의 컨테이너 위젯과 똑같지만 애니메이션의 모양을 결정하는 curve와 재생 시간을 결정하는 duration 변수를 추가로 넣을 수 있다. 플러터 에니메이션은 선형보간법(두개의 점이 주어졌을 때에 그 두점을 지나는 함수를 직선의 방정식으로 나타내는 것)을 활용해 다양한 모양을 만드는데, 이러한 수학적인 부분을 AnimatedContainer가 손쉽게 처리해 준다. animation example 프로젝트 생성 1. 그래프 애니메이션 class _AnimationApp extends State{ List peoples = new List.empty(growable: true)..
데이터 베이스 관리 시스템에는 여러가지 종류가 있지만 모바일에서는 가볍고 빠른 SQLite를 주로 사용한다. 플러터는 SQLite를 사용하는 sqflite 패키지를 제공한다. 10-1 더보기 class Todo{ // 데이터베이스에 넣을 데이터 타입에 대한 클래스 String? title; String? content; int? active; int? id; Todo({this.title, this.content, this.active , this.id}); Map toMap() { //맵 형태로 데이터를 변환, sqflite 패키지는 데이터를 맵 형태로 다룬다. return { 'id':id, 'title': title, 'content': content, 'active': active, }; } } ..
플러터에서 앱의 데이터를 저장하는 방법 공유 환경설정 - 비교적 적은 양의 간단한 데이터를 저장하는 용도로, shared Preferences라는 클래스를 이용한다. 이 클래스는 키-값 쌍으로 구성된 공유 환경설정 파일을 가리키며 이 파일에 데이터를 읽거나 쓰는 함수를 제공한다. 파일 데이터베이스 9-1 공유 환경설정에 데이터 저장하기 더보기 class _MyHomePageState extends State { int _counter = 0; void _setData(int value) async { var key = 'count'; SharedPreferences pref = await SharedPreferences.getInstance(); pref.setInt(key, value) } void _..

Main.dart class _FirstPage extends State { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Sub Page Main'), ), body: Container( child: Center( child: Text('첫 번째 페이지'), ),), floatingActionButton: FloatingActionButton( onPressed: () { Navigator.of(context).pushNamed('/second'); }, child: Icon(Icons.add), ),);}} /* Navigator 클래스에서 push함수 말고 pushedNamed 함..

앱이 서버와 서로 통신하면서 데이터를 주고 받으려면 네트워크로 연결해야 한다. 네트워크와 열결하는 통신규약을 HTTP라고 한다. HTTP 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다. 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터 웹페이지(HTML)나 그림 정보를 요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다. 이 정보가 모니터와 같은 출력 장치를 통해 사용자에게 나타나는 것이다. API Application Programming Interface 애플리케이션 프로그래밍 인터페이스 응용 프로그램 프로그래밍 인터페이스 응용프로그램에서 사용할 수 있도록, OS나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 ..

플러터는 ios 스타일의 위젯을 cupertino 라는 패키지로 제공한다. pubspec.yaml 파일을 보면 cupertino_icons 라는 설정값이 보이는데 패키지는 플러터가 기본으로 제공하는 ios 아이콘 묶음이다. dependencies 설정 : pubspec.yaml 파일에서 dependencies 설정은 누군가 이미 구현해 놓은 패키지를 가져와서 사용할 수 있도록 하는 방법 CupuertinoMain.dart 예제코드 import 'package:flutter/cupertino.dart'; import 'animalItem.dart'; import 'iosSub/cupertinoFirstPage.dart'; import 'iosSub/cupertinoSecondPage.dart'; List ..