Material Design 가이드라인을 따르는 앱에서 탭 작업은 일반적인 패턴입니다. Flutter는 material 라이브러리의 일환으로 탭 레이아웃을 간편하게 만들 수 있는 방법을 제공합니다. 이 문서에서는 다음 단계를 사용하여 탭 예제를 만듭니다:TabController 생성하기탭 생성하기각 탭에 대한 콘텐츠 생성하기 1. TabController 생성하기탭이 제대로 작동하려면 선택된 탭과 콘텐츠 섹션을 동기화해야 합니다. 이 작업은 TabController가 담당합니다.TabController를 수동으로 생성하거나 DefaultTabController 위젯을 사용하여 자동으로 생성할 수 있습니다. DefaultTabController를 사용하는 것이 가장 간단한 옵션입니다. 이는 TabCon..
Flutter는 화면 간 이동과 딥 링크 처리를 위한 완벽한 시스템을 제공합니다. 복잡한 딥 링크가 없는 작은 애플리케이션은 Navigator를 사용할 수 있으며, 특정 딥 링크 및 네비게이션 요구 사항이 있는 애플리케이션은 Router도 함께 사용하여 Android와 iOS에서 딥 링크를 올바르게 처리하고 웹에서 앱이 실행 중일 때 주소 표시줄과 동기화되도록 해야 합니다.Android 또는 iOS 애플리케이션을 딥 링크를 처리하도록 구성하려면 딥 링크 설정 문서를 참조하세요.Navigator 사용하기Navigator 위젯은 화면을 스택 형태로 표시하며, 타겟 플랫폼에 맞는 전환 애니메이션을 사용합니다. 새로운 화면으로 이동하려면 BuildContext를 통해 Navigator에 접근하여 push() 또..
플러터에서 json_serializable 패키지를 사용하면, 객체를 json으로 변환하거나, json을 객체로 쉽게 만들 수 있다. 먼저 pubspec.yaml에 다음의 정보를 추가하자. dependencies: json_annotation: ^4.8.0 dev_dependencies: build_runner: ^2.3.3 json_serializable: ^6.6.0 json_serializable을 적용할 클래스에 다음 작업을 해야 한다. 1. part .g.dart 추가하기 2. 클래스에 @JsonSerializable를 추가하기 3. fromJson 명명된 생성자 추가하기 : 생성자는 _$FromJson() 함수를 사용한다. 4. toJson 메서드 추가하기 : 메서드는 _$ToJson() 함수..
플러터에서 사용하는 다트 언어에는 예외 클래스와 에러 클래스가 존재한다. 각 클래스의 차이점에 대해서 알아보자. 예외 클래스 예외 클래스는 오류에 대한 정보를 사용자에게 전달하기 위해 사용된다. 그리고 오류를 프로그램으로 처리할 수 있도록 한다. 이 예외는 catch로 잡히기를 기대하며, 유용한 데이터를 포함해야 한다. 예외 클래스인 Exceioption은 Exception("메시지")처럼 간단히 예외를 만들 수 있지만 라이브러리 코드에서는 사용을 금지한다. 왜냐하면 사용자들이 정확한 타입을 잡을 수 없기 때문이다. 이 클래스의 인스턴스는 테스트나 개발 중에 사용하자. 프로덕션 코드에서는 Excpetion의 하위 클래스를 정의해서 정확한 예외 정보를 전달하도록 해야 한다. 에러 클래스 에러 클래스는 프로..
https://medium.com/@theboringdeveloper/common-bottom-navigation-bar-flutter-e3693305d2d Common bottom navigation bar — Flutter Welcome to this tutorial to create a Common bottom navigation bar in Flutter. medium.com 해결하고 싶은 문제점 플러터에서 BottomNavigationBar를 사용하고 있는데, 내비게이션으로 화면 이동시 BottomNavigationBar가 사라진다. 그래서 화면을 이동해도 BottomNavigationBar를 계속 사용할 수 있는 방법에 대해서 구글링하였다. 이 문제를 해결하기 위해서는 플러터에서 route가 ..
플러터에서 다음 코드에서 에러가 발생했다. Scaffold( appBar: AppBar(title: const Text("Home Page")), body: const Center( child: TextField( onChanged: (str) { print(str); }, ) ), ); 에러는 익명 함수에 표시되어 있다. 처음에는 익명 함수에 전혀 관련이 없는 에러 내용(유효하지 않은 상수 값)이라서 이유를 알 수가 없었다. 자세히 살펴보니 익명 함수를 가지는 Center가 const로 선언되어 있다. 그래서 익명함수는 상수가 될 수 없어서 이런 에러가 발생한 것을 알 수 있었다. 이런 에러가 발생하면 const를 제거해보자.
플러터는 다트 언어를 사용한다. 다트의 객체에 동등성에 대해서 알아보자. 예제 코드 Person 클래스를 구현하였다. 그리고 동일한 속성을 가지는 두 객체를 생성한 후 == 연산자로 동등성을 확인하였더니 false가 나왔다. class Person { String name; int age; Person(this.name, this.age); } void main() { var a = Person('John', 26); var b = Person('John', 26); print(a == b); // false } 다트의 == 연산자 다트에서 == 연산자는 두 객체의 동등성을 비교하는 데 사용된다. == 연산자의 작동 방식은 객체의 주소(메모리 위치)를 기반으로 한다.즉, 두 객체가 정확히 같은 인스턴스인..