Thumbnail
BEST 개발 ・ 프로그래밍 모바일 앱 개발
Flutter 입문 - 안드로이드, iOS 개발을 한 번에
(4.6)
78개의 수강평 ∙ 1097명의 수강생

33,000원

지식공유자 : 오준석
총 40개 수업˙총 3시간 58분
평생 무제한 수강
수료증 발급 강의
초급 대상
이 강의는 멘토링 신청이 가능합니다.
멘토링은 수강 신청과 별개로 운영되며, 수강생이 아니어도 신청할 수 있습니다.
내 목록 추가 566 공유
inflearn 프로필

firebase 관련 문법 수정 사항입니다. inflearn 19시간 전
https://firebase.flutter.dev/docs/migration/ 이거 보고 코드 최신화했습니다. 참고하세요.

1
Seong Uk Kang 프로필

ImagePicker.pickImage vs ImagePicker.getImage Seong Uk Kang 12일 전
ImagePicker.pickImage를 하면 저는 ImagePicke,pickImage는 deprecated 하다고 해서 공식 문서 보고 아래와 같이 수정했습니다.    Future _getImage() async { final pickedFile = await picker.getImage(source: ImageSource.gallery); setState(() { if(pickedFile != null) { _image = File(pickedFile.path); } else { print('No Image Selected'); } }); /*// ignore: deprecated_member_use File image = await ImagePicker.pickImage(source: ImageSource.gallery); setState(() { _image = image; });*/}

1
INBAE KONG 프로필

질문이 있습니다. INBAE KONG 20일 전
1분 36초 경 클래스를 선언하실때 단축키를 누르신건가요?? 

1
INBAE KONG 프로필

설치 관련 문의 드립니다. INBAE KONG 22일 전
안녕하세요. 1주일쨰 설치와 씨름하고있는 학생입니다.  [flutter doctor] 명령어 실행시 [!] Android Studio (version 4.1.0)     X Flutter plugin not installed; this adds Flutter specific functionality.     X Dart plugin not installed; this adds Dart specific functionality.  오류는 다음과 같습니다.  그러나 안드로이드 스튜디오의 현재 버전은 4.1.1 임에도 불구하고 저쪽이 업데이트가 안됩니다.  안드로이드 실행시에도 플러그인에 flutter , dart 설치되어있고. 10번적도 삭제하고 재설치 진행했습니다. ㅠㅠ  Android SDK : C:\Users\Public\Appdata\local\Android\sdk  flutter bin 경로 :  C:\src\flutter\bin 환경변수 path : C:\src\flutter\bin 추가 !  부탁드립니다. ㅠㅠㅠㅠ 1주일째 설치와 싸우고 있네요 ..... 

5
오규찬 프로필

많이들 막히실거라 생각하고 채신문법 공유합니다. 오규찬 24일 전
Create_page.dart import 'dart:io'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_storage/firebase_storage.dart'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; class CreatePage extends StatefulWidget { final User user; CreatePage(this.user); @override _CreatePageState createState() => _CreatePageState(); } class _CreatePageState extends State<CreatePage> { final textEditingController = TextEditingController(); @override void dispose() { textEditingController.dispose(); super.dispose(); } File _image; @override Widget build(BuildContext context) { return Scaffold( appBar: _buildAppbar(), body: _buildBody(), floatingActionButton: FloatingActionButton( onPressed: _getImage, child: Icon(Icons.add_a_photo), ), ); } Widget _buildAppbar() { return AppBar( actions: <Widget>[ IconButton( icon: Icon(Icons.send), onPressed: (){ final firebaseStorageRef = FirebaseStorage.instance .ref() .child('post') .child('${DateTime .now() .millisecondsSinceEpoch}.png'); final task = firebaseStorageRef.putFile( _image, SettableMetadata(contentType: 'image/png') ); task.then((TaskSnapshot snapshot){ var downloadUrl=snapshot.ref.getDownloadURL(); downloadUrl.then((uri){ var doc = FirebaseFirestore.instance.collection('post').doc(); doc.set({ 'id': doc.id, 'photoUrl': uri.toString(), 'contents': textEditingController.text, 'email':widget.user.email, 'displayName':widget.user.displayName, 'userPhotoUrl':widget.user.photoURL }); }); }).then((value) => Navigator.pop(context)); }, ) ], ); } Widget _buildBody() { return SingleChildScrollView( child: Column( children: <Widget>[ _image == null ? Text('No Image') : Image.file(_image), TextField( decoration: InputDecoration(hintText: '내용을 입력하세요'), controller: textEditingController, ) ], ), ); } final picker = ImagePicker(); Future _getImage() async { final pickedFile = await picker.getImage(source: ImageSource.gallery); setState(() { if (pickedFile != null) { _image = File(pickedFile.path); } else { print('No image selected.'); } }); } // // Future<void> _getImage() async { // File image = await ImagePicker.pickImage( // source: ImageSource.gallery // ); // setState(() { // _image = image; // }); // } } =========/*pubspec.yaml*=========== cupertino_icons: ^1.0.1 image_picker: ^0.6.7+17 flutter_signin_button: ^0.2.5 google_sign_in: ^4.0.0 firebase_auth: ^0.18.4+1 firebase_core: ^0.5.3 cloud_firestore: ^0.14.4 firebase_storage: ^5.2.0 =====* 수정된 문법 *=== fireStore는 임포트 하는 방법은 같으나 호출방법은 기존 FireStore에서 FirebaseFireStore로 변경되었습니다. 상단 final FirebaseUser user auth 사용법은 FirebaseUser user -> User user로 사용하시면 됩니다. 그 외에 document는 doc로 변경되었으며 이미지 피커같은 경우는 제 소스대로 사용하시면 됩니다.

