
플러터에서 showDialog()를 사용하는 코드를 작성하였다. import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar(title: const Text("MyApp")), body: Center( child: ElevatedButton( onPressed: () { showDialog( context: context, builder: ..

플러터에서 백 버튼을 제어하는 방법을 알아보자. 백 버튼은 뒤로 가기 버튼, 되돌리기 등 다양한 명칭으로 사용된다. 여기서는 백 버튼이라고 하겠다. 이전 화면으로 돌아가는 방법 플러터에서 내비게이터로 화면을 이동하면 이전 화면으로 돌아가기 위해 기본적으로 2가지 방법을 제공한다. 1. 앱바의 백 버튼 2. 안드로이드 시스템의 백 버튼 보통은 백 버튼의 기능을 그대로 사용해도 문제는 없다. 하지만 데이터가 입력된 폼이 있다면 사용자에게 입력을 취소할 것인지 묻는다든지, 비밀번호를 입력해야 앱을 사용할 수 있어야 한다면 백 버튼의 기능을 제어해야 한다. 여기서는 각각의 백 버튼을 제어하는 방법을 알아보겠다. 1. 앱바의 백 버튼 제어하기 MaterialPageRoute로 이동한 화면의 앱바에는 자동으로 백 ..

플러터에서 게비게이터(navigator)로 화면을 이동하는 코드를 작성하고 실행하였는데, 아래와 같은 에러가 발생했다. The following assertion was thrown while handling a gesture: Navigator operation requested with a context that does not include a Navigator. The context used to push or pop routes from the Navigator must be that of a widget that is a descendant of a Navigator widget. 에러 내용을 해석하면, '네비게이터에서 이동하려면 사용되는 콘텍스트(context)는 네비게이터 위젯의 하위 위젯..
깃을 공부하면서 로컬 저장소에서 원격 저장소로 git push 하는 중에 다음과 같은 에러가 발생했다. hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for..
파이썬 3.9를 기준으로 파이썬 타입 어노테이션을 사용하는 방법에 대해서 알아보자. 이 문서는 공식문서를 바탕으로 만들었다. NewType Callable Generics Any NoReturn tuple Union Optional type Literal ClassVar Final AnyStr Protocol runtime_checkable NamedTuple TypedDict # 파이썬 타입 어노테이션을 적용하기 전에 확인해야 할 점 타입 어노테이션은 파이썬 3.5부터 추가가 되었다. 그리고 현제까지도 계속 관련 기능이 추가되고 있는 상황이다. 이 말은 곧 호환성을 고려해야 한다는 것이다. 특히 파이썬 3.9에서 많은 부분이 변경되었다. 그러므로 자신이 사용하는 파이썬 환경을 고려해서 어노테이션을 작성..

파이썬의 타입 어노테이션(type annotation)에 대해서 알아보자. 타입 어노테이션에 대해서 알기 위해선 우선 파이썬의 특징을 잠시 알아하고 왜 타입 어노테이션이 필요한지 설명하겠다. # 파이썬은 동적 타입 언어다 a = 1 a = '1' 파이썬은 식별자에 값을 넣으면 아주 쉽게 변수를 만들 수 있다. 그리고 어떤 값이든 넣을 수 있다. 위에서 a에 int 타입인 1을 넣었고, 바로 str 타입인 '1'을 넣었다. 이렇게 식별자에 타입을 정하지 않고 실행 중에 타입을 확인하는 프로그래밍 언어를 동적 타입 언어라고 한다. # 파이썬은 덕 타이핑을 쉽게 할 수 있다 이런 동적 타입 언어의 기능으로 파이썬은 정말 쉽게 코드를 작성할 수 있게 된다. 예를 들어 다음은 컬렉션의 요소를 출력하는 함수다. d..

파이썬 3.5부터 타입 힌트를 지원하기 위해서 어노테이션(annotation)이 추가되었다. 어노테이션을 이용해서 코드를 작성하던 중, 클래스의 메서드의 리턴 타입을 해당 클래스로 어노테이션으로 작성하니 에러가 났다. # 예제 코드 다음 코드에서 Dollar의 times 메서드는 Dollar를 리턴한다. class Dollar(Money): def __init__(self, amount: int): self._amount: int = amount def times(self, multiplier: int) -> Dollar: return Dollar(self._amount * multiplier) 하지만 vscode에서는 Dollar가 정의되어 있지 않았다면서 에러가 발생한다. # 해결 방법 열심히 구글링..

vscode에서는 파이썬 unittest를 기본 설정으로 잘 사용하고 있었다. 그리고 시간이 지날수록 테스트 파일이 많아져서 테스트를 패키지 별로 디렉터리를 만들어서 분리를 해 주었다. 하지만 테스트를 디렉터리로 분리하니 vscode의 테스트에서 테스트 파일들을 찾지 못했다.이를 해결하기 위해서는 setting.json에서 unittest를 재설정이 필요하다. # 1. setting.json 설정하기 vscode에서 탐색기로 파이썬 프로젝트 디렉터리를 열면 관련 설정 파일이 .vscode 디렉터리에 저장된다. unittest 설정파일도 이 디렉터리의 settings.json에 저장된다. { "python.testing.unittestArgs": [ "discover", "-s", "tests", "-p"..