일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준
- corou
- 오블완
- 사이드프로젝트
- HTML
- JavaScript
- 크래프톤정글
- 시스템콜
- 큐
- 4기
- Java
- CSS
- pintos
- 리액트
- 스택
- 코드트리
- TiL
- userprog
- 알고리즘
- 소켓
- 티스토리챌린지
- Flutter
- Vue.js
- 자바
- 나만무
- 핀토스
- 크래프톤 정글
- 자바스크립트
- 모션비트
- defee
- Today
- Total
목록TiL (155)
미새문지
flutter의 API 연동 방식은 주로 두 가지로 나뉜다. http 패키지기본적인 HTTP 요청(REST API)을 처리하는 패키지이며, GET, POST, PUT, DELETE 등의 메소드를 지원한다.import 'package:http/http.dart' as http;import 'dart:convert';Future fetchPosts() async { final url = Uri.parse('https://jsonplaceholder.typicode.com/posts'); try { final response = await http.get(url); if (response.statusCode == 200) { final List data = json.decode(resp..
재희님이 배포 수정 중 화면에서 발생한 에러가 좀 있다고 해서 오랜만에 corou를 만지러 갔다.알려준 에러들을 레포 이슈에 등록했는데, 쭉 훑어보니 그 외에도 빠진 부분이 좀 보이더라.그리고 지금 보니까 UI가 너무 밋밋한 부분이 많아서 이후에 UI도 어느정도 수정을 하려고 이슈에 추가해놨다. 배송지 선택 에러 const handleAddressPage = () => { navigate("/mypage/setAddress"); };{!selectAddress ? ( 배송지가 설정되지 않았습니다. 마이페이지로 이동하시겠습니까? 이동 ) : ( ..
class A { int value; A(this.value);}void main() { print(A(1) == A(1)); print(A(1));} 결과:false Instance of 'A' Exited.dart언어는 참조 비교를 사용하기 때문에, 가변 객체인 A 인스턴스는 생성할 때마다 새로운 메모리에 할당되기 때문에 주소값이 다르다.A클래스의 인스턴스를 출력하게 되면, 클래스의 속성이 아닌 어떤 클래스의 인스턴스인지만 모호하게 알려준다.해당 클래스의 속성을 출력하려면 변수명에 $를 붙여($변수명) 출력해야 하며, 이는 리액트의 변수값을 가져오는 ${변수명}과 동일하다.class A { int value; A(this.value); @override String toString() ..
요청에 의해 헤더의 뒤로가기 버튼을 삭제했다. 뒤로가기가 있는 편이 괜찮을 것 같긴 한데, 일단 기획대로는 뒤로가기 버튼이 없기 때문에 삭제했다. 버튼이 없어도 휴대폰에선 뒤로가기 기능이 있고, 페이지 히스토리도 남아있기 때문에 크게 문제는 없을 것 같다.import 'package:flutter/material.dart';class Header extends StatelessWidget implements PreferredSizeWidget { const Header({super.key}); @override Widget build(BuildContext context) { final currentRoute = ModalRoute.of(context)?.settings.name; Str..
일주일 간 예비군에 가족여행 때문에 작업을 못했으니 다시 작업을 시작했다.기존에 만든 회원가입 UI가 애매한 부분이 있어 수정했고, 수정본대로 다시 바꿨다.회원가입 페이지로 접근하면 보이는 화면이며, 이메일을 입력하면 전송 버튼이 활성화된다. void _sendEmail() { final email = emailController.text; final emailRegExp = RegExp(r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'); if (email.isEmpty) { print("이메일을 입력해주세요."); return; } else if (!emailRegExp.hasMatch(email)) { ..
로그인과 회원가입 UI를 구현했다. 입력창이 자주 쓰이기 때문에 개별 위젯으로 분리하여 재사용성을 높였고, 입력창을 flutter에서 지원하는 입력창이 아니라 본인 프로젝트 방식으로 수정했다. 플러터를 사용하면서 불편한 점이 있는데, margin과 padding을 사용하려면 Container마냥 틀을 만들어서 적용해야 하고 width 내에서 위치를 조정하려할 때, 맘대로 조정이 잘 안되는 것이다.텍스트와 입력창의 비율을 맞춰서 가운데 정렬을 하려고 했으나 자꾸 width값이 줄어든 만큼 위치가 안맞더라.. 다른 기능은 몰라도 이런 UI적인 부분은 학습을 하고 프로젝트를 했어야 했는데, 다른 일 때문에 보류했다가 프로젝트 시작하면서 학습하느라 좀 아쉽게 느껴졌다. 코드도 지금 올리고 싶은데, 지피티로 도움..
메인페이지인 헤드라인 페이지의 UI를 구현했다. 일단 피그마에 기획한대로 구현은 했는데, 좀 걱정되는 부분이 있다. 블로그 포스트 자체를 iframe으로 화면으로 가져와 보여줄 예정이였는데, 인기포스트나 다른 포스트들의 이미지와 게시글 주제 같은 내용은 어떻게 가져올런지 궁금해졌다. 코드 구조에 대해 찾아보다가 router를 사용하면 공용 위젯을 main.dart에 사용하기 어렵다고 해서 새로 공용 인터페이스인 baseScreen이라는 위젯을 하나 만들어서 appBar와 bottomBar를 추가해주고 body부분만 인자로 받는걸로 만들어줬다.import 'package:defeefront/widgets/footer.dart';import 'package:defeefront/widgets/header.da..
기존대로 크롬으로 프로젝트 화면을 확인해봐도 되는데, 이왕 앱개발하는거 에뮬레이터를 사용해서 진짜 폰 화면에 어떻게 나올지 보는게 나을 것 같아 설치하게 되었다. 에뮬레이터를 설치하려면 Android Studio에서 Tools에 SDK Manager를 들어가서 세팅해줘야 한다.SDK Tools에서 안드로이드 에뮬레이터와 인텔 에뮬레이터가 설치되었는지 확인(본인은 설치가 안되어있음)해서 설치가 안되어있으면 설치를 해준다.안드로이드 에뮬레이터와 인텔 에뮬레이터 설치 중중간에 해당 에뮬레이터의 용량과 램을 정하는게 나오는데 기본값 그대로 진행했다. 설치가 끝난 이 후 원하는 디바이스를 선택하고 넘어오면 System Image를 설정하게 되는데, 여기서 설치할 수 있는 옵션을 선택해 설치하라고 한다. 자세힌 모..