일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- uint16array
- webrtc
- Image Resize typescript
- swagger-typescript-api
- Three-fiber
- KakaoMap
- jszip
- react
- html2canvas
- Flutter
- cursor-ubuntu-installer
- REST API
- babel
- code editor
- Excel
- typescript
- Prism.js
- Game js
- Redux
- HLS
- hls.js
- http live streaming
- Babel standalone
- segment
- uint8array
- three.js
- M3U8
- userevent_tracker
- node
- web track
- Today
- Total
목록분류 전체보기 (129)
Never give up

요번에 2.0으로 넘어오면서 FlatButton, RaisedButton등이 deprecated 되었습니다 아직 완전히 사라지지 않아서 사용해도 괜찮지만 TextButton과 ElevatedButton의 ButtonStyle부분에 대해 알아두는것도 나쁘지 않을거 같습니다 그래서 요번에는 간단한 ButtonStyle 예제를 만들어봤습니다 class ButtonExample extends StatelessWidget { final String title; ButtonExample(this.title); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text(title)), body: Center( ch..

Null safety는 말 그대로 null값에 대한 안정성을 늘리기 위함입니다 유저가 실수로 체크하지 못한곳에서 발생하는 NullPointerException같은 에러를 조기에 방지하고 실제로 돌아가는 어셈블리상에서 null체크를 다시 안하기 때문에 성능적 이득도 있습니다 간단하게 요약해보자면 nullable : null값이 들어가는것을 허용 (ex: int?, String?, bool?) non-nullable : null값이 들어가는것을 허용하지 않음 (ex: int, String, bool) 그럼먼저 간단한 매개변수부터 보겠습니다 class ExampleData{ String title; Widget route; ExampleData({this.title, this.route}); } 우리에게 익숙..

3월 4일 오전에 Flutter 2.0으로 업데이트 되었습니다 주요 업데이트로 웹뷰, 데스크탑, 임베디드 공식지원 그리고 dart 업데이트 등이 있었습니다 새로 업데이트 되면서 package 호환성 문제 그리고 기존에 사용하던 api들중 몇몇개는 deprecated되었으니 이전에 포스팅한 예제들 중 deprecated된 부분이 있다면 migration을 진행해보시는게 좋을거 같습니다 그리고 대형 업데이트인 만큼 아직 안정적이지 않은거 같습니다 그리고 이후 포스트 내용은 Flutter 2.0을 기반으로 포스트 할 예정이고 제목 또한 Flutter 2.0 - blah blah로 지을 예정입니다 -- 이부분 다시한번 생각해봤는데 2.0을 붙이는건 2.0에 해당되는 내용만 붙일 예정입니다 세줄 요약 1. 앞으로..
필자가 있는 단톡방에서 비동기처리의 이해가 부족해서 발생하는 문제들을 편법으로 해결하거나 비슷한 질문인데 계속 물어보시는분들이 많아서 혹시나 도움이 될까 예제를 만들어봤습니다 여기서는 void와 Future와 뭐가 다른지 차근차근 알아보겠습니다 먼저 void와 Future는 콜하는 부분에서 따로 처리를 따로 해주지 않는다면 차이가 없습니다 무슨말인지 예제로 알아보겠습니다 void main(){ a(); b(); } Future a()async{ await Future.delayed(Duration(seconds: 2)); print('a finished'); } void b()async{ await Future.delayed(Duration(seconds: 1)); print('b finished'); ..
보통 상태관리 예제로 카운터 예제를 많이 하는데 다른 곳에 적용하기가 조금 어려운 분들을 위해 간단한 todo list를 만들어봤습니다 구조는 저번과 동일하며 데이터타입(State부분)과 이벤트 처리만 조금 변경되니 예제를 보면 충분히 이해될거라 생각됩니다 State class ListState { List list = []; ListState(this.list); ListState update(List list) => ListState(list); } ListItem class ListItem { String title = '', desc = ''; DateTime date = DateTime.now(); int isChecked = 0; ListItem({this.title, this.desc}); ..

필자가 bloc을 이해하는 과정에서 조금 고생과 삽질을 해서 이 부분을 조금 더 수월하게 접근하실 수 있도록 Streambuilder와 bloc을 통해 예제를 만들어봤습니다 먼저 StreamController를 이용해 bloc형식과 유사하게 구현을 한 후 bloc 패키지를 이용해 카운터 예제를 구현할 예정입니다 Event class abstract class CounterEvent {} class IncrementEvent extends CounterEvent {} class DecrementEvent extends CounterEvent {} Bloc class class CounterBloc { CounterBloc() { counterEventController.stream.listen(_mapEv..

여러개의 항목을 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변경 그리고 데이터 타입 변경등으로 시간이 엄청나게 지연되었습니다.. 먼저 디자인과 기획 부분은 제 영역이 아닌걸 확실히 느꼈습니다 디자인은 얼핏봐도 이상해보이고 리터치해도 이상해보이고 리메이크해도 이상하고.. 나중에 여유가 되면 전문 디자이너한테 맡기는게 났겠다 라는 느낌이 너무 많이 들었습니다.. 그리고 기획부분은 그냥 두리뭉실하게 몇달! 이렇게 잡았는데 생각해보니 데이터타입은 어떻게..