목록Flutter (6)
자라나라
오늘은 파일을 이용해볼 것이다. 먼저 의존성에 path_provider 패키지를 추가해주자. 이 패키지는 앱이 설치되어 있는 경로와 임시 폴더의 경로를 찾아준다. main.dart 파일에서도 path_provider와 추가적으로 dart:io 라이브러리도 import 해준다. import 'package:flutter/material.dart'; import 'FileApp클래스가 작성된 다트파일'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Mater..
db를 이용하는 것을 제외하고, 적은양의 데이터를 앱의 데이터를 저장하는 방법은 크게 두 가지이다. 1. 공유 환경설정(shared-preferences) 2. 파일(path_provider) 오늘은 공유 환경설정을 통해 데이터를 저장하는 법을 살펴보겠다. 이 방법은 비교적 크기가 작은 데이터를 저장할 때 쓴다. 사용자가 앱테마를 다크모드로 설정했을 때, 이를 다음 실행 시에도 적용시키는 등의 간단한 환경설정에 주로 쓰인다. 플러터 프로젝트 실행시 기본으로 나타나는 데모앱에 +버튼을 눌러보자. 아무리 눌러도 앱을 종료하고 다시 키면 다시 초기화(0)가 되어있다. 이번엔 shared_preferences 클래스를 이용해, 앱을 다시 시작해도 _counter의 숫자가 저장되게 할 것이다. 우선 의존성에 sh..

kakao developers에서 제공하는 다음(Daum) 책검색 API를 이용하여 간단한 플러터 앱을 만들어 보았다. (DOIT 플러터앱 프로그래밍 책을 참고 하였다.) 우선 JSON 데이터가 어떻게 디코딩 되는지 간단히 알아보자. import 'dart:convert'; void main() { var jsonData = ''' [ {"userName" : "Ray"}, {"age" : 23} ] '''; var decodedList = json.decode(jsonData); print(decodedList is List); // true print(decodedList); // [{userName: Ray}, {age: 23}] var first = decodedList[0]; var second..

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 void main() { var myStream = Stream.fromIterable([1,2,3,4,5]); myStream.listen((x) => print('iterable : $x')); var myStream2 = Stream.periodic(Duration(seconds: 1), (x) => x).take(5); myStream2.listen((x) => print('periodic : $x')); var myStream3 = Stream.fromFuture(getData()); myStream3.listen((x) => print('fromFuture : $x')); } Future getData() async{ ..
저번 글에서 firebase 연동하고 dependencies에 cloud_firestore설치까지 마쳤었다. 하지만 파이어베이스로 어떤 작업을 하기 위해선 firebase_core 패키지도 설치해 주어야한다. 또, 유저등록, 로그인인증 기능 등을 위해 firebase_auth도 설치해주자. 세 가지 모두 설치 됐다면 이제 로그인 기능을 구현해보자! Firebase_core에는 Firebase.initializeApp()이라는 비동기 매서드가 있다 파이어베이스를 쓰려면 늘 이 메서드를 먼저 호출해주어야한다. 이 메서드를 쓰기 위한 준비도 필요하다. main.dart로 가서 'package:firebase_core/firebase_core.dart' 를 먼저 import 해준 뒤, 바로 아래의 void ma..
Form( child:Column( children: [ TextFormField 있는 거임 여러개의 TextFormField를 한 번에 관리하기 위해 Form으로 감싸준 것이다 TextFormField는 username, email , password로 3개이다. border이나 Icon, size 등 기본적인 틀은 다 만들어 놓은 것을 전제로 한다. (password는 obscureText = true로 설정해주는 센스~) 유효성 검사를 위해 TextFormField의 validator argument를 사용한다 예시를 들자면 username에는 validator : (value){ if(value.isEmpty || value.length