
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 ..

각 화면을 탭으로 연결한 탭바를 이용하면 관련있는 내용끼리 묶을 수 있다. 네비게이션(navigation) : 여러 화면을 만들고 각 화면을 탭바에 연결해 사용자가 탭을 눌렀을 때 각 화면으로 이동하는 앱 기능 5-1 예제코드 FirstApp클래스와 SecondApp 클래스를 각각 StatelessWidget 클래스를 상속받아 만들어 준다. TabController를 지정해 length에는 몇 개의 탭을 만들지 지정하고, vsync에는 탭이 이동했을 때 호출되는 콜백 함수를 어디서 처리할지 지정한다. 여기서 vsync:this 코드에서 오류가나는 이유는 탭 컨트롤러는 여러 화면을 이동하는 역할을 하므로 기보적으로 애니메이션을 사용하는데, this가 가리키는 _MyHomePageState 클래스에 이와 관..