티스토리 뷰
Scaffold : 골격, 비계(건축에서 지지대, 동바리), 구성틀, 구성 시스템. 큰 틀(title, body)
아래처럼 그냥 class임.
구성원은 아래에 있고,
class Scaffold extends StatefulWidget {
/// Creates a visual scaffold for material design widgets.
const Scaffold({
Key? key,
this.appBar,
this.body,
this.floatingActionButton,
this.floatingActionButtonLocation,
this.floatingActionButtonAnimator,
this.persistentFooterButtons,
this.drawer,
this.onDrawerChanged,
this.endDrawer,
this.onEndDrawerChanged,
this.bottomNavigationBar,
this.bottomSheet,
this.backgroundColor,
this.resizeToAvoidBottomInset,
this.primary = true,
this.drawerDragStartBehavior = DragStartBehavior.start,
this.extendBody = false,
this.extendBodyBehindAppBar = false,
this.drawerScrimColor,
this.drawerEdgeDragWidth,
this.drawerEnableOpenDragGesture = true,
this.endDrawerEnableOpenDragGesture = true,
this.restorationId,
}) : assert(primary != null),
assert(extendBody != null),
assert(extendBodyBehindAppBar != null),
assert(drawerDragStartBehavior != null),
super(key: key);
final Widget? body;
body는 위와 같이 Widget임.
Widget?에서 ?는 body가 null일 수 도 있다는 말.
final은 body가 언젠가는 설정(초기화)이 되어야 한다는 말.
프로그램 컴파일시 값이 할당되지 않아도, 나중라도 값이 할당되어야한다.
그런데, null도 된다.
=>따라서, 그냥 "넣던가 말던가 해라."(아무 의미 없음)
역으로 Scaffold가 필수는 아니라는 말. 그러나 표준대로 해야, IOS등에서도 문제가 안생길 수 도 있다.
ANDROID_HOME=D:\AndroidStudioSDK
PATH=D:\Flutter\bin;D:\AndroidStudioSDK;D:\AndroidStudioSDK\platform-tools;
Name non-constant identifiers using lowerCamelCase.
lowerCamelCase, UpperCamelCase
Camel:낙타
Case:(대)문자,(소)문자
lowerCamelCase:첫문자는 소문자, 다음 단어의 첫문자는 대문자(가독성). 'l'이 소문자이다.
UpperCamelCase:첫문자는 대문자, 다음단어의 첫문자는 대문자(가독성). 'U'이 소문자이다.
Dart언어는 첫문자가 소문자인 lowerCamelCase을 사용한다.
C언어처럼 첫문자를 대문자로 사용하면, 에러발생.
에러메세지:Name non-constant identifiers using lowerCamelCase
예) void DelaySec(int s) //ERR
예) void delaySec(int s) //OK
요약:Dart에서는 첫문자는 소문자를 사용해라.
※밑줄표시가 되지만, 실행은 된다.
Dart에서는 함수명에 밑줄은 로컬함수만 사용가능하다.
C처럼 밑줄을 사용하지 말라.(그냥 밑줄 안쓰는게 좋다)
예) double_To_int() //err
예) doubleToInt() //ok
※밑줄표시가 되지만, 실행은 된다.
double to int 형변환
Dart에서는 형변환 없음(모든것이 클래스?). 멤버함수를 사용해야함.
예) double a=1.0;
int i=a.toInt();
The await expression can only be used in an async function in flutter
Sound(견고한) null safety
소스코드상에서 null값을 참조하지 않도록, 또는 피하도록 함.
(실행시간에 비교가 아니라, 아예 소스코드 부터 null문제를 해결하고자 함)
런타임(실행중)시 if문으로 null검사 자체를 안함.
(항상 null이 아닌 소스코드이므로, 또는 null일 수 도 있는 소스코드이므로.)
if문으로 null검사하는것이 아니라, ?, ??, !, required,late 등으로 null값을 허용하는 변수임을 표시.
(개념은 좋은데, 실제로는?)
String s1=null;//error
String? s2=null;//ok
UnSound(불량한) null safety
null safety한 소스코드(라이브러리)와 "UnSound(불량한) null safety"한 소스코드(라이브러리)는
함께 사용 할 수 있다.(변환필요)
dart pub upgrade --null-safety
$ dart pub get
'Flutter' 카테고리의 다른 글
flutter에서 StatelessWidget 화면 갱신 (0) | 2022.05.31 |
---|---|
flutter Dart - 포인터? 전역 함수에서 UI 제어하기 (0) | 2022.04.07 |
flutter_blue 0.8.0 설치, 문법(작성중) (0) | 2022.04.02 |
2022-flutter 설치(작성중) (0) | 2022.03.27 |
안드로이드, IOS 앱 개발 - Flutter (0) | 2022.03.21 |