본문 바로가기

flutter6

[Flutter] 프로젝트 구성 변경 정리(패키지명, 앱 이름 등) 테스트 코드를 작성한 이후에 프로젝트 구성을 변경하여 그대로 프로젝트를 가져가고 싶은 경우에 참고하면 된다. 공통사항 안드로이드, iOS 앱 이름은 일단 영어로 잡고 나중에 Localization 하는 것을 추천한다. (iOS에서는 한글로 넣으면 오류난다고 함) 수정한 이후에 Android, iOS부분에서 패키지명, 앱 이름 등이 정상적으로 나오는지 확인한다. 변경 사항 1. 루트 프로젝트 폴더 이름 2. flutter 부분 - 패키지명 수정 pubspec.yaml name:** 수정( 프로젝트명 같은 상징적인 의미로 잡자 ) - 참조 패키지 모두 수정 package:name/~.dart 3. 안드로이드 부분(Manifest) - 안드로이드 패키지명(applicationId) - 안드로이드 폴더 경로(c.. 2023. 10. 6.
[Flutter] 스크롤뷰 하단부터 위젯 배치 CustomScrollView( slivers: [ SliverFillRemaining( hasScrollBody: false, child: Column( children: [ const Text('Header'), Expanded(child: Container(color: Colors.red)), const Text('Footer'), ], ), ), ], ) SingleChildScrollView를 사용하고 내부에 Expanded위젯을 사용하는 경우에는 스크롤뷰의 크기가 정해져 있어야 사용할 수 있다. 그래서 SizedBox위젯을 사용하여 사이즈 설정 후에 사용하는 경우도 있는데, 문제는 이러면 내부 영역이 고정되어 버린다. 이러한 경우에 CustomScrollView를 사용하여 스크롤뷰 내부에서도 .. 2022. 11. 4.
[Flutter] Visibility와 Opacity 차이 Visibility의 경우에는 해당 위젯이 눈에 보이는지 아예 보이지 않는지에 대한 처리를 한다. (영역을 차지하지 않는다.) Opacity의 경우에는 해당 위젯이 얼만큼 보이는지 opacity값을 조절한다. (영역을 차지한다.) Visibility(visible: true, child: Container()) Opacity(opacity: 1, child: Container()) Flutter로 개발함에 있어서 위의 내용만 이해를 한다면 클릭 이벤트에서 문제가 생길 여지가 있다. 특정 물체에 클릭 이벤트를 주고 싶은 경우에 GestureDetector를 이용하는데, Visibility로 감싼 위젯의 경우에는 false 상태에서 이벤트를 받지 않지만, Opacity로 감싼 위젯의 경우에는 opacity .. 2022. 11. 4.
[Flutter] TextFormField 정리 final GlobalKey _formKey = GlobalKey(); FormKey를 선언하여 사용 영역 widget에 Form을 감싸고 key 속성으로 추가를 해둔다. 이러한 처리를 하는 이유는 나중에 전체 텍스트 필드에 대하여 error가 있는지 판단하기 위함이다. formKey쪽에서 이를 인식해서 쉽게 이용할 수 있다. 입력할 때 커서 색상, HighLight 색상을 바꾸려면 MaterialApp의 테마에서 해당 속성을 처리하면 된다. textSelectionTheme: const TextSelectionThemeData( cursorColor: Color.fromARGB(255, 255, 0, 255), selectionColor: Color.fromARGB(255, 185, 185, 185),.. 2022. 4. 6.
[Flutter] RichText 안드로이드에서 여러 텍스트들 사이에서 원하는 Style을 적용하고 싶은 경우에 Span을 사용한다. Flutter에서 이러한 처리를 하기 위해 RichText 위젯을 사용하는데 사용법은 이렇다. RichText( text: TextSpan( style: const TextStyle( color: Colors.white, fontSize: 18, ), children: [ const TextSpan(text: "정답은 "), TextSpan( text: "사과", style: const TextStyle( color: Colors.yellow, fontWeight: FontWeight.bold)), const TextSpan(text: "에요."), ], ); RichText로 감싸고 TextSpan을 넣.. 2022. 4. 2.
[Flutter] Null-Safety https://dart.dev/null-safety Dart Null-safety ​ Null-safety 원칙 1. 기본적으로 Null이 될 수 없으나 명시적으로 사용할 수 있다. 2. 점진적으로 적용할 수 있는 부분이다. 3. 충분히 타당하다. 한번 null이 아닌 객체는 절대 null값을 가지지 않기 때문에 컴파일 최적화가 가능하다. 더 작고 빠른 실행이 가능해진다. ​ https://dart.dev/codelabs/null-safety ​ 코틀린과 비슷한 형태로 Null-safety 규칙이 있다. 1. 타입에 ?를 붙이면 Nullable로 전환된다 2. assertion operator !를 사용하면 해당 객체가 Null이 아님을 명시할 수 있다. ​ int getLength(String? str.. 2022. 3. 27.