일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- redux toolkit
- node
- Redux
- addPostFrameCallback
- webrtc
- swagger-typescript-api
- identifierForVender
- androidId
- Three-fiber
- Flutter 3.0
- typescript
- Image Resize typescript
- Flutter
- KakaoMap
- Completer
- methodChannel
- RouteObserver
- Dart 2.17.0
- react
- babel
- Raycasting
- Three js
- Babel standalone
- web track
- userevent_tracker
- REST API
- Game js
- FirebaseAnalytics
- Prism.js
- code editor
- Today
- Total
목록Flutter (50)
Never give up
필자가 있는 단톡방에서 비동기처리의 이해가 부족해서 발생하는 문제들을 편법으로 해결하거나 비슷한 질문인데 계속 물어보시는분들이 많아서 혹시나 도움이 될까 예제를 만들어봤습니다 여기서는 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}); ..
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..
화면 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..
먼저 Selector에 관한 설명은 이전 포스트를 참고해주시면 될거 같습니다 (링크 : devmemory.tistory.com/15) Selector를 사용하다보면 필요한 값이 2개 이상일때가 있습니다 이럴 때 사용하라고 공식문서에 친절하게 Tuple을 사용하라고 나와있더군요 To select multiple values without having to write a class that implements ==, the easiest solution is to use a "Tuple" (공식문서 링크: pub.dev/documentation/provider/latest/provider/Selector-class.html) 그래서 관련 예제를 한번 만들어봤습니다 메인 class SelectorExample..
일반적인 위젯에는 CachedNetworkImage를 사용하면 되지만 Container의 boxdecoration이나 CircleAvatar같은경우 backgroundImage에 넣어줘야되는데 데이터 타입이 ImageProvider입니다 그래서 CachedNetworkImageProvider를 사용해야되는데 error핸들링을 어떻게 해야될지 막막합니다 API에 보면 errorListener가 있어서 사용하면 될거같지만 아쉽게도 deprecated됐습니다 그럼 어떻게 해결을 해야될까 고민하게 될텐데 생각보다 간단하게 해결 가능합니다 간단한 예제로 한번보겠습니다 메인 class _CachedNetworkImageExampleState extends State { final String url = "https..
cloud firestore에 변수나 collection을 add하거나 set하는것은 간단합니다 예를들어보면 FirebaseFirestore.instance.collection('name').doc('docName').set({ a: a //int, String, bool, etc b: [a, b] //List c: {'a': 'b'} //Map }).catchError(//에러 처리); 이런식으로 set이나 add가 가능합니다 따로 variable을 만들어서 저장해도 문제가 없습니다 다만 몇가지 생각해봐야될 것이 있습니다 먼저 데이터 타입이 List일 경우에는 어떻게 처리해야 될까요? 필자는 이전에 jsonSerialize예제에서 사용한 방법을 사용해서 처리해봤는데 다행이도 잘 동작하더군요 (예제 링크..