일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Prism.js
- node
- Three-fiber
- Three js
- Babel standalone
- jszip
- RouteObserver
- three.js
- Flutter
- KakaoMap
- Completer
- uint16array
- Image Resize typescript
- typescript
- Excel
- methodChannel
- Game js
- androidId
- babel
- uint8array
- swagger-typescript-api
- identifierForVender
- web track
- userevent_tracker
- Raycasting
- REST API
- Redux
- react
- code editor
- webrtc
- Today
- Total
목록분류 전체보기 (123)
Never give up
필자의 2번째 앱은 1.22.6버전으로 되어있습니다 그래서 수정 및 배포를 다시해야될 경우 버전을 다운그레이드 해야되는데 Flutter version v1.22.6
기존 프로젝트를 2.0으로 Migration을 하면서 Null safety부분 때문에 변경된 부분이 생각보다 많다는걸 느꼈습니다 그중 하나가 callback이었는데 여러분들은 삽질하지 마시길 바라며 포스트 올립니다.. 기존에 우리가 사용하던 방식은 다음과 같습니다 class Button extends StatelessWidget { //2.0에서는 당연히 null check 해야됩니다 이건 예시로.. final String name; final Function onTap; Button({this.name, this.onTap}); @override Widget build(BuildContext context) { return ElevatedButton(onPressed: onTap, child: Text..
요번에 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..