일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- three.js
- swagger-typescript-api
- babel
- code editor
- uint16array
- Redux
- Completer
- KakaoMap
- jszip
- uint8array
- react
- web track
- webrtc
- node
- Raycasting
- REST API
- RouteObserver
- userevent_tracker
- Excel
- typescript
- androidId
- methodChannel
- Three js
- Flutter
- Three-fiber
- identifierForVender
- Game js
- Babel standalone
- Prism.js
- Image Resize typescript
- Today
- Total
목록분류 전체보기 (123)
Never give up
여러개의 항목을 Listview를 이용해 출력을 할 때 고민이 생깁니다 한번에 많은 항목을 불러오고 보여주기를 하다보면 퍼포먼스에 문제가 생길 수도 있고 배터리 소모에도 영향을 주게됩니다 그래서 inifite loading 혹은 lazy loading등을 사용하게 되는데 보통 서버에 특정개수로 요청을 해서 여러번 가져오는 작업을 수행하는데 사용자 입장에서 끊기는 부분이 그렇게 좋지는 않을거 같다고 생각해서 한번에 100개정도씩 가져와서 분배해주면 어떨까 싶어서 만들게 되었고 Stream을 이용해서 직접 구현을 해봤습니다 loading class는 이전에 만들어논것을 그대로 사용했으니 예제를 실행해보실분은 로딩 포스트를 참조해주세요 (링크 : devmemory.tistory.com/33 ) Main cla..
링크 : play.google.com/store/apps/details?id=com.recipe.recipe_reference 요번에 제작한 앱은 레시피 공유 앱입니다 Firebase로 많은 작업을 하는것은 처음이어서 기간을 길게 잡았었는데 Firebase부분 필요한 기능을 구현하는건 한주도 안걸렸습니다만 잦은 UI/UX변경 그리고 데이터 타입 변경등으로 시간이 엄청나게 지연되었습니다.. 먼저 디자인과 기획 부분은 제 영역이 아닌걸 확실히 느꼈습니다 디자인은 얼핏봐도 이상해보이고 리터치해도 이상해보이고 리메이크해도 이상하고.. 나중에 여유가 되면 전문 디자이너한테 맡기는게 났겠다 라는 느낌이 너무 많이 들었습니다.. 그리고 기획부분은 그냥 두리뭉실하게 몇달! 이렇게 잡았는데 생각해보니 데이터타입은 어떻게..
music player를 한번 만들어보려고 관련 패키지를 찾아보던 도중 audioplayers와 audio query가 보여서 한번 적용을 해봤습니다 audioplayers : pub.dev/packages/audioplayers audio query : pub.dev/packages/flutter_audio_query splash class SplashScreen extends StatefulWidget { @override _SplashScreenState createState() => _SplashScreenState(); } class _SplashScreenState extends State { @override void initState() { super.initState(); initData..
extension메소드의 공식문서를 보니 자주 사용하는 코드들을 구현해놓고 필요할 때 사용하면 편하겠다 라는 느낌을 받았습니다 (공식문서 : dart.dev/guides/language/extension-methods) 그래서 이번에는 Icon Button 클릭시 위젯의 위치값을 snackbar로 출력하는 예제를 만들어봤습니다 사용할 extension extension PositionExtension on GlobalKey { Rect get getPosition { final RenderObject renderObject = currentContext?.findRenderObject(); var translation = renderObject?.getTransformTo(null)?.getTransla..
build.gradle을 최신버전으로 올리고 release모드를 할 때 에러가 발생하는경우가 있습니다 필자가 마주친 에러는 FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:lintVitalRelease'. > Could not resolve all artifacts for configuration ':app:profileRuntimeClasspath'. > Failed to transform libs.jar to match attributes {artifactType=processed-jar, org.gradle.libraryelements=jar, org.gradle.usage=java-..
DateFormat을 사용할 때 해당 에러가 뜨는경우가 있습니다 안뜨는 경우도 있는데 정확하게 어떤 상황에서 뜨는지는 잘 모르겠습니다만 필자는 Easy Localization이라는 패키지를 사용할 때 나타났고 추측을 해보자면 Locale에 따른 DateFormat이 바뀌어야되는데 Locale이 초기화가 안돼서 나타난것으로 예측되고 해당 에러 또한 비슷한 내용을 암시합니다 LocaleDataException: Locale data has not been initialized, call initializeDateFormatting(). 해석해보면 Locale데이터가 초기화되지 않았으니 initializeDateFormatting()을 콜 해주세요 윗부분에 대해서 조금 더 얘기해보자면 Locale이 en-US..
화면 A, B가 있고, A에서 B화면으로 Navigator push를 했다고 가정을 하고 B화면에서 어떤 조건을 충족시키고 Navigator pop을 하면 A화면에서 업데이트 하고싶을 때가 있습니다 Provider나 bloc 등 statemanagement를 통해 하는 방법도 있지만 해당 예제에서는 Navigator의 callback을 이용해 보겠습니다 메인 String _value = 'N/A'; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('Callback example')), body: Center( child: Column( mainAxisAlignment: MainAxisAlig..
Pageview를 활용할 방법은 여러가지가 있습니다 그 중 tabbar를 이용해서 pageview의 page와 tabbar의 tab을 일치시키는 예제 그리고 indicator로 페이지를 표시해 주는 예제를 다뤄보겠습니다 tabbar예제 class _PageViewExampleState extends State with SingleTickerProviderStateMixin { int _page = 0; PageController _pController; TabController _tController; @override void initState() { super.initState(); _pController = PageController(); _tController = TabController(leng..