전체 > Dart (19) Dart 18. 상속과 추상 클래스 {유목민 알폰스} dart에서 클래스의 상속에 대해서 정리해 보겠습니다. 1. 상속 SubClass는 ParentClass의 자원을 상속받았기 때문에 body부분에 코드가 기술되지 않았지만 부모코드에서 기술된 자원을 사용할 수 있습니다. class ParentClass { int val = 10; void fun() { print("Parent..fun()..."); } } class SubClass extends ParentClass {} main() { var obj = SubClass(); obj.fun(); print("obj.val : ${obj.val}"); } 결과) Parent..fun()... obj.val : 10 2. 오버라이딩 부모클래스의 속성을 그대로 사용할수도 있지만 상속을 받은 다음에 변경하고 .. Dart 17. 명명된 생성자와 상수 생성자 {유목민 알폰스} 2023.11.08 - [Client/Dart] - Dart 16. 클래스 생성과 호출 그리고 초기화 {유목민 알폰스} 명명된 생성자와 상수 생성자의 사용법과 특성을 알아봅시다. 명명된 생성자는 한 클래스의 여러 개의 다른 종류의 생성자를 작성할 수 있습니다. 점(.)으로 연결해서 다양한 생성자의 구현이 가능합니다. 오버로딩은 매개변수를 보고 용도를 구분하지만 이렇게 이름으로 명시함으로써 가독성이 더 높아진다고 볼 수 있습니다. 상수 생성자는 기존에 동일한 객체의 요청이 있을 때 새로 생성하지 않고 이미 생성된 객체를 활용하므로 애플리케이션의 성능을 개선할 수 있습니다. 명명된 생성자를 통한 여러 개의 다양한 생성자를 정의해 봅시다. class TestClass { TestClass() {} TestCl.. Dart 16. 클래스 생성과 호출 그리고 초기화 {유목민 알폰스} DART클래스를에 대한 생성과 호출 변수와 메소드의 초기화를 비롯한 여러가지 다양한 특성들을 살펴 봅니다. 클래스 생성과 선언 호출 class User{ String name = '알폰스'; int age = 25; void setHello(){ print('Hello $name, age: $age'); } } main(List args){ User user = new User();//객체의 생성 print(user.name);//멤버변수 접근 print(user.age);//멤버변수 접근 user.setHello();//멤버메소드 접근 } 출력) 알폰스 25 Hello 알폰스, age: 25 ---------------------------------------- main(List args){ User.. Dart 15. 함수와 제어문 {유목민 알폰스} dart에서 함수를 생성 후 getter, setter를 통 안 입출력 및 기타 연산자를 알아보겠습니다. 함수 선언하고 호출하기 매개변수의 사용 옵셔널 위치 매개변수 함수 타입 인수 getter setter 함수 연산자의 활용 실행 흐름의 제어 1. 함수 선언과 호출 //톱레벨 함수 void fun1(){ } //톱레벨함수 안에 함수 void fun2(){ void fun2_1(){ } fun2_1(); } //클래스 안에 함수 class TestClass{ void getTest(){ } } 함수의 중복 오버로딩을 지원하지 않습니다. 오버로딩을 대신할 옵셔널 매개변수라는 기능이 있기 때문에 굳이 오버로딩을 지원하지 않아도 되는 것입니다. 매개변수의 타입은 명시하거나 모든타입을 받을 수 있는 var타입을.. Dart 14. 널 안전성 변수선언 {유목민 알폰스} Dart는 널 안전성을 지원하는 프로그램입니다. 널 안전성을 지원하지 않는 프로그램들은 객체에 null값을 대입할 수 있으므로 NullPointerException발생시키는 빈도가 높습니다. Dart에서는 기본적으로 변수에 null값을 허용하지 않기때문에 실행되기 이전에 미리 에러를 발생시켜서 null안정성을 지원해주고 있습니다. 기본은 null값을 대입하지 못합니다. 하지만 변수 선언시 물음표? 옵션을 붙여주면 null을 허용하게 됩니다. 즉 널허용 변수와 널 불허 변수를 모두 생성할 수 있습니다. int1은 null을 담을수담을 수 있었고 int2는 null을 담을 수 없기 때문에 붉게 표시되고 에러가 나는 것을 볼 수 있습니다. int var1 = null; // Dart 13. 컬렉션 타입 List Set Map {유목민 알폰스} 테이블 처럼 행, 열이 있는 복잡한 형태의 데이터를 저장할수 있는 변수타입 입니다. List, Set, Map 타입에 대해서 알아 보겠습니다. 1. List 타입 List 꺽쇠 안에 타입을 선언하면 배열안에 들어갈수 있는 타입이 지정이 됩니다. List 꺽쇠와 타입지정이 없기 때문에 배열안에 들어갈 타입은 다이나믹 타입이 됩니다. 그래서 모든 타입의 변수를 담을수 있습니다. [실행] void main() { List rs = [123, "테스트", true]; rs[0] = 100; rs[1] = "홍길동"; print('rs:[${rs[0]}, ${rs[1]}, ${rs[2]}]'); } [결과] rs:[100, 홍길동, true] 제네릭으로 타입을 지정했다면 지정한 타입만 대입할수 있습니다. void.. Dart 12. { const, final }와 { var, dynamic } 타입 {유목민 알폰스} const final var dynamic 타입의 변수들을 알아보겠습니다. 1. const 타입 { 함수 안의 지역변수, 톱 레벨 }에서 선언가능합니다. 클래스에서 선언할 때는 무조건 static변수로 선언해야 합니다. 선언할 때 무조건 초기값을 지정해야 합니다. 한번 선언이 되면 값을 바꿀 수 없습니다. const타입에 변수값을 대입할 때는 반드시 ( const = const ) 같은 const끼리만 대입가능합니다. main() { String str01 = "문자값"; const String const01 = "커스트고정값"; final String final01 = "파이널고정값"; } 2. final 타입 {함수안의 지역변수, 클래스 안의 지역변수}에서 선언이 가능합니다. 클래스에서 선언할 때도 .. Dart 11. 데이터 타입 [String, int, double] Type 사용 Dart에서 사용하는 데이터 타입들과 그 특성을 정리해 보았습니다. String타입 1. String 선언 및 표기방식 홑따옴표와 큰따옴표는 둘은 동일하게 동작하고 삼중홑따옴표와 삼중큰따옴표 둘이 동일하게 동작한다. 홑따옴표 ('문자') : 일렬로만 출력된다. 특수문자를 결합해야 줄 바꿈이나 탭표시가 가능하다. 큰따옴표 ("문자") : 일렬로만 출력된다. 특수문자를 결합해야 줄 바꿈이나 탭표시가 가능하다. 삼중홑따옴표('''문자''') : 출력해 보면 엔터처리나 탭키까지 모두 적용이 된다. 삼중큰따옴표("""문자""") : 출력해 보면 엔터처리나 탭키까지 모두 적용이 된다. main() { String str1 = '우리나라'; String str2 = "대한민국"; String str3 = ''' 우리.. Dart 11. DART에서 private변수 선언 {유목민 알폰스} Dart에서는 아쉽게도 따로 ( public, private, protected)와 같은 접근제어자를 제공하고 있지는 않지만 유사한 역할을 할 수 있도록 구성할 수 있습니다. Main.dart에서 Sub.dart파일을 임포트 하고 Sub.dart파일의 함수를 실행해 봅니다. [ Sub.dart ] String myPublic = "Sub.dart public 변수"; String _myPrivate = "Sub.dart private 변수"; void getSub() { print("======= 시작 - Sub.dart public ==========="); print(_myPrivate); print(_myFunction()); print("======= 종료 - Sub.dart public ====.. Dart 10. DART/Flutter의 리소스 충돌이나 변수의 중복문제 해결 {유목민 알폰스} ※ DART/Flutter에서 외부의 여러 파일을 import해올 때 여러 파일에서 중복된 리소스들의 충돌문제가 있을 수 있습니다. {유목민 알폰스}가 해결에 대한 가이드를 드리겠습니다. Sub.dart파일의 내용을 살펴보겠습니다. [ Sub.dart ] String myVar = "Sub.dart변수"; String myFunction() { return "Sub.dart파일의 myFunction함수가 실행되었습니다."; } [ Main.dart ] myVar변수와 myFunction함수가 중복되었습니다. import 당하는 Sub.dart파일에도 import 하고 있는 Main.dart파일에도 동일한 이름의 리소스를 가지고 있습니다. 즉 리소스가 겹쳐있는 상태입니다. Sub.dart [ {myVar,.. Dart 09. 내가 만든 라이브러리 만들고 포함하기 {유목민 알폰스} ※ 외부 라이브러리뿐만 아니라 내가 직접 만든 라이브러리를 포함할 수 있습니다. 유목민 알폰스가 알려드리겠습니다. compLib.dart에 다른 dart파일들을 묶어서 제공하기 Main.dart파일에서 compLib.dart를 import 합니다. compLib.dart파일은 { comp01.dart, comp02.dart }를 포함하고 있으므로 결론적으로 compLib.dart을 import 하는 것은 { compLib.dart, { comp01.dart, comp02.dart } } 모두를 import 하는 것과 같습니다. 라이브러리 형태로 import를 하는 것입니다. Main.dart에서 compLib라이브러리 import part of 구문은 어떤 라이브러리에 포함되어 있는지 기술합니다. 여기서.. DART 08. import 특정 부분만 제외 특정 부분만 추가 {유목민 알폰스} Type1 - 일반적인 방식의 import include.dart 파일 String myName = "마이네임"; class Test { Test() { print("Test클래스 생성완료!"); } } class Test2 { Test2() { print("Test2클래스 생성완료!"); } } Main.dart 파일 import 'include.dart'; main() { print(myName); Test test = new Test(); Test2 test2 = new Test2(); } Main.dart 실행화면 Type2 - 원하는 요소만 import에 포함하기 Main.dart의 import 부분을 아래와 같이 변경하면 include.dart 파일에 포함된 Test2 클래스는 사용할 수 .. DART 07. 상황별 패키지 접근 방식 {유목민 알폰스} 프로젝트/lib/testClassBin/Test.dart //testClassBin > Test class Test { void getMessage() { print("[testClassBin/Test.dart]로드완료!"); } } 프로젝트/lib/classBin/ChildTest.dart //classBin > ChildTest class ChildTest { void getMessage() { print("[classBin/ChildTest]로드완료!"); } } package접두사 package접두사로 import할때 아래 코드에서 hello_prj는 프로젝트명이 됩니다. 폴더를 자세히 관찰해 보면 lib폴더가 있지만 lib폴더의 경로는 생략하고 기입 합니다. Main.dart import 'cl.. DART 06. 최초실행 후 외부클래스 import하기 {유목민 알폰스} HelloUser.dart int year = 2023; String userName = "제임스"; void sayHello() { print('hello, $userName $year 화이팅!'); } class User { int year = 2023; String userName = "제임스"; void sayHello() { print('hello, $userName $year 화이팅!'); } } Main.dart - main함수가 있는 파일이 실행파일입니다. import 'HelloUser.dart'; main() { print("========== import in (변수, 함수) ===========\n"); print("$userName"); sayHello(); print("\n===.. DART 05. 안드로이드 스튜디오 Flutter프로젝트 생성 {유목민 알폰스} 1. [ New Flutter Project ] 클릭 합니다. 안드로이드 스튜디오를 처음 실행하면 Welcome페이지가 뜹니다. [ New Flutter Project ] 클릭 합니다. 2. Flutter 클릭 3. 설치완료 확인 플요한 정보들을 입력합니다.프로젝트명만 입력해주면 나머지 내용들은 기본으로 채워집니다.Platforms 부분은 자신이 개발할 항목만 체크해주면 됩니다. 4. 좌측 탐색기를 열어서 lib/main.dart파일 오픈 프로젝트를 생성하면 샘플로 포함되어 있는 최초 실행파일 입니다. 파일을 오픈합니다. 5. 상단의 디바이스 패널을 선택 기본으로 제공하는 [ Chrome, Edge ]둘중에 하나를 선택합니다. 추후에 [모바일, 윈도우]다른 디바이스로도 컨텐츠 발행을 하겠지만 지금은 가장.. DART 04. Error: Unable to find 에러 해결 {유목민 알폰스} {Dart, Fluter }을 윈도우앱으로 실행할때 간헐적으로 아래와 같은 에러가 발생하는 경우가 있었습니다. Error: Unable to find git in your PATH 비주얼 스튜디오를 설치했다면 대부분 발생하지 않는 에러이지만 간헐적으로 발생하는 Error인 것 같습니다. 윈도 앱 기반으로 정상적으로 실행이 되거나 {웹, 모바일}기반의 개발만 할 것이기 때문에 윈도 앱을 실행하지 않을 것이라면 이번 과정은 생략하셔도 좋습니다. 1. VsCode 의 터미널창 또는 command창에서 System32로 이동후 $host명령을 입력합니다. PS C:\> cd Windows/System32 PS C:\Windows\System32> $host 2. Git이 설치되지 않았다면 git를 설치해 줍니다.. 이전 1 2 다음