2
MIKE 프로필

StreamBuilder dispose 문의. MIKE 1달 전
안녕하세요 강사님. search_page.dart(StatefulWidget) 파일내용중 문의 드립니다. StreamBuilder 에 대해서 dispose 할 필요는 없나요? 필요하다면 어떻게 처리하는지 문의 드립니다. 감사합니다. 

1
MIKE 프로필

StreamBuilder dispose 문의. MIKE 1달 전
안녕하세요 강사님. root_page.dart(StatelessWidget) 파일내용중 문의 드립니다. StreamBuilder 에 대해서 dispose 할 필요는 없나요? 필요하다면 어떻게 처리하는지 문의 드립니다. 감사합니다

1
MIJI JO 프로필

강의 소스코드를 불러오기했는데 Logcat,콘솔,SDK매니저등이 안보여요 MIJI JO 1달 전
안녕하세요 선생님 강의 열심히 듣고있는데요 완성된 소스코드를 보고싶어서 안드로이드 스튜디오에 프로젝트불러오기로 다운받은 소스폴더 열었는데 신규프로젝트 만들기로 할때는 있었던 Logcat,콘솔창,SDK매니저 표시탭에서 찾아도 기타등등이 열 수도없고 어디에도 안보이네요...  혹시 어떤 문제일까요

1
Yongok Cho 프로필

코드샘플 혹시 올려두신거 있나요? Yongok Cho 1달 전
보통 인강들으면 소스코드 샘플 올려두시던데 여긴 못찾겠네요? 혹시 올려두신데 있으신가요?

1
terecal 프로필

