기본text는 body2(bodyText2) 란 이름의 text style로 적용되어 있다. 이 body2의 TextStyle을 변경하면 모든 text가 공통적으로 변경된다. 참고 Use themes to share colors and font styles How to share colors and font styles throughout an app using Themes. docs.flutter.dev TextTheme class - material library - Dart API Material design text theme. Definitions for the various typographical styles found in Material Design (e.g., button, captio..
Column위젯의 mainAxisSize의 값으로 MainAxisSize.min을 줘서 해결 참고 Flutter - Auto size AlertDialog to fit list content I need to load list cities dynamically from rest webservice and let user choice one city from alert dialog. My code: createDialog() { fetchCities().then((response) { showDialog( ... stackoverflow.com
AlertDialog 창 외부 화면을 눌러도 안꺼지게 막기 showDialog의 barrierDismissible 값을 false로 설정한다. 뒤로가기 버튼 막기 show dialog의 builder의 최상위 위젯을 뒤로가기 버튼에 대한 콜백을 설정할 수 있는 WillPopScope위젯으로 두고 onWillPop에 () async => false 콜백을 설정해 아무일도 일어나지 않게 함 둘 다 적용하면 아래와 같다. showDialog( context: context, barrierDismissible: false, builder: (context) { return WillPopScope( onWillPop: () async => false, child: AlertDialog( ... ), ); } ) ..
android android/app/src 내의 debug, main, profile폴더 내의 AndroidManifest.xml파일 내 상단에 있는 package의 값을 패키지 이름으로 변경 android/app/src 내의 build.gradle파일에서 applicationId도 위에 바꾼 패키지 이름대로 변경 applicationId "change.this.name" ios ios/Runner 내의 Info.plist파일에서 CFBundleIdentifier란 값을 가진 key 태그 아래의 string태그의 값을 원하는 패키지 이름으로 변경 CFBundleIdentifier change.this.name 만약 ${PRODUCT_BUNDLE_IDENTIFIER} 란 이름으로 되어있다면 ios/Runn..
문제점 내가 발생한 문제는 두가지이다. 문제 1 firebase플러그인에 대한 내용이 포함된 에러 및 버전을 자동으로 9.0으로 맞춘다는 메시지 출력 [!] Automatically assigning platform iOS with version 9.0 on target Runner because no platform was specified. Please specify a platform for this target in your Podfile. 원인 : firebase를 사용하기위한 ios minimum버전을 맞추지않아 발생 문제 2 LoadError -dlopen~~~ 에러 발생 원인 : Apple Silicon(M1)에 맞지않는 cocoapods 문제로 인해 발생 이외에 다른 패키지의 버전이 맞지..
1개는 알고있는 상태이기에 그 외의 개수에 의문이 든 것이라 생각하고 작성하지 않는다. 간혹 list를 다루는 글들을 보다보면 점이 2개, 3개 붙어있는 요상한 친구들이 보이는데 의미를 몰라 코드 해석을 정확히 할 수 없었다. 이에 대해 찾아보고 정리했다. 2개 (cascade notation) 생성한 object 자신의 멤버를 이어서 호출할 수 있도록 해준다. 출력 결과를 보면 알겠지만 paint1과 paint2는 같은 의미로 작성된다. 위 예제에선 없지만 멤버 함수도 호출된다. 하지만 알아둬야 할 것은 마지막에 호출한 멤버 함수의 return을 받거나 중간에 호출한 멤버 함수의 return을 받아 중간에 사용하는 것이 아니다. 제대로 이해 못하고 아래 예시 코드를 짜니 문제가 발생했다. 출력하면 에러..
문제점 content type을 application/json으로 넣을 경우의 body엔 application/json에 맞게 String값이 들어가야하는데 map형식으로 넣어서 문제 발생 다시 말해서 application/json은 json string(json 형태를 문자열로 입력하는 형식)타입을 전송한단 것을 의미하기 때문에 map으로 넣으면 안되는 것 해결방법 map형식인 데이터를 dart:convert 패키지 내의 jsonEncode함수로 래핑하여 String으로 변경되어 들어가도록 구현 예시는 아래와 같다. import 'package:http/http.dart'; import 'dart:convert'; func() async { final result = await post(Uri.pa..
모든 테이블의 제약조건 확인 select * from information_schema.table_constraints; 특정 테이블의 제약조건 확인 select * from information_schema.table_constraints where table_name = '테이블명'; 참고 Information Schema CHECK_CONSTRAINTS Table Supported check constraints. mariadb.com
alter table tableName auto_increment=1; 만약 auto_increment가 설정된 컬럼에 설정 값보다 이미 높은 값이 있다면 auto_increment를 원하는 값으로 설정하더라도 이미 있는 최댓값의 다음값으로 설정된다. 예시 id number 4 0 5 0 6 0 위와 같은 테이블이 있을 때 auto_increment를 1로 설정하고 행을 추가해도 auto_increment값은 최댓값인 6의 다음인 7로 설정된다. insert를 하나 더 하면 아래와 같이 7이 추가된다. id number 4 0 5 0 6 0 7 0 참고 How to set initial value and auto increment in MySQL? How do I set the initial value ..