Flutter 21

ListView를 이용한 화면 구성

ListView 기차 앱의 마지막 화면으로 좌석을 선택하는 화면을 만들었다. 이때 선택하는 좌석 부분을 ListView로 구성을 해야했다. 역을 선택하는 화면에서 ListView를 이용했었다. 그래서 쉽게 구성할 것이라고 생각을 했었다. 하지만 이번에는 화면에 ListVeiw로만 구성하는 것이 아니라 다른 구성요소들 사이에 ListView를 넣는 것이었다.                 처음에는 이렇게 했다. 화면을 보면 좌석이 좌우 2줄씩 총 4줄로 구성되어있다. 그래서 세로줄로 된 위젯을 만들고 이것을 가로로 나열 하려고 코드를 짰다.그렇게 하니 리스트뷰를 포함해서 화면 하단의 버튼도 같이 나오지 않는 문제가 발생했다. ListView의 영역이 정해지지 않아서 오류가 발생한거같아 화면에 padding,..

Flutter/캠프 2024.11.19

화면 전환 시 정보 전달 2(push-pop)

저번시간에 push를 통해서 리스트에서 선택하는 역이 출발하는 역인지 도착하는 역인지 정보를 넘겼었다.onTap: () { Navigator.push( context, MaterialPageRoute( builder: (context) => StationListPage('$label'), ), ); },      onTap, 클릭이 되었을 때 실행되는 코드를 짜놓은 것이다. 저 코드를 이미 짜놓고 역을 클릭 했을 때 넘기는 정보도 같은 방식으로 진행하려고 했다. 그래서 같은 Navgiator.push를 써서 코드를 짜보았다. 그러자 코드에서 계속 오류가 발생했다. 오류를 해결하기 위해서 인터넷에 onTa..

Flutter/캠프 2024.11.18

화면 전환 시 정보 전달1

