코딩파파로 다트 문법을 알아보자.

https://youtu.be/nRsxWt3BWzM

 

* Dart 문서

https://dart.dev/guides

 

Dart documentation

Learn to use the Dart language and libraries.

dart.dev

* Dart 웹 테스트 환경 - 예제코드 참조

https://dart.dev/#try-dart

 

Dart programming language

Dart is a client-optimized language for fast apps on any platform

dart.dev

 

* main()로 프로그램이 시작한다.

* 함수 호출구조

* 세미콜론

* 플러터를 하면서 다트문법을 자세히 참조하자.

* 에디터 문법표시

* var : 자료형 지정없이 데이터 저장
 - https://dart.dev/samples#variables

 > 스크립트 참조

 - https://dartpad.dev/?null_safety=true 

 > doumentation 영역 표시되는 환경

* 유형별 자료형

* 함수 : 함수 앞에 function 이 아니고 반환 자료형 선언

 - print 로 출력시 함수참조방법 : ${} 안에 함수호출 구문 정의

 - print 로 출력시 변수 참조방법 : $변수 정의

 - 함수형 함수정의

 - 함수를 파라미터로 정의

* 제어문 : Control flow

* String text : ['],["] 모두 문자열로 정의 가능

 - ['''] : 줄바꿈 문자열 정의 가능

 - $변수 : 문자열 안에서 변수참조 가능

 - ${계산, 함수} : 문자열 안에서 계산, 함수참조 가능

* class

 - new 생성자 생략 가능

 - 생성자(메서드)에서 파라미터 옵션속성 설정 가능, 기본값 설정 가능, 

 > Car(int sts, [String clr], [String clr2 = 'black']){}

 - named 파라미터 

 > Car(int sts, {String clr = 'black'}){}

 > Car newCar = Car(clr='red', sts:6);

 - named 파라미터는 옵션설정이 기본이고, 필수로 설정하기 위해 @설정 가능. : Flutter 기능(warring)

 > Car({int sts, @requierd String clr = 'black'}){}

 - 생성자 값 지정 간소화

 > Car({this.seat, this.color = 'black'});

 

* 예제코드 - Try Dart in your browser 

Hello World

void main() {
  print('Hello, World!');
}

Functions

// A function declaration.
int timesTwo(int x) {
  return x * 2;
}

// Arrow syntax is shorthand for `{ return expr; }`.
int timesFour(int x) => timesTwo(timesTwo(x));

// Functions are objects.
int runTwice(int x, int Function(int) f) {
  for (var i = 0; i < 2; i++) {
    x = f(x);
  }
  return x;
}

void main() {
  print('4 times two is ${timesTwo(4)}');
  print('4 times four is ${timesFour(4)}');
  print('2 x 2 x 2 is ${runTwice(2, timesTwo)}');
}

Control flow

bool isEven(int x) {
  // An if-else statement.
  if (x % 2 == 0) {
    return true;
  } else {
    return false;
  }
}

List<int> getEvenNumbers(Iterable<int> numbers) {
  var evenNumbers = <int>[];

  // A for-in loop.
  for (var i in numbers) {
    // A single line if statement.
    if (isEven(i)) {
      evenNumbers.add(i);
    }
  }

  return evenNumbers;
}

void main() {
  var numbers = List.generate(10, (i) => i);
  print(getEvenNumbers(numbers));
}

Strings

import 'dart:math' as math;

void main() {
  print('a single quoted string');
  print("a double quoted string");

  // Strings can be combined by placing them adjacent to each other.
  print('cat' 'dog');

  // Triple quotes define a multi-line string.
  print('''triple quoted strings
are for multiple lines''');

  // Dart supports string interpolation.
  final pi = math.pi;
  print('pi is $pi');
  print('tau is ${2 * pi}');
}

Collection literals

// A list literal.
const lostNumbers = [4, 8, 15, 16, 23, 42];

// A map literal.
const nobleGases = {
  'He': 'Helium',
  'Ne': 'Neon',
  'Ar': 'Argon',
};

// A set literal.
const frogs = {
  'Tree',
  'Poison dart',
  'Glass',
};

void main() {
  print(lostNumbers.last);
  print(nobleGases['Ne']);
  print(frogs.difference({'Poison dart'}));
}

Classes

// Abstract classes can't be instantiated.
abstract class Item {
  void use();
}

// Classes can implement other classes.
class Chest<T> implements Item {
  final List<T> contents;

  // Constructors can assign arguments to instance variables using `this`.
  Chest(this.contents);

  @override
  void use() => print('$this has ${contents.length} items.');
}

class Sword implements Item {
  int get damage => 5;

  @override
  void use() => print('$this dealt $damage damage.');
}

// Classes can extend other classes.
class DiamondSword extends Sword {
  @override
  final int damage = 50;
}

void main() {
  // The 'new' keyword is optional.
  var chest = Chest<Item>([
    DiamondSword(),
    Sword(),
  ]);

  chest.use();

  for (final item in chest.contents) {
    item.use();
  }
}

Compute Pi

import 'dart:math' show Random;

void main() async {
  print('Compute π using the Monte Carlo method.');
  await for (final estimate in computePi().take(100)) {
    print('π ≅ $estimate');
  }
}

/// Generates a stream of increasingly accurate estimates of π.
Stream<double> computePi({int batch = 100000}) async* {
  var total = 0; // Inferred to be of type int
  var count = 0;
  while (true) {
    final points = generateRandom().take(batch);
    final inside = points.where((p) => p.isInsideUnitCircle);

    total += batch;
    count += inside.length;
    final ratio = count / total;

    // Area of a circle is A = π⋅r², therefore π = A/r².
    // So, when given random points with x ∈ <0,1>,
    // y ∈ <0,1>, the ratio of those inside a unit circle
    // should approach π / 4. Therefore, the value of π
    // should be:
    yield ratio * 4;
  }
}

Iterable<Point> generateRandom([int? seed]) sync* {
  final random = Random(seed);
  while (true) {
    yield Point(random.nextDouble(), random.nextDouble());
  }
}

class Point {
  final double x;
  final double y;

  const Point(this.x, this.y);

  bool get isInsideUnitCircle => x * x + y * y <= 1;
}

 

코딩파파 영상을 참고하여 플러터 환경을 설치하다가

문제가 생겼다.

 

영상에서는 install 버전으로 가이드를 했지만,

portable 버전으로 설치를 했는데...

그때문인지 환경을 구성하는 과정에서 영상과는 다른 이슈들에 발목을 잡혔다.

 

Flutter. 윈도우 환경설정 (재)도전.

 

그중 설치 당일날에는 Android Studio가 실행이 됐지만, 다음날 부터 실행되지 않는 문제가 생겼다.

 

오류 있는 응용 프로그램 이름: studio64.exe, 버전: 4.2.0.0, 타임스탬프: 0x5d71842b
오류 있는 모듈 이름: studio64.exe, 버전: 4.2.0.0, 타임스탬프: 0x5d71842b
예외 코드: 0x40000015
오류 오프셋: 0x00000000000125fd

 

 

관련 오류가 올라온 커뮤니티 게시글은 있었지만, 해결방법은 보이지 않았다.

https://www.reddit.com/r/androiddev/comments/l3dgeg/android_studio_42_occasionally_doesnt_start/

 

Android Studio 4.2 occasionally doesn't start

Hi all, I'm running Android Studio 4.2 Beta 3 (and previously Beta 2), on a Windows 10 Pro system (Ryzen CPU, 64 GB RAM). Normally, it runs...

www.reddit.com

 

참고. 이벤트뷰어 사용법

https://hkebi.tistory.com/830

 

윈도우 프로그램 실행 했는데 아무것도 안뜰때

윈도우를 사용하다가 보면 간혹 프로그램을 실행을 했는데 에러도 없고 아무것도 않 뜰때가 있습니다. 이럴때는 정말 난감할수가 있는데요. 만약에 프로그램을 실행 했는데 에러도 없고 실행되

hkebi.tistory.com

 

install 버전으로 다시 설치해봐야 겠다.

 

이것저것 해보다가 보안프로그램 설정을 바꾸다 보니 되는것 같다.

 - 사용자 동의 없이 설치된 앱 차단 해제

 - hp 노트북을 사용중인데 'HP Wolf Security' 프로그램의 실시간 감시를 해제

두건 말고도 만진 옵션이 더 있을법 한데 암튼, 실행이 된다.

 

 

prev.

동생이 준 맥으로 플러터 환경설정을 도전했다가

너무 느려서 포기. 작성중...단 했다.

 

자. 노트북도 샀으니 윈도우에서 해보자.

(역시. 코딩파파의 도움으로.)

https://youtu.be/R_TVi_HLb78

 

1. 설치.

 - https://flutter.dev/docs/get-started/install/windows

 

Windows install

How to install on Windows.

flutter.dev

1.1 git for window

 - https://git-scm.com/download/win

 > 난 portable 버전으로 : 64-bit Git for Windows Portable.

 

Git - Downloading Package

Downloading Git Now What? Now that you have downloaded Git, it's time to start using it.

git-scm.com

1.1.1 압축해제 설치

 - PortableGit-2.31.1-64-bit.7z.exe 파일을 실행하여 설치할 경로를 지정하고 압축을 푼다.

 > 대상경로 : D:\dev\bin\PortableGit

1.1.2 환경변수 설정

 - 환경변수 등록

 > GIT_HOME : D:\dev\bin\PortableGit

 - path 추가

 > %GIT_HOME%\bin

C:\Users\jkoog> git --version
D:\dev\bin\PortableGit> .\git-bash.exe

(install 버전 대신 portable을 설치해서 추가 설정이 필요할 수 있다.)

 

1.2 Flutter SDK 설치

 - https://flutter.dev/docs/get-started/install/windows#get-the-flutter-sdk

 

Windows install

How to install on Windows.

flutter.dev

1.2.1 압축해제 설치

 - flutter_windows_2.2.0-stable.zip

 > D:\dev\bin\flutter

1.2.2 환경변수 설정

 - 환경변수 등록

 > FLUTTER_HOME : D:\dev\bin\flutter

 - path 추가

 > %FLUTTER_HOME%\bin

1.2.3 flutter doctor 명령으로 미설정된 환경을 구성한다.

 

1.3 Android 설치

 - https://flutter.dev/docs/get-started/install/windows#android-setup

 

Windows install

How to install on Windows.

flutter.dev

 - https://developer.android.com/studio

 - https://developer.android.com/studio#downloads

 

 

Download Android Studio and SDK tools  |  Android 스튜디오

developer.android.com

1.3.1 압축해제 설치

 - android-studio-ide-202.7351085-windows.zip

 > D:\dev\bin\android-studio

1.3.2 환경변수 설정

 - 환경변수 등록

 > ANDROID_HOME : D:\dev\bin\android-studio

 - path 추가

 > %ANDROID_HOME%\bin

1.3.3 실행오류

 - ‪D:\dev\bin\android-studio\bin\studio.exe

 > 관리자권한으로 실행하라는 글도 있고, 재부팅하라는 글도 있어서.. 재부팅 했지만, 64bit 실행파일은 따로 있었다. ㅋ

 > ‪D:\dev\bin\android-studio\bin\studio64.exe

1.3.4 영상을 따라 설치옵션을 진행

 

1.4 flutter doctor 2번째 설정

 - flutter doctor --android-licenses

 > 라이센스 동의 (y~)

* ANDROID_HOME 환경변수 이슈.

 : 압축해제 설치한 경로를 환경변수로 지정해도 Android Studio (not installed) 로 표시됨

 + C:\Users\jkoog\AppData\Local\Android\Sdk 경로를 발견하여 환경변수 추가

 - 환경변수 등록

 > AND_SDK_HOME : C:\Users\jkoog\AppData\Local\Android\Sdk

 - path 추가

 > %AND_SDK_HOME%\platforms

 > %AND_SDK_HOME%\platform-tools

flutter config --android-studio-dir="D:\dev\bin\android-studio"

* android studio 환경설정에서 삽질을 해서인지 flutter, dart의 플러그인을 설치 안했는데도 flutter doctor에 체크되지 않고 No issues found 라고 나왔다.

(하지만, android studio를 실행시 플러그인이 없어서 프로젝트를 생성하지 못하니 추가는 해줬다.)

뭐지 하는것마다 걸리는 기분..

 - cannot save setting invalid model name must be a valid dart package name

 > 프로젝트 생성하다가 막힌 부분이지만, 추후 다시 진행하니 오류없이 셈플 프로젝트 생성 됨.

* 첫 셈플 프로젝트 생성 완료

.. 역시 그냥되면 이상하지.

생성한 셈플 프로젝트의 디버그 모드를 실행하니 오류메시지가 또 나왔다. 

 - platform-tools 폴더에 adb.exe가 없거나, 환경변수 설정이 제대로 안되어 있을 때 나오는 에러 란다.

 > https://security-nanglam.tistory.com/474

환경설정? 아래 경로에 설치된 Adroid Studio 리소스를 대상으로 설정했으나 오류발생

C:\Users\jkoog\AppData\Local\Android\Sdk\platform-tools

* path에 아래 경로 추가설정

Sdk\emulator

Sdk\tools

메시지가 바뀌었다. 앞서 추가한 path가 유효했나보다.

* Unable to locate adb 오류는 sdk 설정이 누락되었다는 것 같다.

 - https://doodong.me/it/error-unable-to-locate-adb-avd-manager/

 

Error : Unable to locate adb - AVD Manager - 두동근

임베디드, 리눅스 서버 운영·관리, 웹·앱 프로그래밍 업무 가능한 성장형 인재

doodong.me

* 에러메시지가 해결되지 않았다.

 - android studio 설정화면에서 platform-tools를 설치하라는데, 나는 이미 실치가 되어 있어서, 체크해제를 하니 delete가 되어 다시 설치를 해봤다. 

* platform-tools를 재설치 한 뒤, 다시한번 NO SDK 로 돌아가서 설정을 다시 해주니. 에러메시지가 바뀌었다.

 - 참, 중간에 sdk 파일 재구성 도 해줬다. (혹시..?)

 > https://reasley.com/?p=3565 

 

[FlutterError] 안드로이드 스튜디오에서 adb를 찾을 수 없을 때 – Unable to locate adb

뤼즌의 IT 블로그

reasley.com

The emulator process for AVD Pixel_3a_API_30_x86 was killed.

* BIOS에서 가상화 모드를 변경해보라는..(안해봄)

https://mmol.tistory.com/entry/%EB%AA%A8%EB%93%A0-%ED%95%B4%EA%B2%B0%EB%B2%95-The-emulator-process-for-AVD-Pixel4API30-was-killed-1

 

모든 해결법! The emulator process for AVD Pixel_4_API_30 was killed -1

정말 이거 고친다고 개고생했습니다.. 이상하게 뭔 보안 문제인지 회사 컴에는 안드로이드 에뮬 실행이 안되더군요 그래서 3일간 인터넷을 뒤졌는데 해결하지 못했다가 갑자기 어느 웹사이트에

mmol.tistory.com

 

* 윈도우 기능에서 가상 머신 플랫폼 기능을 켜보라는...

https://mmol.tistory.com/entry/The-emulator-process-for-AVD-Pixel4API30-was-killed-2

 

The emulator process for AVD Pixel_4_API_30 was killed -2

The emulator process for AVD Pixel_4_API_30 was killed -2에 대한 두 번째 글입니다! 1편에서는 단순히 컴퓨터 CPU의 가상화 기능을 ON 하는 기능을 알아봤습니다. 1편 블로그 - 컴퓨터 CPU의 가상화 기능 ON하..

mmol.tistory.com

! 됐다.

 

 

아우. 힘들어. 역시, 그냥 되는게 없네.

 

[이후 관련 이슈]

Android Studio 4.2 Portable 설치 이슈 - 실행이 안된다.

'install' 카테고리의 다른 글

윈도우10 셀룰러 불가능시 APN 설정  (0) 2021.05.19
eclipse openJDK 설정 설치bit 이슈  (0) 2021.04.30
flutter. iMac install (작성중...단.)  (0) 2021.04.30

+ Recent posts