일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- userevent_tracker
- three.js
- androidId
- jszip
- web track
- uint8array
- Flutter
- node
- KakaoMap
- RouteObserver
- REST API
- Raycasting
- typescript
- Prism.js
- Excel
- Redux
- Completer
- swagger-typescript-api
- methodChannel
- react
- Image Resize typescript
- Three js
- Babel standalone
- Three-fiber
- identifierForVender
- babel
- webrtc
- Game js
- uint16array
- code editor
- Today
- Total
목록분류 전체보기 (123)
Never give up
Terminal에서 flutter pub, get, doctor, clean 등을 사용해야하는 경우가 있는데 경로지정이 잘못된 경우 다음과 같은 에러가 발생합니다 Error: No pubspec.yaml file found. This command should be run from the root of your Flutter project. Do not run this command from the root of your git clone of Flutter. 어떤분은 재설치를 해야된다 혹은 또 다른 조치를 취해야된다 하는데 정말 간단한 방법으로 해결 가능합니다 1. 프로젝트 우클릭 2. Open in Terminal 클릭 3. 터미널 창에 경로가 프로젝트 경로인지 확인 4. 명령어 입력 이 방법을 사용..
Color값을 SharedPreferences에 저장하는것은 아주 간단하지만 이전에 설정된 값이 없어서 null인 경우에 처리하는 방법입니다 Splash Screen, init메소드 @override void initState() { super.initState(); _init(); } void _init() async { await Provider.of(context, listen: false).initColorData(); Navigator.push( context, MaterialPageRoute(builder: (context) => MainScreen())); } ConfigData class ConfigData extends ChangeNotifier { SharedPreferences _pr..
Provider를 사용하다보면 어떤곳에는 false를 사용하고, 다른곳에서는 사용하지 않는데 이 차이를 알아보겠습니다 결론부터 말하자면 notifyListeners()를 호출해서 바로 UI에서 변경되는 부분은 true (default가 true이기 때문에 따로 설정해줄 필요는 없습니다) 그리고 데이터만 변경하고 UI를 변경하지 않는곳에서는 listen : false를해야됩니다 예제 코드로 알아보겠습니다 Splash Screen class SplashScreen extends StatefulWidget { @override _SplashScreenState createState() => _SplashScreenState(); } class _SplashScreenState extends State { @o..
build가 끝나지 않은 시점에서 데이터의 변경이 일어나고 notifyListeners를 사용해서 UI를 변경시키면 레드스크린을 볼 수 있습니다 예제로 initState에서 build가 끝나지 않은 상태에서 다음과 같이 값을 변경하면 @override void initState() { super.initState(); Provider.of(context, listen: false).setNum(2); } class TestInt extends ChangeNotifier { int _num = 0; int get getNum => _num; void setNum(int value) { _num = value; notifyListeners(); //문제가 되는 부분 } } 다음과 같은 에러가 출력됩니다 ══..
createState : 프레임워크가 Stateful을 만들 때 createState 호출 mounted is true : createState가 state class를 만든 후 buildContext가 할당된다 할당된 경우 true 아닐경우 false 여기서 setState를 콜하면 widget이 시작되지않고 오류가 발생 initState : 객체가 위젯트리에 할당되었을 때 호출 build 전에 데이터를 가져와야되는 경우 controller등을 설정하는 경우에 사용 didChangeDependencies : State의 의존성이 변경되었을 때 호출 InheritedWidget, Provider등을 통해 데이터 변경 후 상태를 변경 build : 위젯을 return하는 함수 주로 UI부분을 처리 didU..
전에 ScrollController를 이용해서 동작을 읽었는데 Listener을 통해 Drag 이벤트 등을 읽을 수 있습니다 @override Widget build(BuildContext context) { var _data = Provider.of(context); return Scaffold( appBar: AppBar(title: Text('Scroll test')), body: Listener( onPointerMove: (value) { if (value.delta.dy > 0) { _data.setVisible(true); } else if (value.delta.dy < 0) { _data.setVisible(false); } }, child: ListView.builder( itemCou..
Listview를 사용하다보면 스크롤이 맨 위 혹은 아래에 도달했을때 특정 동작을 해야되는 경우가 있는데, ScrollController를 이용하면 간단하게 해결 가능합니다 (해당 소스코드는 맨 아래에 도달했을 때 FAB을 숨기는 동작을 함) 메인 class ListTestScreen extends StatefulWidget { @override _ListTestScreenState createState() => _ListTestScreenState(); } class _ListTestScreenState extends State { ScrollController _controller; @override void initState() { super.initState(); _controller = Scro..
화면을 구성하다보면 Navigator를 통하여 다른 화면으로 이동해야되는 상황이 생기고 Animation을 이용하여 조금 더 멋진 화면을 구성하는데 listener안에서 setState를 이용하면 성능이 떨어지기 때문에 AnimatedBuilder를 이용하면 세련된 애니메이션과 성능을 동시에 잡을 수 있습니다 메인화면 class TestAnimation extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('Animation test')), body: Padding( padding: const EdgeInsets.symmetric(horizontal:..