오늘은 화면을 전활 할때 정보를 다음 화면에 정보를 전달하는 과정을 연습했다.  왼쪽의 화면에서 출발역과, 도착역을 클릭하면 '출발역', '도착역'이라는 글 정보를 오른쪽으로 넘겨서 상단에 표시할 수 있는 기능이다. 우선 하얀 사자 안에 글씨를 구성하는 코드이다. GestureDetector label(String label, String? station) { return GestureDetector( onTap: () { Navigator.push( context, MaterialPageRoute( builder: (context) => StationListPage('$label'), ), );..

Flutter/캠프 2024.11.15

위젯 설정

ColumnColumn 위젯이란? ⇒ 위젯들을 세로로 배치하는 위젯!RowRow 위젯이란? ⇒ 위젯들을 가로로 배치하는 위젯!TextText 위젯이란? ⇒ 문자열을 화면에 표시하기 위한 위젯!SafeArea핸드폰 기기별로 조금씩 다른 디바이스 UI인 StatusBar(상태바) 영역등에 padding(여백)을 넣어주는 위젯SpacerRow나 Column에서 위젯 사이의 간격을 조정하는 데 사용사용 가능한 모든 공간을 차지함ExpandedExpanded 위젯은 Row, Column 내에서 남은 공간을 확장하여 공간을 채울 수 있도록 하는 위젯SizedBoxwidth 및 height 크기를 가지는 빈 상자상자 내에 위젯을 배치할 수도 있으며 빈 상자로 사용할 수도 있음

Flutter 2024.11.12

24.11.11

오늘은 dart를 넘어서 flutter를 공부하기 시작했다. dart는 개발언어로 기초를 배우는 느낌이라서 재미가 덜했지만 에뮬레이터를 돌리면서 코드로 짠 화면이 핸드폰 화면에 보여지는 것은 확실히 언어만을 공부할때보다 재밌다. 오늘은 앱 파일을 다운로드 후에 실해하는 과정에서 포함된 라이브러리 패키지가 제대로 인식이 안되는 문제가 발생했다. 해결하기 위해서 몇가지를 실행해보았다. 1. 필요한 패키지 설치하기.패키지가 설치 안되어있는 줄 알고 새로 설치하려고 보니, 패키지는 제대로 설치가 되어있었다. 2. 제설치 하기패키지 파일들을 호환성 문제인가 싶어서 문제를 해결하기 위해서 전체 업그레이드를 진행했다. 업데이트를 실시하고 자동으로 flutter doctor에서 문제가 없음을 확인했다. 3. 프로젝트 ..

Flutter/캠프 2024.11.11

파일에 저장하기

어제는 파일에 저장된 내용을 읽어오는 방법을 써봤는데 오늘은 파일에 저장하는 방법을 알아봤다.save.writeAsStringSync('파일에 저장할 내용'); 다른 방법이 있을 수도 있지만 위는 어제 쓴 글에 readAsStringSync 방식과 같은 함수를 이용합니다.writeAsStringSync는 사용이 매우 쉽습니다. var save = File('파일 경로')save.writeAsStringSync('저장할 내용'); 먼저 파일 경로를 저장한 후에 경로에 함수를 사용해서 내용을 저장해주면 간단하게 저장하게 된다.

Flutter 2024.11.06

파일 읽기

파일 읽기 //csv형식의 text파일을 불러옴 final file = File('lib/characters.txt'); //텍스트 파일의 정보를 String 형태로 변환 final contents = file.readAsStringSync(); //String으로 저장한 파일을 ,를 기준으로 나눠서 분리하기 final stats = contents.split(','); //이후에 저장한 데이터를 3개로 나눠서 리스트 형식으로 다루기 if (stats.length != 3) throw FormatException('Invalid character data'); int health = int.parse(stats[0]); int a..

Flutter 2024.11.05

예외 vs 오류

예외예외는 예상한 상황과 다른 상황이 진행되는 것을 말한다.예외 상황이 발생하면 프로그램이 비정상적으로 종료가 되기 때문에 예외상황을 예상하고 처리해야 정상적으로 구동되게 된다. try~catch~finally try { //구동되는 코드를 짠다 String invalidNumber = "abc"; int result = int.parse(invalidNumber); print(result); // on은 오류중에서 특정한 형식의 오류만 골라내서 특정한 오류 구문을 사용} on FormatException catch (e) { print(e); // 오류구문이 발생하면 실행되는 부분} catch (e) { print(e); // 예외 구문이 끝난 후 무조건 실행된는 구문} finally ..

Flutter 2024.11.04

무한 루프

텍스트로 구동되는 간단한 형태의 쇼핑몰을 짜면서 첫번째로 마주한 문제가 항상 출력되는 메뉴를 만드는 것이었다.단순하게 반복문을 이용해서 구성하려고 했으나, 반복문은 반복횟수를 처음에 정해놓고 진행하게되어 어느 순간에는 무조건 끝나게 된다는 문제가 있었다. 그래서 'dart 무한 루프'로 검색을 해서 찾아보니 방법이 있었다.  아래의 코드는 검색을 통해서 찾은 방식을 적용한것이다.bool isRun = truewhile (isRun) { int i; print( "----------------------------------------------------------------------"); print(menu); print( "----------------..

Flutter 2024.10.30

함수형 프로그래밍

1함수형 프로그래밍(Functional Programming)함수를 체이닝을 이용해서 사용하는방식. 체이닝은 '.'을 이용해서 체인처럼 연결해서 사용하는 방식을 말한다. int number = -12345var result = number.abs().toString().contains('3');print(result); // true 체이닝 방식은 swift에서도 옵셔널 체이닝 방식으로도 쓰인다. 순수함수를 이용해서 가변적인 데이터 사용을 최소화한다.객체지향 프로그래밍과는 좀 다른 느낌인거같다.인터넷에 검색해보니 객체지향 프로그래밍은 명령형(어떻게 할건지에 대한 방식)이고 함수형 프로그래밍은 선언형(무엇을 할 건지를 설명하는 방식)이라고 한다. 두가지의 개발하는 방향이 다른 것 같지만, Swift의 경험..

Flutter 2024.10.29