전체 글

전체 글

    [ Flutter ] BottomNavigationBar

    [ Flutter ] BottomNavigationBar

    Read me 💬 IndexStack과 BottomNavigationBar를 사용한 네비게이션 바 앱 구조 만들기 Code import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class MainScreens extends StatefulWidget { @override _MainScreensState createState() => _MainScreensState(); } class _MainScreensState extends State { // 사용자가 하단 아이콘 버튼을 눌렀을 때 위젯의 index 값을 저장하는 변수 int _selectedIndex = 0; @override Widget build(Buil..

    [ Flutter ] [ Package ] flutter_sound

    [ Flutter ] [ Package ] flutter_sound

    Pub.dev https://pub.dev/packages/flutter_sound flutter_sound | Flutter Package A complete api for audio playback and recording. Audio player, audio recorder, media player, media recorder, sound player, sound recorder. pub.dev pubspec.yaml 더보기 더보기 environment: sdk: '>=2.12.0

    [ Dart ] 에러, 예외 상황 제어하기

    assert 💬 개발 모드의 debug 중일 때에만 영향을 미치며, 배포 코드에서는 프로그램에 영향을 주지 않음 💬 조건이 거짓인 경우 실행이 중단된다. assert(condition, optionalMessage); ◻️ condition : boolean이 나올 수 있는 조건을 넣으며, false이면 프로그램이 중단된다. ◻️ optionalMessage : 프로그램 중단 시 나올 메시지를 설정할 수 있다. assert(urlString.startsWith('https'), 'URL ($urlString) should start with "https".'); ... https://m.blog.naver.com/mingdyuo/221803704762 [flutter, dart] 에러, 예외상황 제어하기..

    [ Flutter ] HTTP 통신

    [ Flutter ] HTTP 통신

    POST 💬 서버에 요구하는 포맷에 맞춰 서버로 데이터를 전송하고, 때에 따라 서버에서 회신하는 Response를 받는 작업 예제 💬 두 개의 입력을 받을 수 있는 TextField 💬 값을 입력 후 FloatingButton을 클릭 시 웹 서버에 입력한 값을 지정한 포맷으로 post 후 response를 받아서 화면에 띄워준다. 모델 클래스 만들기 https://app.quicktype.io/ Instantly parse JSON in any language | quicktype app.quicktype.io 💬 response로 받을 Json 데이터의 포맷에 맞는 예시 데이터를 화면 왼편에 적으면 오른편에 Json에서 String까지의 인코드, 디코드 코드가 포함된 클래스가 만들어지며, 이를 사용하여..

    [ Implementation ] [ Level 1 ] 상하좌우

    [ Implementation ] [ Level 1 ] 상하좌우

    문제 여행가 A는 N x N 크기의 정사각형 공간 위에 서 있다. 이 공간은 1 x 1 크기의 정사각형으로 나누어져 있다. 가장 왼쪽 위 좌표는 (1, 1)이며, 가장 오른쪽 아래 좌표는 (N, N)에 해당한다. 여행가 A는 상, 하, 좌, 우 방향으로 이동할 수 있으며, 시작 좌표는 항상 (1, 1)이다. 아래 그림은 여행가 A가 이동할 계획이 적힌 계획서가 놓여 있다. 계획서에는 하나의 줄에 띄어쓰기를 기준으로 하여 L, R, U, D 중 하나의 문자가 반복적으로 적혀 있다. 각 문자의 의미는 아래와 같다. ◽ L : 왼쪽으로 한 칸 이동 ◽ R : 오른쪽으로 한 칸 이동 ◽ U : 위로 한 칸 이동 ◽ D : 아래로 한 칸 이동 이때 여행가 A가 N x N 크기의 정사각형 공간을 벗어나는 움직임은 ..

    해시

    해시

    해시법 💬 해시법은 데이터를 저장할 위치를 간단한 연산으로 구하는 것으로, 검색뿐만 아니라 추가, 삭제도 효율적으로 수행할 수 있다. 💬 정렬된 배열에 새로운 값을 추가하기 위해서는 아래의 과정이 필요하다. 💬 배열의 키 값을 배열의 요솟수 13으로 나눈 나머지로 다시 나눈 나머지로 정리하면 아래와 같다. 💬 이렇게 표에 정리한 값을 해시 값이라고 하며, 해시 값은 데이터에 접근할 때 사용한다. 💬 해시 값이 인덱스가 되도록 원래의 키 값을 저장한 배열이 아래의 해시 테이블이다. 💬 이제 배열에 새로운 값 35를 추가할 때, 다른 배열 요소들을 뒤로 옮기지 않아도 된다. 💬 이와 같이 키 값(35)를 가지고 해시 값(9)를 만드는 과정을 해시 함수라고 하며, 해시 테이블의 각 요소를 버킷이라고 한다. 충..

    [ Flutter ] Web 배포 using GitHub

    [ Flutter ] Web 배포 using GitHub

    💬 깃허브를 사용하여 Flutter 코드를 Web으로 배포하는 방법에 대해서 알아보도록 하자. 💬 우선, 깃허브 홈페이지에서 새로운 Repository를 생성한다. ◻ name을 '깃허브 닉네임.github.io'로 생성한다. 💬 아래의 작업들을 안드로이드 스튜디오와 안드로이드 스튜디오 내부의 터미널에서 차례대로 진행된다. flutter channel master ◻ Flutter의 채널을 master 채널로 설정한다. flutter upgrade ◻ 현재 Flutter 채널에서 사용할 수 있는 최신 버전의 Flutter SDK를 가져온다. ◻ 이후 앱이 의존하는 패키지를 최신 호환 버전으로 업데이트한다. flutter config --enable-web flutter devices ◻ 플러터 웹을 개발..

    트리

    트리

    트리 트리 관련 용어 💬 순서 트리와 무순서 트리 ◽ 형제 노드의 순서가 있는지 없는지에 따라 트리를 구분할 수 있다. 순서 트리 탐색 너비 우선 탐색 💬 낮은 레벨에서 시작해 왼쪽에서 오른쪽 방향으로 검색하고 한 레벨에서의 검색이 끝나면 다음 레벨로 내려간다. 💬 A -> B -> C -> D -> E -> F -> G -> H -> I -> J -> K -> L 깊이 우선 탐색 💬 리프까지 내려가면서 검색하는 것을 우선순위로 하는 탐색 방법이다. 💬 리프에 도달해 더 이상 검색을 진행할 곳이 없는 경우에는 부모에게 돌아간 후, 순차적으로 자식 노드로 탐색을 이어간다. 전위 순회 (Preorder) 💬 노드 방문 -> 왼쪽 자식 -> 오른쪽 자식 💬 A -> B ->D ->H ->E ->I -> J -..

    [ Flutter ] Null Safety

    [ Flutter ] Null Safety

    Null Safety 💬 널 안정성은 다트 2.12.0 및 플러터 2부터 공식 지원된다. Null Safety란? 💬 널 안정성 기능을 활성화하고 아래의 코드를 작성하면 에러가 발생한다. int i = null; // error 💬 널 안정성을 도입하면 해당 변수 타입이 널을 허용하는지 아닌지를 정확하게 대입해야 한다. 💬 널을 대입하기 위해서는 타입 옆에 ?를 붙이면 되며, ?가 붙어있지 않은 타입은 널을 대입할 수 없다. int? i = null; // OK 타입 시스템의 변화 💬 기존의 다트는 모든 타입이 널이 대입될 수 있었고, 널 타입은 최하위 타입이었다. 💬 널 안정성이 적용되면서 기존 타입에 널이 대입될 수 없으므로, 널 타입은 어떠한 타입과도 관계없는 별도 타입으로 취급된다. 💬 또한, 널..