목록플러터 (18)
말랑말랑제리스타일

플러터의 최대 장점 중 하나는 모바일 기기뿐만 아니라 크롬에서 사용 가능한 앱을 만들 수 있다는 점인데요. 플러터를 이용해 제작한 앱에 있는 List View 등 스크롤이 사용되는 기능이 일부 동작하지 않는 문제를 발견했고 해결 방법을 찾아봤습니다. 플러터 List View 크롬에서 스크롤되게 하는 방법 방법은 생각보다 간단했습니다. MaterialApp을 리턴하는 main.dart 파일 내의 build 메서드에 scrollBehavior 파라미터를 추가해 주면 됩니다. 플러터 공식 사이트에도 나와있는 방법인데요. 상단의 캡처와 같이 MyCustomScrollBehavior라는 클래스를 MaterialScrollBehavior를 상속받아 생성해 줍니다. 그리고 내부에 dragDevices라는 인자를 to..

플러터를 설치하려면 환경변수도 세팅해야 되고 개발환경 세팅하는 데에 상당히 많은 시간이 걸리는데요. 파워쉘과 초콜라티를 이용하면 환경변수를 따로 손대지 않고도 플러터 개발환경을 세팅할 수 있습니다. 사전에 준비할 내용은 VS Code를 설치해두는 것 외에는 없습니다. 플러터 설치하기 1단계 파워쉘 설치하기 파워쉘이 설치되어있다면 이 단계는 건너뛰어도 됩니다. 먼저 아래 사이트로 들어가서 MSI 패키지로 간단히 파워쉘을 설치해 줍니다. https://learn.microsoft.com/ko-kr/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.3 Windows에 PowerShell 설치 - PowerShell W..

Flutter를 쓰다보면 상당히 유용한 기능이 많은데요. 기본적으로 Dart 언어에서는 List 중복 제거는 지원하지 않는 것 같습니다. 그렇기 때문에 다양한 방법론들이 돌고 있는데 아마 Flutter에서 객체로 만든 List의 경우는 이 방법이 최선의 중복제거일 것 같네요. Flutter 객체 List의 중복 제거에 사용되는 메서드 Flutter의 객체 List에서 중복 제거를 하기 위한 Dart의 기본메서드는 아래 두가지입니다. List.removeWhere() List.firstWhere() 원리는 Dart의 firstWhere을 이용해서 이 항목이 해당 조건의 첫번째 항목인지 여부를 확인하고 removeWhere 메서드를 이용해 아닌건 전부 삭제되도록 하는겁니다. Flutter 에서 객체 List..

플러터에서 CupertinoPage Scaffold 내에 Material Widget을 사용하는 경우 위젯이 보이지 않는 경우가 있습니다. CupertinoNavigationBar에 위젯이 가려지는 현상으로 인해 발생하는 상황인데요. Navigation Bar를 제거하면 보이긴 하지만 여전히 보기 좋지가 않습니다. 그래서 간단한 해결 방법을 알려드립니다. CupertinoPageScaffold 가려지는 현상 확인 우선 제가 기존에 작성한 소스코드는 아래와 같습니다. return CupertinoPageScaffold( navigationBar: CupertinoNavigationBar( middle: Text('일정표'), ), child: Scaffold( body: TableCalendar( focu..

플러터에서 pub을 이용해 외부 라이브러리를 끌어다 쓸 때 간혹 "Cannot run with sound null safety"라는 에러가 발생할 수 있는데요. 참고 사이트에 들어가면 영어로 되어있어 알아보기 힘들지만 처리 방법은 생각보다 간단합니다. Cannot run with sound null safety 에러 간단한 처리 방법 먼저 가장 간단하게 이 에러를 발생시키지 않는 처리 방법입니다. null safety에 대한 에러를 무시하고 실행시켜버리는건데요. 당연히 플러터 자체적으로 권장하는 방법은 아닌 것 같지만 가장 간단한 방법이기 때문에 이것부터 알려드립니다. 터미널을 이용해 실행시키는 방법(한번만 사용) 먼저 첫번째 방법은 일단 한번 실행시켜보고자 할 때 터미널에서 실행시키는 방법입니다. 기본..

플러터 2.0 사용할 때 List를 사용할 때 발생할 수 있는 에러가 몇 가지 있는데요. 그중 대표적인 List()라는 구문을 사용하면 발생 가능한 에러와 리스트에 add로 아이템 추가할 때 발생하는 에러에 대해 알아보겠습니다. 플러터에서 List를 List() 생성자로 초기화하면 발생하는 에러 플러터 2.0에서는 Null에 대해 상당히 예민해진 것 같습니다. "The default 'List' constructor isn't available when null safety is enabled." 이런 에러가 보이는데요. 해석하면 Null을 허용하지 않기 때문에 List() 생성자를 사용할 수 없다는 거죠. 그러나 리스트를 만들 때 당연하게도 선언 부에서 아이템을 전부 넣어주는 경우는 잘 없습니다. 그럼..

플러터에서 변수를 생성하고 초기화하지 않으면 빨간 줄이 보이면서 에러가 나는데요. 예전 버전에서는 이런 에러가 없었는데 플러터 2.0으로 업그레이드가 되면서 생긴 에러입니다. 빨간 줄 위에 마우스를 올리면 보이는 에러 메시지는 아래와 같죠. "Non-nullable instance field 'controller' must be initialized" 런타임 에러를 컴파일에서 사전에 막아주기 위한 정책이 아닐까 싶습니다. 여하튼 그럼에도 불구하고 우리는 종종 변수 선언부터 해놓고 초기화를 해야 될 경우가 종종 발생합니다. 플러터에서 변수 선언만 하고 초기화는 이후에 하는 방법 하지만 불가능이란 없고 플러터를 개발하는 사람들도 직원이기 이전에 개발자죠. 변수 선언부와 초기화하는 부분이 따로 필요한 경우가 ..

플러터에서 외부 리소스를 사용하기 위해 pubspec.yaml 파일을 수정해야 될 경우가 종종 있습니다. 하지만 주의사항을 지키지 않으면 "Expected a key while parsing a block mapping."라는 에러 메시지를 만날 수 있는데요. 이 "Expected a key while parsing a block mapping."라는 에러 메세지를 만나지 않기 위한 주의사항과 해결방법을 알아봅시다. 플러터 pubspec.yaml 수정 후 에러 해결 방법 아마 플러터에서 pubspec.yaml 에러로 이 글을 보신 분들은 대부분 이런 에러를 만났겠죠? 라인과 컬럼은 다르겠지만 이건 크게 중요하지 않습니다. 저 같은 경우 주석만 해제했는데 에러가 나서 어이가 없어서 잠깐 헤매었는데요. 상당..