목록개발/flutter (131)
파파비의 블로그
위치정보 이용하기 https://pub.dev/packages/location#-readme-tab- location | Flutter Package A Flutter plugin to easily handle realtime location in iOS and Android. Provides settings for optimizing performance or battery. pub.dev 해당패키지를 import하고 Location() 객체를 만든 후에 .getLocation() 을 때려주면 되고, future로 LocationData 객체를 return 한다. import만 하면 알아서 허가 등 다 업데이트되지만, ios는 dependency 관련해서 추가적인 작업을 해주어야해서, readme를 잘..
https://pub.dev/packages/sqflite 패키지를 사용한다. DB만들고 데이터 쓰기 path와 sqflite 모두 import해두었다. 먼저 insert라는 static 메소드를 구성해보았는데, static이고, future를 return하고, input 인자들은 table이름과, map으로 구성된 data이다. 생성된 테이블에, 테이블의 field값에 대응하는 값들을 map 으로 구성해서 넣으면 된다는 소리다. 이제 코드를 구체적으로 보자면, 먼저 내부를 보면 db의 경로를 가져와야하는데, 앱의 db가 내부적으로 저장될 공간이 지정되어 있으므로, sql 패키지의 getDatabasePath()를 활용하면 매우 편리하다. 그다음 db를 열어야하는데 db가 없으면 자동으로 생성된다. sq..
이전 글처럼 카메라를 사용하게 되면, 찍은 이미지는 메모리상에 올라가지 디바이스에 저장되는 것은 아니다. 만약 저장되게 하고 싶다면 특정 path에 저장을 해야하는데, unity에서는 super EASY하지만, 여긴 그렇지 않은가보다. 그래서 특수한 패키지를 2개 다운받아야한다. https://pub.dev/packages/path#-installing-tab- path | Dart Package A string-based path manipulation library. All of the path operations you know and love, with solid support for Windows, POSIX (Linux and Mac OS X), and the web. pub.dev https..
https://pub.dev/packages/image_picker#-installing-tab- image_picker | Flutter Package Flutter plugin for selecting images from the Android and iOS image library, and taking new pictures with the camera. pub.dev 패키지를 활용한다. ImagePicker 가 핵심이다. ImagePicker.platform에서는 pickImage와 pickVideo가 가능하다. source는 ImageSource라는 Enum을 통해 정해줄 수 있는데, 카메라로 찍어서 가져올건지 gallery에서 가져올것인지 정하는 것이다. maxwidth는 이미지의 크기를 정할..
=> MaterialRoutePage를 상속해서 buildTransitions에서 설정한다 위 코드를 보면 CustomRoute class는 MaterialPageRoute를 상속한다. 재내럴형식이라 CustomRoute도 를 같이 써준다. 생성자 -> builder와 , settings를 입력받고, 그 입력받은 값을 바로 부모의 builder와 settings 값으로 설정해버린다 buildTransitions > 화면간 전환 애니메이션 담당 메소드이다. 여기를 override하면 된다. 여기서는 간단하게 FadeTransition을 입혔지만 더욱 복잡한 것들도 가능하다. 기본적으로 theme으로 운영체제에 따라 화면간 전환 애니메이션을 설정할 수도 있다. https://www.udemy.com/cour..
화면간 이동시 이미지가 확대 되거나 하는 애니메이션을 Hero라고 하는데 플러터에서는 구현이 매우 쉽다. 1) 이미지를 Hero위젯으로 감싼다. (2개의 화면이니까 2개의 이미지 위젯을 hero로 감싸야겠지) 2) tag를 통일시켜준다. 그러면 그 두 화면간 이동시 이미지는 확대축소를 알아서 해준다. 여기에 하나, 이 둘은 다른 스크리의 위젯들인데 같은 이미지를 나타냈다 그래서 hero를 적용해보았고, tag의 레퍼런스 이름은 다르지만 값은 같아서, 잘 인식되었다.
placeholder에는 로딩전에 들어가는 이미지를 설정할 수 있다. 여기서 image자체가 아니라 imageproivider를 넣어주어야해서, AssetImage 위젯을 활용했다. image 자체를 활용하려면 Image.assest~ 뭐 이런식으로.. 이런 것을 써야한다. 실제로 이 위젯은 로딩이 완료되기전까지는 placeholder의 이미지를 보여주고 로딩이 완료되면 fade-in효과를 주면서 바꿔치게 해준다.
아주 흔히 있을 법한 Animation을 위해, 플러터는 준비했다. 보편적인 위젯을. AnimatedContainer는 controller와 animation이 따로 필요없다. 그냥 값의 변화를 알아서 감지해서, 알아서 animation 효과를 준다. 어떻게 이루어지는지 잘 살펴보자 controller를 따로 만들어서 붙일 필요없이, duration과, curve만 넣으면 된다 (mixin을 만들고 vsync도 따로 만들필요도 없고, 재생을 언제 이루어지도록 어딘가에 따로 설정할 필요도 없음) 또 Animation 객체도 필요없고, 여기를 보면 height가 경우에 따라 바뀌는데 이렇게 바뀔 때, 알아서 인지해서 animated된 형태로 바뀌게 된다. 최적화가 되는지는 모르겠는데, 기본적으로 설정을 해두..