파이어 베이스 구글 로그인을 구현한뒤 몇가지 질문이 있습니다. terecal 1달 전
앱에서 구글 로그인을 사용하는건 편리하고 좋은거 같은데 (의미는 대충 파악하고 복붙만 했어여 구글 로그인 객체로 로그인한뒤 그 결과를 파이어 베이스 유저에 저장하면 루트 페이지에서 그 변화(로그인 상태 변화)를 감지해서 로그인 상태가 될경우 탭 페이지 출력 이런식으로 (인자값이나 토큰 설정 같은건 의미를 정확히 모르고 일단 복붙했어여  ) 그런데 이시점에서 질문이 4가지 있습니다 1.구글 파이어베이스 로그인을 구현한뒤 추가적인 계정 관련 정보를 저장해야 한다면 (전화 번호, 팔로잉 팔로우 등등) 클라우드 파이어 스토어에 nosql 형식으로 저장하나여? 2.로그인과 계정 정보(팔로잉 팔로워 등등)만 파이어베이스와 연동하고 그외는 전형적인 api 서버들과 연동하는것도 괜찮은 방식이 되나여? 3.로그인 로직은 그냥 복붙해서 써서 어렵지 않은거 같은데  orm 비슷한 로직들이 전형적인 api 서버(node,장고 등)에 대한 호출과는 조금 다른것 같아서 좀더 어렵게 느껴지는데 전형적인 api 서버 + flutter 강의는 아직 안찍으셨나여? 4.책도 구입하는게 좋을까여? (플루터와 다트 기초가 부족해서여 그리고 1,2,3의 답이 혹시 책에 있을까여?) 알려주시면 감사여 !

2
유형준 프로필

터미널에서 오류가 떠요 유형준 1달 전
안녕하세요 강사님 제가 4분 10초경까지 따라했는데 오류가 뜹니다  어떻게해야하나요? 윈도우, vscode 사용중입니다 (안스도 가능)

1
terecal 프로필

TextEditingController 객체를 만들때 에러가 발생해여 terecal 1달 전
안녕하세여 질문이 있습니다  아래의 객체를 만들때 에러가 발생해여  final TextEditingController = TextEditingController(); 에러 메세지는 Only static members can be accessed in initializers. 입니다  에러 원인이나 고치는 방법을 알려주실수 있나요? 감사합니다

1
문종욱 프로필

firebase Storage 수정사항 공유합니다. 문종욱 2달 전
Firebase_Storage가 많이 업데이트 되면서 문법이 많이 바꿨는데 일단 웹서핑으로 찾은내용이 정상작동되어서 공유합니다. final firebaseStorageRef = FirebaseStorage.instance .ref() .child('post') .child('${DateTime .now() .millisecondsSinceEpoch}.png');final task = firebaseStorageRef.putFile( _image, SettableMetadata(contentType: 'image/png'));task.then((TaskSnapshot snapshot){ var downloadUrl=snapshot.ref.getDownloadURL(); downloadUrl.then((uri){ var doc=FirebaseFirestore.instance.collection('post').doc(); doc.set({ 'id':doc.id, 'photoUrl':uri.toString(), 'contents':_controller.text, 'email':widget.user.email, 'displayName':widget.user.displayName, 'userPhotoUrl':widget.user.photoURL }).then((value){ Navigator.pop(context);

2
MIKE 프로필

apk 생성 및 설치후 오류 디버깅 문의. MIKE 2달 전
안녕하세요 강사님. 좋은 강의 감사드립니다. 완강이후 강의 결과물을 apk 로 만들어서 안드로이드 폰(화웨이 mate 9, 안드로이드 9버전)에 설치를 했습니다. 며칠 고생해서 플러그인 버전들도 거의 최신버전으로 변경했고, 에뮬에서는 문제없이 동작합니다. 설치 방식은 apk 방식으로 flutter install 명령어를 이용해서 작업했습니다. 서명작업도 하였고, 번들링 작업은 잘 안되서 apk 방식으로 진행했습니다. 참고 사이트 - https://flutter.dev/docs/deployment/android 에뮬에서는 문제없이 동작하던 어플이 실제 폰에 설치를 하니, 로그인부터 되지 않고 계속 로그인화면만 보여집니다. 이런경우 어떻게 디버깅 및 오류원인을 찾을수 있을까요? 문의 드립니다. 감사합니다. 플러그인 버전은 아래와 같습니다. cupertino_icons: ^1.0.0 image_picker: ^0.6.7+12 firebase_auth: ^0.18.2 flutter_signin_button: ^1.1.0 google_sign_in: ^4.0.7 cloud_firestore: ^0.14.3 firebase_storage: ^4.0.1 에뮬에서 실행 및 구글 로그인 관련 로그. Launching lib\main.dart on AOSP on IA Emulator in debug mode... Running Gradle task 'assembleDebug'... √ Built build\app\outputs\flutter-apk\app-debug.apk. Installing build\app\outputs\flutter-apk\app.apk... Waiting for AOSP on IA Emulator to report its views... D/EGL_emulation(13128): eglMakeCurrent: 0xeba29560: ver 3 0 (tinfo 0xd464e640) Debug service listening on ws://127.0.0.1:2621/f5Boq3EOJ1U=/ws Syncing files to device AOSP on IA Emulator... D/eglCodecCommon(13128): setVertexArrayObject: set vao to 0 (0) 1 2 D/EGL_emulation(13128): eglMakeCurrent: 0xefd47c40: ver 3 0 (tinfo 0xe9883920) D/eglCodecCommon(13128): setVertexArrayObject: set vao to 0 (0) 1 0 I/flutter (13128): MyApp created I/flutter (13128): root_page created I/flutter (13128): You need to login(root->login page) *************** I/flutter (13128): login_page created ******************************************** I/flutter (13128): You need to login(root->login page) *************** I/flutter (13128): login_page created ******************************************** I/flutter (13128): You need to login(root->login page) *************** I/flutter (13128): login_page created ******************************************** W/ActivityThread(13128): handleWindowVisibility: no activity for token android.os.BinderProxy@aec1fe0 I/lutter_firebas(13128): IncrementDisableThreadFlip blocked for 6.593ms D/EGL_emulation(13128): eglMakeCurrent: 0xeba29560: ver 3 0 (tinfo 0xd464e640) D/EGL_emulation(13128): eglMakeCurrent: 0xeba29560: ver 3 0 (tinfo 0xd464e640) I/BiChannelGoogleApi(13128): [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzao@6c91e21 D/FirebaseAuth(13128): Notifying id token listeners about user ( 2peU9Ullg6O0oNe2LDFvZi7h4by2 ). D/FirebaseAuth(13128): Notifying auth state listeners about user ( 2peU9Ullg6O0oNe2LDFvZi7h4by2 ). I/flutter (13128): signed in xxx KIM ======> 로그인 성공 I/flutter (13128): [login click]****************************** I/flutter (13128): [login click]****************************** I/flutter (13128): Login success(root->tab page) *************** I/flutter (13128): home page created ======> TabPage 에서 HomePage 호출 성공

4
MIKE 프로필

클래스 extends 변경 문의. MIKE 2달 전
안녕하세요 강사님. 아래의 2 파일에서 강좌와 강사님의 최종 소스에서 다른 부분이 있습니다. 변경하신 이유가 있는지 문의 드립니다. home_page.dart 강좌는 class HomePage extends StatelessWidget  강사님 소스는 class HomePage extends StatefulWidget { login_page.dart 강좌는 class HomePage extends StatelessWidget  강사님 소스는 class HomePage extends StatefulWidget {

1

33,000원

내 목록 추가 566 공유
지식공유자 : 오준석
총 40개 수업˙총 3시간 58분
평생 무제한 수강
수료증 발급 강의
초급 대상
이 강의는 멘토링 신청이 가능합니다.
멘토링은 수강 신청과 별개로 운영되며, 수강생이 아니어도 신청할 수 있습니다.
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스